From def08a206fd885557381309604b7bbd776cdc03c Mon Sep 17 00:00:00 2001 From: "Erik M. Bray" Date: Thu, 9 Apr 2015 19:09:24 -0400 Subject: [PATCH 001/297] Fix documentation of descriptor classes that have a custom metaclass (i.e. a subclass of type). This avoids using string comparisons to do type checks, except in the case of the fix for #1155, since in Python 3 there really seems to be no way to export the instancemethod type, short of using ctypes. --- sphinx/ext/autodoc.py | 14 +++++++++++--- tests/test_autodoc.py | 15 +++++++++++++-- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py index ff6a30ecc..1fab725d7 100644 --- a/sphinx/ext/autodoc.py +++ b/sphinx/ext/autodoc.py @@ -34,6 +34,11 @@ from sphinx.util.inspect import getargspec, isdescriptor, safe_getmembers, \ from sphinx.util.docstrings import prepare_docstring +# This type isn't exposed directly in any modules, but can be found +# here in most Python versions +MethodDescriptorType = type(type.__subclasses__) + + #: extended signature RE: with explicit module name separated by :: py_ext_sig_re = re.compile( r'''^ ([\w.]+::)? # explicit module name @@ -1309,10 +1314,13 @@ class AttributeDocumenter(DocstringStripSignatureMixin, ClassLevelDocumenter): @classmethod def can_document_member(cls, member, membername, isattr, parent): + non_attr_types = cls.method_types + (type, MethodDescriptorType) isdatadesc = isdescriptor(member) and not \ - isinstance(member, cls.method_types) and not \ - type(member).__name__ in ("type", "method_descriptor", - "instancemethod") + isinstance(member, non_attr_types) and not \ + type(member).__name__ == "instancemethod" + # That last condition addresses an obscure case of C-defined + # methods using a deprecated type in Python 3, that is not otherwise + # exported anywhere by Python return isdatadesc or (not isinstance(parent, ModuleDocumenter) and not inspect.isroutine(member) and not isinstance(member, class_types)) diff --git a/tests/test_autodoc.py b/tests/test_autodoc.py index 2d61edabd..a5d68b271 100644 --- a/tests/test_autodoc.py +++ b/tests/test_autodoc.py @@ -14,7 +14,7 @@ from util import TestApp, Struct, raises from nose.tools import with_setup -from six import StringIO +from six import StringIO, add_metaclass from docutils.statemachine import ViewList from sphinx.ext.autodoc import AutoDirective, add_documenter, \ @@ -784,11 +784,13 @@ def test_generate(): del directive.env.ref_context['py:module'] # test descriptor class documentation - options.members = ['CustomDataDescriptor'] + options.members = ['CustomDataDescriptor', 'CustomDataDescriptor2'] assert_result_contains('.. py:class:: CustomDataDescriptor(doc)', 'module', 'test_autodoc') assert_result_contains(' .. py:method:: CustomDataDescriptor.meth()', 'module', 'test_autodoc') + assert_result_contains('.. py:class:: CustomDataDescriptor2(doc)', + 'module', 'test_autodoc') # --- generate fodder ------------ @@ -818,6 +820,15 @@ class CustomDataDescriptor(object): """Function.""" return "The Answer" + +class CustomDataDescriptorMeta(type): + """Descriptor metaclass docstring.""" + +@add_metaclass(CustomDataDescriptorMeta) +class CustomDataDescriptor2(CustomDataDescriptor): + """Descriptor class with custom metaclass docstring.""" + + def _funky_classmethod(name, b, c, d, docstring=None): """Generates a classmethod for a class from a template by filling out some arguments.""" From 0beabaf4cfbbe6963fd7f5d5d9fe043d2e3163a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Gr=C3=B6nholm?= Date: Sat, 9 Apr 2016 17:35:32 +0300 Subject: [PATCH 002/297] Fix unwanted * between varargs and keyword only args The * parameter must only be present when a holder for positional variable arguments is not present. --- sphinx/ext/autodoc.py | 4 +++- tests/test_autodoc.py | 11 +++++++---- tests/typing_test_data.py | 10 +++++++--- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py index 7dc89d39a..cea341942 100644 --- a/sphinx/ext/autodoc.py +++ b/sphinx/ext/autodoc.py @@ -350,7 +350,9 @@ def formatargspec(function, args, varargs=None, varkw=None, defaults=None, formatted.append('*' + format_arg_with_annotation(varargs)) if kwonlyargs: - formatted.append('*') + if not varargs: + formatted.append('*') + for kwarg in kwonlyargs: arg_fd = StringIO() arg_fd.write(format_arg_with_annotation(kwarg)) diff --git a/tests/test_autodoc.py b/tests/test_autodoc.py index 183484846..259b35297 100644 --- a/tests/test_autodoc.py +++ b/tests/test_autodoc.py @@ -1010,7 +1010,7 @@ def test_type_hints(): from sphinx.util.inspect import getargspec try: - from typing_test_data import f0, f1, f2, f3, f4, f5, f6, f7, f8 + from typing_test_data import f0, f1, f2, f3, f4, f5, f6, f7, f8, f9 except (ImportError, SyntaxError): raise SkipTest('Cannot import Python code with function annotations') @@ -1037,12 +1037,15 @@ def test_type_hints(): # Keyword-only arguments verify_arg_spec(f5, '(x: int, *, y: str, z: str) -> None') + # Keyword-only arguments with varargs + verify_arg_spec(f6, '(x: int, *args, y: str, z: str) -> None') + # Space around '=' for defaults - verify_arg_spec(f6, '(x: int = None, y: dict = {}) -> None') + verify_arg_spec(f7, '(x: int = None, y: dict = {}) -> None') # Callable types - verify_arg_spec(f7, '(x: typing.Callable[[int, str], int]) -> None') + verify_arg_spec(f8, '(x: typing.Callable[[int, str], int]) -> None') # Tuple types - verify_arg_spec(f8, '(x: typing.Tuple[int, str],' + verify_arg_spec(f9, '(x: typing.Tuple[int, str],' ' y: typing.Tuple[int, ...]) -> None') diff --git a/tests/typing_test_data.py b/tests/typing_test_data.py index 74a906ad1..3b6b603c3 100644 --- a/tests/typing_test_data.py +++ b/tests/typing_test_data.py @@ -35,14 +35,18 @@ def f5(x: int, *, y: str, z: str) -> None: pass -def f6(x: int = None, y: dict = {}) -> None: +def f6(x: int, *args, y: str, z: str) -> None: pass -def f7(x: Callable[[int, str], int]) -> None: +def f7(x: int = None, y: dict = {}) -> None: + pass + + +def f8(x: Callable[[int, str], int]) -> None: # See https://github.com/ambv/typehinting/issues/149 for Callable[..., int] pass -def f8(x: Tuple[int, str], y: Tuple[int, ...]) -> None: +def f9(x: Tuple[int, str], y: Tuple[int, ...]) -> None: pass From ca49c4c207fcec41602ed978803a99315eaed279 Mon Sep 17 00:00:00 2001 From: "John L. Villalovos" Date: Wed, 4 May 2016 16:11:57 -0700 Subject: [PATCH 003/297] Add a 'reverse' flag option to 'toctree' I'm not sure the best way to do the unit tests. A little confused. So help would be appreciated :) Add the ability to reverse the list of entries when using 'toctree'. This is likely most useful for people using the 'glob' flag option with 'toctree' Change-Id: I1852479106c3d9c8253fd1625ced0077af0304e3 --- doc/markup/toctree.rst | 10 ++++++++++ sphinx/directives/other.py | 3 +++ 2 files changed, 13 insertions(+) diff --git a/doc/markup/toctree.rst b/doc/markup/toctree.rst index b4c7105fd..81f99504e 100644 --- a/doc/markup/toctree.rst +++ b/doc/markup/toctree.rst @@ -123,6 +123,16 @@ tables of contents. The ``toctree`` directive is the central element. toctree directive. This is useful if you want to generate a "sitemap" from the toctree. + You can use the ``reverse`` flag option to reverse the order of the entries + in the list. This can be useful when using the ``glob`` flag option to + reverse the ordering of the files. Example:: + + .. toctree:: + :glob: + :reverse: + + recipe/* + You can also give a "hidden" option to the directive, like this:: .. toctree:: diff --git a/sphinx/directives/other.py b/sphinx/directives/other.py index 51294570c..e518729aa 100644 --- a/sphinx/directives/other.py +++ b/sphinx/directives/other.py @@ -46,6 +46,7 @@ class TocTree(Directive): 'includehidden': directives.flag, 'numbered': int_or_nothing, 'titlesonly': directives.flag, + 'reverse': directives.flag, } def run(self): @@ -109,6 +110,8 @@ class TocTree(Directive): subnode = addnodes.toctree() subnode['parent'] = env.docname # entries contains all entries (self references, external links etc.) + if 'reverse' in self.options: + entries.reverse() subnode['entries'] = entries # includefiles only entries that are documents subnode['includefiles'] = includefiles From 560b5725c913c06731de3ea57d660488fba5faf6 Mon Sep 17 00:00:00 2001 From: Ryan Hardin Date: Wed, 10 Aug 2016 10:49:00 -0400 Subject: [PATCH 004/297] Added :start-at: and :end-at: parameters for literalinclude This feature is discussed as part of issue #625. --- sphinx/directives/code.py | 36 +++++++++++++++---- .../test-directive-code/lineno_match.rst | 6 ++++ tests/test_directive_code.py | 7 ++++ 3 files changed, 43 insertions(+), 6 deletions(-) diff --git a/sphinx/directives/code.py b/sphinx/directives/code.py index f88b30987..cf45820c4 100644 --- a/sphinx/directives/code.py +++ b/sphinx/directives/code.py @@ -163,6 +163,8 @@ class LiteralInclude(Directive): 'lines': directives.unchanged_required, 'start-after': directives.unchanged_required, 'end-before': directives.unchanged_required, + 'start-at': directives.unchanged_required, + 'end-at': directives.unchanged_required, 'prepend': directives.unchanged_required, 'append': directives.unchanged_required, 'emphasize-lines': directives.unchanged_required, @@ -213,6 +215,16 @@ class LiteralInclude(Directive): 'Cannot use "lineno-match" and "append" or "prepend"', line=self.lineno)] + if 'start-after' in self.options and 'start-at' in self.options: + return [document.reporter.warning( + 'Cannot use both "start-after" and "start-at" options', + line=self.lineno)] + + if 'end-before' in self.options and 'end-at' in self.options: + return [document.reporter.warning( + 'Cannot use both "end-before" and "end-at" options', + line=self.lineno)] + encoding = self.options.get('encoding', env.config.source_encoding) codec_info = codecs.lookup(encoding) @@ -285,17 +297,29 @@ class LiteralInclude(Directive): else: hl_lines = None - startafter = self.options.get('start-after') - endbefore = self.options.get('end-before') - if startafter is not None or endbefore is not None: - use = not startafter + start_str = self.options.get('start-after') + start_inclusive = False + if self.options.get('start-at') is not None: + start_str = self.options.get('start-at') + start_inclusive = True + end_str = self.options.get('end-before') + end_inclusive = False + if self.options.get('end-at') is not None: + end_str = self.options.get('end-at') + end_inclusive = True + if start_str is not None or end_str is not None: + use = not start_str res = [] for line_number, line in enumerate(lines): - if not use and startafter and startafter in line: + if not use and start_str and start_str in line: if 'lineno-match' in self.options: linenostart += line_number + 1 use = True - elif use and endbefore and endbefore in line: + if start_inclusive: + res.append(line) + elif use and end_str and end_str in line: + if end_inclusive: + res.append(line) break elif use: res.append(line) diff --git a/tests/roots/test-directive-code/lineno_match.rst b/tests/roots/test-directive-code/lineno_match.rst index 1015c8df7..42987609a 100644 --- a/tests/roots/test-directive-code/lineno_match.rst +++ b/tests/roots/test-directive-code/lineno_match.rst @@ -16,5 +16,11 @@ Literal Includes with Line Numbers Matching :start-after: pass :lineno-match: +.. literalinclude:: literal.inc + :language: python + :start-at: class Bar: + :end-at: pass + :lineno-match: + .. literalinclude:: empty.inc :lineno-match: diff --git a/tests/test_directive_code.py b/tests/test_directive_code.py index 175e1881e..d053a69a5 100644 --- a/tests/test_directive_code.py +++ b/tests/test_directive_code.py @@ -222,6 +222,13 @@ def test_literal_include_lineno_match(app, status, warning): '14') assert start_after in html + start_at_end_at = ( + '
'
+        ' 9\n'
+        '10\n'
+        '11
') + assert start_at_end_at in html + @with_app('latex', testroot='directive-code') def test_literalinclude_file_whole_of_emptyline(app, status, warning): From 9358ea239b9c4625793c09cf7759047b2fda8ac4 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sun, 18 Sep 2016 17:14:55 +0900 Subject: [PATCH 005/297] Add testcase for toctree --- tests/roots/test-toctree/bar.rst | 2 + tests/roots/test-toctree/baz.rst | 2 + tests/roots/test-toctree/conf.py | 7 + tests/roots/test-toctree/foo.rst | 15 ++ tests/roots/test-toctree/index.rst | 54 +++++ tests/roots/test-toctree/quux.rst | 2 + tests/roots/test-toctree/qux.rst | 1 + tests/roots/test-toctree/tocdepth.rst | 15 ++ tests/test_environment_toctree.py | 317 ++++++++++++++++++++++++++ tests/util.py | 29 ++- 10 files changed, 439 insertions(+), 5 deletions(-) create mode 100644 tests/roots/test-toctree/bar.rst create mode 100644 tests/roots/test-toctree/baz.rst create mode 100644 tests/roots/test-toctree/conf.py create mode 100644 tests/roots/test-toctree/foo.rst create mode 100644 tests/roots/test-toctree/index.rst create mode 100644 tests/roots/test-toctree/quux.rst create mode 100644 tests/roots/test-toctree/qux.rst create mode 100644 tests/roots/test-toctree/tocdepth.rst create mode 100644 tests/test_environment_toctree.py diff --git a/tests/roots/test-toctree/bar.rst b/tests/roots/test-toctree/bar.rst new file mode 100644 index 000000000..1cccd3cb7 --- /dev/null +++ b/tests/roots/test-toctree/bar.rst @@ -0,0 +1,2 @@ +bar +=== diff --git a/tests/roots/test-toctree/baz.rst b/tests/roots/test-toctree/baz.rst new file mode 100644 index 000000000..52e2e72ac --- /dev/null +++ b/tests/roots/test-toctree/baz.rst @@ -0,0 +1,2 @@ +baz +=== diff --git a/tests/roots/test-toctree/conf.py b/tests/roots/test-toctree/conf.py new file mode 100644 index 000000000..31e7a6ed4 --- /dev/null +++ b/tests/roots/test-toctree/conf.py @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- + +master_doc = 'index' + +latex_documents = [ + (master_doc, 'test.tex', 'The basic Sphinx documentation for testing', 'Sphinx', 'report') +] diff --git a/tests/roots/test-toctree/foo.rst b/tests/roots/test-toctree/foo.rst new file mode 100644 index 000000000..49f4d4b97 --- /dev/null +++ b/tests/roots/test-toctree/foo.rst @@ -0,0 +1,15 @@ +foo +=== + +.. toctree:: + + quux + +foo.1 +----- + +foo.1-1 +^^^^^^^ + +foo.2 +----- diff --git a/tests/roots/test-toctree/index.rst b/tests/roots/test-toctree/index.rst new file mode 100644 index 000000000..dc7fd2e4a --- /dev/null +++ b/tests/roots/test-toctree/index.rst @@ -0,0 +1,54 @@ +.. Sphinx Tests documentation master file, created by sphinx-quickstart on Wed Jun 4 23:49:58 2008. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to Sphinx Tests's documentation! +======================================== + +Contents: + +.. toctree:: + :maxdepth: 2 + :numbered: + :caption: Table of Contents + :name: mastertoc + + foo + bar + http://sphinx-doc.org/ + +.. only:: html + + Section for HTML + ---------------- + + .. toctree:: + + baz + +---------- +subsection +---------- + +subsubsection +------------- + +Test for issue #1157 +==================== + +This used to crash: + +.. toctree:: + +.. toctree:: + :hidden: + + Latest reference + Python + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/tests/roots/test-toctree/quux.rst b/tests/roots/test-toctree/quux.rst new file mode 100644 index 000000000..07dd0a0a3 --- /dev/null +++ b/tests/roots/test-toctree/quux.rst @@ -0,0 +1,2 @@ +quux +==== diff --git a/tests/roots/test-toctree/qux.rst b/tests/roots/test-toctree/qux.rst new file mode 100644 index 000000000..26176b947 --- /dev/null +++ b/tests/roots/test-toctree/qux.rst @@ -0,0 +1 @@ +qux.rst has no section title diff --git a/tests/roots/test-toctree/tocdepth.rst b/tests/roots/test-toctree/tocdepth.rst new file mode 100644 index 000000000..1069b4cb4 --- /dev/null +++ b/tests/roots/test-toctree/tocdepth.rst @@ -0,0 +1,15 @@ +:tocdepth: 2 + +======= +level 1 +======= + +level 2 +======= + +------- +level 3 +------- + +level 4 +------- diff --git a/tests/test_environment_toctree.py b/tests/test_environment_toctree.py new file mode 100644 index 000000000..fe10da660 --- /dev/null +++ b/tests/test_environment_toctree.py @@ -0,0 +1,317 @@ +# -*- coding: utf-8 -*- +""" + test_environment_toctree + ~~~~~~~~~~~~~~~~~~~~~~~~ + + Test the sphinx.environment.managers.toctree. + + :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from docutils import nodes +from docutils.nodes import bullet_list, list_item, caption, comment, reference +from sphinx import addnodes +from sphinx.addnodes import compact_paragraph, only +from sphinx.builders.html import StandaloneHTMLBuilder + +from util import with_app, gen_with_app, assert_node + + +@gen_with_app('xml', testroot='toctree') +def test_basic(app, status, warning): + app.build() + yield _test_process_doc, app + yield _test_get_toc_for, app + yield _test_get_toc_for_only, app + yield _test_get_toc_for_tocdepth, app + yield _test_get_toctree_for, app + yield _test_get_toctree_for_collapse, app + yield _test_get_toctree_for_maxdepth, app + yield _test_get_toctree_for_includehidden, app + + +def _test_process_doc(app): + # tocs + toctree = app.env.tocs['index'] + assert_node(toctree, + [bullet_list, ([list_item, (compact_paragraph, # [0][0] + [bullet_list, (addnodes.toctree, # [0][1][0] + only, # [0][1][1] + list_item)])], # [0][1][2] + [list_item, (compact_paragraph, # [1][0] + [bullet_list, (addnodes.toctree, # [1][1][0] + addnodes.toctree)])], # [1][1][1] + list_item)]) + + assert_node(toctree[0][0], + [compact_paragraph, reference, "Welcome to Sphinx Tests's documentation!"]) + assert_node(toctree[0][0][0], reference, anchorname='') + assert_node(toctree[0][1][0], addnodes.toctree, + caption="Table of Contents", glob=False, hidden=False, + titlesonly=False, maxdepth=2, numbered=999, + entries=[(None, 'foo'), (None, 'bar'), (None, 'http://sphinx-doc.org/')], + includefiles=['foo', 'bar']) + + # only branch + assert_node(toctree[0][1][1], addnodes.only, expr="html") + assert_node(toctree[0][1][1], + [only, list_item, ([compact_paragraph, reference, "Section for HTML"], + [bullet_list, addnodes.toctree])]) + assert_node(toctree[0][1][1][0][0][0], reference, anchorname='#section-for-html') + assert_node(toctree[0][1][1][0][1][0], addnodes.toctree, + caption=None, glob=False, hidden=False, entries=[(None, 'baz')], + includefiles=['baz'], titlesonly=False, maxdepth=-1, numbered=0) + assert_node(toctree[0][1][2], + ([compact_paragraph, reference, "subsection"], + [bullet_list, list_item, compact_paragraph, reference, "subsubsection"])) + + assert_node(toctree[1][0], + [compact_paragraph, reference, "Test for issue #1157"]) + assert_node(toctree[1][0][0], reference, anchorname='#test-for-issue-1157') + assert_node(toctree[1][1][0], addnodes.toctree, + caption=None, entries=[], glob=False, hidden=False, + titlesonly=False, maxdepth=-1, numbered=0) + assert_node(toctree[1][1][1], addnodes.toctree, + caption=None, glob=False, hidden=True, + titlesonly=False, maxdepth=-1, numbered=0, + entries=[('Latest reference', 'http://sphinx-doc.org/latest/'), + ('Python', 'http://python.org/')]) + + assert_node(toctree[2][0], + [compact_paragraph, reference, "Indices and tables"]) + + # other collections + assert app.env.toc_num_entries['index'] == 6 + assert app.env.toctree_includes['index'] == ['foo', 'bar', 'baz'] + assert app.env.files_to_rebuild['foo'] == set(['index']) + assert app.env.files_to_rebuild['bar'] == set(['index']) + assert app.env.files_to_rebuild['baz'] == set(['index']) + assert app.env.glob_toctrees == set() + assert app.env.numbered_toctrees == set(['index']) + + # qux has no section title + assert len(app.env.tocs['qux']) == 0 + assert_node(app.env.tocs['qux'], nodes.bullet_list) + assert app.env.toc_num_entries['qux'] == 0 + assert 'qux' not in app.env.toctree_includes + + +@with_app('dummy', testroot='toctree-glob') +def test_glob(app, status, warning): + includefiles = ['foo', 'bar/index', 'bar/bar_1', 'bar/bar_2', + 'bar/bar_3', 'baz', 'qux/index'] + + app.build() + + # tocs + toctree = app.env.tocs['index'] + assert_node(toctree, + [bullet_list, list_item, (compact_paragraph, # [0][0] + [bullet_list, addnodes.toctree])]) # [0][1][0] + + assert_node(toctree[0][0], + [compact_paragraph, reference, "test-toctree-glob"]) + assert_node(toctree[0][1][0], addnodes.toctree, caption=None, + glob=True, hidden=False, titlesonly=False, + maxdepth=-1, numbered=0, includefiles=includefiles, + entries=[(None, 'foo'), (None, 'bar/index'), (None, 'bar/bar_1'), + (None, 'bar/bar_2'), (None, 'bar/bar_3'), (None, 'baz'), + (None, 'qux/index')]) + + # other collections + assert app.env.toc_num_entries['index'] == 1 + assert app.env.toctree_includes['index'] == includefiles + for file in includefiles: + assert 'index' in app.env.files_to_rebuild[file] + assert 'index' in app.env.glob_toctrees + assert app.env.numbered_toctrees == set() + + +def _test_get_toc_for(app): + toctree = app.env.get_toc_for('index', app.builder) + + assert_node(toctree, + [bullet_list, ([list_item, (compact_paragraph, # [0][0] + [bullet_list, (addnodes.toctree, # [0][1][0] + comment, # [0][1][1] + list_item)])], # [0][1][2] + [list_item, (compact_paragraph, # [1][0] + [bullet_list, (addnodes.toctree, + addnodes.toctree)])], + [list_item, compact_paragraph])]) # [2][0] + assert_node(toctree[0][0], + [compact_paragraph, reference, "Welcome to Sphinx Tests's documentation!"]) + assert_node(toctree[0][1][2], + ([compact_paragraph, reference, "subsection"], + [bullet_list, list_item, compact_paragraph, reference, "subsubsection"])) + assert_node(toctree[1][0], + [compact_paragraph, reference, "Test for issue #1157"]) + assert_node(toctree[2][0], + [compact_paragraph, reference, "Indices and tables"]) + + +def _test_get_toc_for_only(app): + builder = StandaloneHTMLBuilder(app) + toctree = app.env.get_toc_for('index', builder) + + assert_node(toctree, + [bullet_list, ([list_item, (compact_paragraph, # [0][0] + [bullet_list, (addnodes.toctree, # [0][1][0] + list_item, # [0][1][1] + list_item)])], # [0][1][2] + [list_item, (compact_paragraph, # [1][0] + [bullet_list, (addnodes.toctree, + addnodes.toctree)])], + [list_item, compact_paragraph])]) # [2][0] + assert_node(toctree[0][0], + [compact_paragraph, reference, "Welcome to Sphinx Tests's documentation!"]) + assert_node(toctree[0][1][1], + ([compact_paragraph, reference, "Section for HTML"], + [bullet_list, addnodes.toctree])) + assert_node(toctree[0][1][2], + ([compact_paragraph, reference, "subsection"], + [bullet_list, list_item, compact_paragraph, reference, "subsubsection"])) + assert_node(toctree[1][0], + [compact_paragraph, reference, "Test for issue #1157"]) + assert_node(toctree[2][0], + [compact_paragraph, reference, "Indices and tables"]) + + +def _test_get_toc_for_tocdepth(app): + toctree = app.env.get_toc_for('tocdepth', app.builder) + + assert_node(toctree, + [bullet_list, list_item, (compact_paragraph, # [0][0] + bullet_list)]) # [0][1] + assert_node(toctree[0][0], + [compact_paragraph, reference, "level 1"]) + assert_node(toctree[0][1], + [bullet_list, list_item, compact_paragraph, reference, "level 2"]) + + +def _test_get_toctree_for(app): + toctree = app.env.get_toctree_for('index', app.builder, collapse=False) + assert_node(toctree, + [compact_paragraph, ([caption, "Table of Contents"], + bullet_list, + bullet_list, + bullet_list)]) + + assert_node(toctree[1], + ([list_item, ([compact_paragraph, reference, "foo"], + bullet_list)], + [list_item, compact_paragraph, reference, "bar"], + [list_item, compact_paragraph, reference, "http://sphinx-doc.org/"])) + assert_node(toctree[1][0][1], + ([list_item, compact_paragraph, reference, "quux"], + [list_item, compact_paragraph, reference, "foo.1"], + [list_item, compact_paragraph, reference, "foo.2"])) + + assert_node(toctree[1][0][0][0], reference, refuri="foo", secnumber=(1,)) + assert_node(toctree[1][0][1][0][0][0], reference, refuri="quux", secnumber=(1, 1)) + assert_node(toctree[1][0][1][1][0][0], reference, refuri="foo#foo-1", secnumber=(1, 2)) + assert_node(toctree[1][0][1][2][0][0], reference, refuri="foo#foo-2", secnumber=(1, 3)) + assert_node(toctree[1][1][0][0], reference, refuri="bar", secnumber=(2,)) + assert_node(toctree[1][2][0][0], reference, refuri="http://sphinx-doc.org/") + + assert_node(toctree[2], + [bullet_list, list_item, compact_paragraph, reference, "baz"]) + assert_node(toctree[3], + ([list_item, compact_paragraph, reference, "Latest reference"], + [list_item, compact_paragraph, reference, "Python"])) + assert_node(toctree[3][0][0][0], reference, refuri="http://sphinx-doc.org/latest/") + assert_node(toctree[3][1][0][0], reference, refuri="http://python.org/") + + +def _test_get_toctree_for_collapse(app): + toctree = app.env.get_toctree_for('index', app.builder, collapse=True) + assert_node(toctree, + [compact_paragraph, ([caption, "Table of Contents"], + bullet_list, + bullet_list, + bullet_list)]) + + assert_node(toctree[1], + ([list_item, compact_paragraph, reference, "foo"], + [list_item, compact_paragraph, reference, "bar"], + [list_item, compact_paragraph, reference, "http://sphinx-doc.org/"])) + assert_node(toctree[1][0][0][0], reference, refuri="foo", secnumber=(1,)) + assert_node(toctree[1][1][0][0], reference, refuri="bar", secnumber=(2,)) + assert_node(toctree[1][2][0][0], reference, refuri="http://sphinx-doc.org/") + + assert_node(toctree[2], + [bullet_list, list_item, compact_paragraph, reference, "baz"]) + assert_node(toctree[3], + ([list_item, compact_paragraph, reference, "Latest reference"], + [list_item, compact_paragraph, reference, "Python"])) + assert_node(toctree[3][0][0][0], reference, refuri="http://sphinx-doc.org/latest/") + assert_node(toctree[3][1][0][0], reference, refuri="http://python.org/") + + +def _test_get_toctree_for_maxdepth(app): + toctree = app.env.get_toctree_for('index', app.builder, collapse=False, maxdepth=3) + assert_node(toctree, + [compact_paragraph, ([caption, "Table of Contents"], + bullet_list, + bullet_list, + bullet_list)]) + + assert_node(toctree[1], + ([list_item, ([compact_paragraph, reference, "foo"], + bullet_list)], + [list_item, compact_paragraph, reference, "bar"], + [list_item, compact_paragraph, reference, "http://sphinx-doc.org/"])) + assert_node(toctree[1][0][1], + ([list_item, compact_paragraph, reference, "quux"], + [list_item, ([compact_paragraph, reference, "foo.1"], + bullet_list)], + [list_item, compact_paragraph, reference, "foo.2"])) + assert_node(toctree[1][0][1][1][1], + [bullet_list, list_item, compact_paragraph, reference, "foo.1-1"]) + + assert_node(toctree[1][0][0][0], reference, refuri="foo", secnumber=(1,)) + assert_node(toctree[1][0][1][0][0][0], reference, refuri="quux", secnumber=(1, 1)) + assert_node(toctree[1][0][1][1][0][0], reference, refuri="foo#foo-1", secnumber=(1, 2)) + assert_node(toctree[1][0][1][1][1][0][0][0], + reference, refuri="foo#foo-1-1", secnumber=(1, 2, 1)) + assert_node(toctree[1][0][1][2][0][0], reference, refuri="foo#foo-2", secnumber=(1, 3)) + assert_node(toctree[1][1][0][0], reference, refuri="bar", secnumber=(2,)) + assert_node(toctree[1][2][0][0], reference, refuri="http://sphinx-doc.org/") + + assert_node(toctree[2], + [bullet_list, list_item, compact_paragraph, reference, "baz"]) + assert_node(toctree[3], + ([list_item, compact_paragraph, reference, "Latest reference"], + [list_item, compact_paragraph, reference, "Python"])) + assert_node(toctree[3][0][0][0], reference, refuri="http://sphinx-doc.org/latest/") + assert_node(toctree[3][1][0][0], reference, refuri="http://python.org/") + + +def _test_get_toctree_for_includehidden(app): + toctree = app.env.get_toctree_for('index', app.builder, collapse=False, + includehidden=False) + assert_node(toctree, + [compact_paragraph, ([caption, "Table of Contents"], + bullet_list, + bullet_list)]) + + assert_node(toctree[1], + ([list_item, ([compact_paragraph, reference, "foo"], + bullet_list)], + [list_item, compact_paragraph, reference, "bar"], + [list_item, compact_paragraph, reference, "http://sphinx-doc.org/"])) + assert_node(toctree[1][0][1], + ([list_item, compact_paragraph, reference, "quux"], + [list_item, compact_paragraph, reference, "foo.1"], + [list_item, compact_paragraph, reference, "foo.2"])) + + assert_node(toctree[1][0][0][0], reference, refuri="foo", secnumber=(1,)) + assert_node(toctree[1][0][1][0][0][0], reference, refuri="quux", secnumber=(1, 1)) + assert_node(toctree[1][0][1][1][0][0], reference, refuri="foo#foo-1", secnumber=(1, 2)) + assert_node(toctree[1][0][1][2][0][0], reference, refuri="foo#foo-2", secnumber=(1, 3)) + assert_node(toctree[1][1][0][0], reference, refuri="bar", secnumber=(2,)) + assert_node(toctree[1][2][0][0], reference, refuri="http://sphinx-doc.org/") + + assert_node(toctree[2], + [bullet_list, list_item, compact_paragraph, reference, "baz"]) diff --git a/tests/util.py b/tests/util.py index 27b41bc15..a14bee838 100644 --- a/tests/util.py +++ b/tests/util.py @@ -13,7 +13,7 @@ import sys import tempfile from functools import wraps -from six import StringIO +from six import StringIO, string_types from nose import tools, SkipTest @@ -94,14 +94,33 @@ def assert_startswith(thing, prefix): assert False, '%r does not start with %r' % (thing, prefix) -def assert_node(node, cls=None, **kwargs): +def assert_node(node, cls=None, xpath="", **kwargs): if cls: - assert isinstance(node, cls), '%r is not subclass of %r' % (node, cls) + if isinstance(cls, list): + assert_node(node, cls[0], xpath=xpath, **kwargs) + if cls[1:]: + if isinstance(cls[1], tuple): + assert_node(node, cls[1], xpath=xpath, **kwargs) + else: + assert len(node) == 1, \ + 'The node%s has %d child nodes, not one' % (xpath, len(node)) + assert_node(node[0], cls[1:], xpath=xpath + "[0]", **kwargs) + elif isinstance(cls, tuple): + assert len(node) == len(cls), \ + 'The node%s has %d child nodes, not %r' % (xpath, len(node), len(cls)) + for i, nodecls in enumerate(cls): + path = xpath + "[%d]" % i + assert_node(node[i], nodecls, xpath=path, **kwargs) + elif isinstance(cls, string_types): + assert node == cls, 'The node %r is not %r: %r' % (xpath, cls, node) + else: + assert isinstance(node, cls), \ + 'The node%s is not subclass of %r: %r' % (xpath, cls, node) for key, value in kwargs.items(): - assert key in node, '%r does not have %r attribute' % (node, key) + assert key in node, 'The node%s does not have %r attribute: %r' % (xpath, key, node) assert node[key] == value, \ - '%r[%s]: %r does not equals %r' % (node, key, node[key], value) + 'The node%s[%s] is not %r: %r' % (xpath, key, value, node[key]) try: From ec934d476a3fb514fe384dfea94980ed44b6674f Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sat, 1 Oct 2016 00:17:19 +0900 Subject: [PATCH 006/297] Fix #2983: Rename ``epub3_description`` and ``epub3_contributor`` to ``epub_description`` and ``epub_contributor``. --- CHANGES | 3 +++ doc/conf.py | 2 +- doc/config.rst | 16 +++++++++----- sphinx/builders/epub3.py | 46 ++++++++++++++++++++++++---------------- 4 files changed, 43 insertions(+), 24 deletions(-) diff --git a/CHANGES b/CHANGES index 365cb7be7..9c5c5ad3c 100644 --- a/CHANGES +++ b/CHANGES @@ -4,6 +4,9 @@ Release 1.5 alpha2 (in development) Incompatible changes -------------------- +* #2983: Rename ``epub3_description`` and ``epub3_contributor`` to + ``epub_description`` and ``epub_contributor``. + Features added -------------- diff --git a/doc/conf.py b/doc/conf.py index 269b67275..764c52062 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -48,7 +48,7 @@ epub_max_image_width = 0 epub_show_urls = 'inline' epub_use_index = False epub_guide = (('toc', 'contents.xhtml', u'Table of Contents'),) -epub3_description = 'Sphinx documentation generator system manual' +epub_description = 'Sphinx documentation generator system manual' latex_documents = [('contents', 'sphinx.tex', 'Sphinx Documentation', 'Georg Brandl', 'manual', 1)] diff --git a/doc/config.rst b/doc/config.rst index 4cdc703db..e257b3c95 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -1289,18 +1289,21 @@ the `Dublin Core metadata `_. The title of the document. It defaults to the :confval:`html_title` option but can be set independently for epub creation. -.. confval:: epub3_description +.. confval:: epub_description The description of the document. The default value is ``''``. .. versionadded:: 1.4 + .. versionchanged:: 1.5 + Renamed from ``epub3_description`` + .. confval:: epub_author The author of the document. This is put in the Dublin Core metadata. The default value is ``'unknown'``. -.. confval:: epub3_contributor +.. confval:: epub_contributor The name of a person, organization, etc. that played a secondary role in the creation of the content of an EPUB Publication. The default value is @@ -1308,6 +1311,9 @@ the `Dublin Core metadata `_. .. versionadded:: 1.4 + .. versionchanged:: 1.5 + Renamed from ``epub3_contributor`` + .. confval:: epub_language The language of the document. This is put in the Dublin Core metadata. The @@ -1467,7 +1473,7 @@ the `Dublin Core metadata `_. .. versionadded:: 1.2 -.. confval:: epub3_writing_mode +.. confval:: epub_writing_mode It specifies writing direction. It can accept ``'horizontal'`` (default) and ``'vertical'`` @@ -1476,7 +1482,7 @@ the `Dublin Core metadata `_. :header-rows: 1 :stub-columns: 1 - - * ``epub3_writing_mode`` + - * ``epub_writing_mode`` * ``'horizontal'`` * ``'vertical'`` - * writing-mode [#]_ @@ -1503,7 +1509,7 @@ the `Dublin Core metadata `_. .. versionadded:: 1.4 .. deprecated:: 1.5 - Use ``epub3_writing_mode``. + Use ``epub_writing_mode`` instead. .. _latex-options: diff --git a/sphinx/builders/epub3.py b/sphinx/builders/epub3.py index d706867fa..ae799986e 100644 --- a/sphinx/builders/epub3.py +++ b/sphinx/builders/epub3.py @@ -111,13 +111,6 @@ class Epub3Builder(EpubBuilder): content_template = PACKAGE_DOC_TEMPLATE doctype = DOCTYPE - # Warning deprecated option - def init(self): - if self.config.epub3_page_progression_direction: - self.warn('epub3_page_progression_direction option is deprecated' - ' from 1.5. Use epub3_writing_mode instead of this.') - super(Epub3Builder, self).init() - # Finish by building the epub file def handle_finish(self): """Create the metainfo files and finally the epub.""" @@ -135,8 +128,8 @@ class Epub3Builder(EpubBuilder): """ metadata = super(Epub3Builder, self).content_metadata( files, spine, guide) - metadata['description'] = self.esc(self.config.epub3_description) - metadata['contributor'] = self.esc(self.config.epub3_contributor) + metadata['description'] = self.esc(self.config.epub_description) + metadata['contributor'] = self.esc(self.config.epub_contributor) metadata['page_progression_direction'] = self._page_progression_direction() metadata['ibook_scroll_axis'] = self._ibook_scroll_axis() metadata['date'] = self.esc(datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ")) @@ -144,25 +137,25 @@ class Epub3Builder(EpubBuilder): return metadata def _page_progression_direction(self): - if self.config.epub3_writing_mode == 'horizontal': + if self.config.epub_writing_mode == 'horizontal': page_progression_direction = 'ltr' - elif self.config.epub3_writing_mode == 'vertical': + elif self.config.epub_writing_mode == 'vertical': page_progression_direction = 'rtl' else: page_progression_direction = 'default' return page_progression_direction def _ibook_scroll_axis(self): - if self.config.epub3_writing_mode == 'horizontal': + if self.config.epub_writing_mode == 'horizontal': scroll_axis = 'vertical' - elif self.config.epub3_writing_mode == 'vertical': + elif self.config.epub_writing_mode == 'vertical': scroll_axis = 'horizontal' else: scroll_axis = 'default' return scroll_axis def _css_writing_mode(self): - if self.config.epub3_writing_mode == 'vertical': + if self.config.epub_writing_mode == 'vertical': editing_mode = 'vertical-rl' else: editing_mode = 'horizontal-tb' @@ -263,11 +256,28 @@ class Epub3Builder(EpubBuilder): self.files.append(outname) +def validate_config_values(app): + if app.config.epub3_description is not None: + app.warn('epub3_description is deprecated. Use epub_description instead.') + app.config.epub_description = app.config.epub3_description + + if app.config.epub3_contributor is not None: + app.warn('epub3_contributor is deprecated. Use epub_contributor instead.') + app.config.epub_contributor = app.config.epub3_contributor + + if app.config.epub3_page_progression_direction is not None: + app.warn('epub3_page_progression_direction option is deprecated' + ' from 1.5. Use epub_writing_mode instead.') + + def setup(app): app.setup_extension('sphinx.builders.epub') app.add_builder(Epub3Builder) + app.connect('builder-inited', validate_config_values) - app.add_config_value('epub3_description', '', 'epub3', string_classes) - app.add_config_value('epub3_contributor', 'unknown', 'epub3', string_classes) - app.add_config_value('epub3_writing_mode', 'horizontal', 'epub3', string_classes) - app.add_config_value('epub3_page_progression_direction', '', 'epub3', string_classes) + app.add_config_value('epub_description', '', 'epub3', string_classes) + app.add_config_value('epub_contributor', 'unknown', 'epub3', string_classes) + app.add_config_value('epub_writing_mode', 'horizontal', 'epub3', string_classes) + app.add_config_value('epub3_description', None, 'epub3', string_classes) + app.add_config_value('epub3_contributor', None, 'epub3', string_classes) + app.add_config_value('epub3_page_progression_direction', None, 'epub3', string_classes) From 1406f6b63e5cbe0726f22b24e483c7e95b836815 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sat, 1 Oct 2016 22:32:32 +0900 Subject: [PATCH 007/297] Bump to 1.4.7 final --- CHANGES | 4 ++-- sphinx/__init__.py | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CHANGES b/CHANGES index a2b17f126..07ca04125 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,5 @@ -Release 1.4.7 (in development) -============================== +Release 1.4.7 (released Oct 1, 2016) +==================================== Bugs fixed ---------- diff --git a/sphinx/__init__.py b/sphinx/__init__.py index 83d9f534c..1fe639e03 100644 --- a/sphinx/__init__.py +++ b/sphinx/__init__.py @@ -15,13 +15,13 @@ import sys from os import path -__version__ = '1.4.6+' -__released__ = '1.4.6' # used when Sphinx builds its own docs +__version__ = '1.4.7' +__released__ = '1.4.7' # used when Sphinx builds its own docs # version info for better programmatic use # possible values for 3rd element: 'alpha', 'beta', 'rc', 'final' # 'final' has 0 as the last element -version_info = (1, 4, 7, 'beta', 1) +version_info = (1, 4, 7, 'final', 0) package_dir = path.abspath(path.dirname(__file__)) From 6f3a93c8b449f4b77db5f42be2df4ae322f5147e Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sat, 1 Oct 2016 22:39:25 +0900 Subject: [PATCH 008/297] Bump version --- CHANGES | 6 ++++++ sphinx/__init__.py | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index 07ca04125..59cbefe3b 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,9 @@ +Release 1.4.8 (in development) +============================== + +Bugs fixed +---------- + Release 1.4.7 (released Oct 1, 2016) ==================================== diff --git a/sphinx/__init__.py b/sphinx/__init__.py index 1fe639e03..b7956c68e 100644 --- a/sphinx/__init__.py +++ b/sphinx/__init__.py @@ -15,13 +15,13 @@ import sys from os import path -__version__ = '1.4.7' -__released__ = '1.4.7' # used when Sphinx builds its own docs +__version__ = '1.4.8+' +__released__ = '1.4.8' # used when Sphinx builds its own docs # version info for better programmatic use # possible values for 3rd element: 'alpha', 'beta', 'rc', 'final' # 'final' has 0 as the last element -version_info = (1, 4, 7, 'final', 0) +version_info = (1, 4, 8, 'beta', 1) package_dir = path.abspath(path.dirname(__file__)) From 502874bcc43916e74b1c9091874e6418d130ed35 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sun, 2 Oct 2016 00:25:58 +0900 Subject: [PATCH 009/297] Fix "make clean" does not remove build/ directory --- Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index adaf9640f..fa2a846f5 100644 --- a/Makefile +++ b/Makefile @@ -34,7 +34,7 @@ all: clean-pyc clean-backupfiles style-check test style-check: @$(PYTHON) utils/check_sources.py $(DONT_CHECK) . -clean: clean-pyc clean-pycache clean-patchfiles clean-backupfiles clean-generated clean-testfiles +clean: clean-pyc clean-pycache clean-patchfiles clean-backupfiles clean-generated clean-testfiles clean-buildfiles clean-pyc: find . -name '*.pyc' -exec rm -f {} + @@ -58,6 +58,9 @@ clean-testfiles: rm -rf tests/build rm -rf .tox/ +clean-buildfiles: + rm -rf build + pylint: @pylint --rcfile utils/pylintrc sphinx From fc45d4d5fe14f1e45046f41ca21124c9280eee00 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sun, 2 Oct 2016 00:36:42 +0900 Subject: [PATCH 010/297] Update CHANGES --- CHANGES | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES b/CHANGES index 59cbefe3b..b5bb7513d 100644 --- a/CHANGES +++ b/CHANGES @@ -4,6 +4,8 @@ Release 1.4.8 (in development) Bugs fixed ---------- +* #2996: The wheel package of Sphinx got crash with ImportError + Release 1.4.7 (released Oct 1, 2016) ==================================== From 007c855c9c6fe39f5197571a0c34b7caa3c881e4 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sun, 2 Oct 2016 00:37:59 +0900 Subject: [PATCH 011/297] Bump to 1.4.8 final --- CHANGES | 4 ++-- sphinx/__init__.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index b5bb7513d..a8552e809 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,5 @@ -Release 1.4.8 (in development) -============================== +Release 1.4.8 (released Oct 1, 2016) +==================================== Bugs fixed ---------- diff --git a/sphinx/__init__.py b/sphinx/__init__.py index b7956c68e..228565fb7 100644 --- a/sphinx/__init__.py +++ b/sphinx/__init__.py @@ -15,13 +15,13 @@ import sys from os import path -__version__ = '1.4.8+' +__version__ = '1.4.8' __released__ = '1.4.8' # used when Sphinx builds its own docs # version info for better programmatic use # possible values for 3rd element: 'alpha', 'beta', 'rc', 'final' # 'final' has 0 as the last element -version_info = (1, 4, 8, 'beta', 1) +version_info = (1, 4, 8, 'final', 0) package_dir = path.abspath(path.dirname(__file__)) From 55a8ab3bbbad02b227582f5a48b5893ac758060e Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sun, 2 Oct 2016 00:43:32 +0900 Subject: [PATCH 012/297] Bump version --- CHANGES | 6 ++++++ sphinx/__init__.py | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index a8552e809..41f0055df 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,9 @@ +Release 1.4.9 (in development) +============================== + +Bugs fixed +---------- + Release 1.4.8 (released Oct 1, 2016) ==================================== diff --git a/sphinx/__init__.py b/sphinx/__init__.py index 228565fb7..60b42d70e 100644 --- a/sphinx/__init__.py +++ b/sphinx/__init__.py @@ -15,13 +15,13 @@ import sys from os import path -__version__ = '1.4.8' -__released__ = '1.4.8' # used when Sphinx builds its own docs +__version__ = '1.4.9+' +__released__ = '1.4.9' # used when Sphinx builds its own docs # version info for better programmatic use # possible values for 3rd element: 'alpha', 'beta', 'rc', 'final' # 'final' has 0 as the last element -version_info = (1, 4, 8, 'final', 0) +version_info = (1, 4, 9, 'beta', 1) package_dir = path.abspath(path.dirname(__file__)) From 85b954714cb6344512c9d55cd2afe9a7c017985d Mon Sep 17 00:00:00 2001 From: jfbu Date: Sat, 1 Oct 2016 17:44:46 +0200 Subject: [PATCH 013/297] Fix #2810: Problems with pdflatex in an Italian document Depending on the version of the italian module for LaTeX Babel, the double-quote character may have been or not declared as a babel shorthand. The babel ``\shorthandoff`` macro emits an error which aborts compilation if the character isn't a shorthand. This commits wraps the macro in a conditional to test if the character is active or not. modified: sphinx/writers/latex.py --- sphinx/writers/latex.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index a139dfc74..ebd96662b 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -93,7 +93,7 @@ class ExtBabel(Babel): if shortlang in ('de', 'ngerman', 'sl', 'slovene', 'pt', 'portuges', 'es', 'spanish', 'nl', 'dutch', 'pl', 'polish', 'it', 'italian'): - return '\\shorthandoff{"}' + return '\\if\\catcode`\\"\\active\\shorthandoff{"}\\fi' elif shortlang in ('tr', 'turkish'): return '\\shorthandoff{=}' return '' From bc6b4bf70e19055b9d855c24c97b5674f70d69fd Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sun, 2 Oct 2016 06:58:55 +0900 Subject: [PATCH 014/297] Remove unused LaTeX macro filename from tests --- tests/test_build_latex.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_build_latex.py b/tests/test_build_latex.py index ddc0c6fb1..1dd0dcf7b 100644 --- a/tests/test_build_latex.py +++ b/tests/test_build_latex.py @@ -27,8 +27,8 @@ from test_build_html import ENV_WARNINGS LATEX_ENGINES = ['pdflatex', 'lualatex', 'xelatex'] DOCCLASSES = ['howto', 'manual'] -STYLEFILES = ['article.sty', 'fancyhdr.sty', 'fancybox.sty', 'titlesec.sty', 'amsmath.sty', - 'framed.sty', 'color.sty', 'fancyvrb.sty', 'threeparttable.sty'] +STYLEFILES = ['article.sty', 'fancyhdr.sty', 'titlesec.sty', 'amsmath.sty', 'framed.sty', + 'color.sty', 'fancyvrb.sty', 'threeparttable.sty'] LATEX_WARNINGS = ENV_WARNINGS + """\ %(root)s/index.rst:\\d+: WARNING: unknown option: &option From d6d6a8e0d83a7e3ace3a34b3592b42fa5d94a823 Mon Sep 17 00:00:00 2001 From: jfbu Date: Sun, 2 Oct 2016 09:31:36 +0200 Subject: [PATCH 015/297] Update CHANGES for PR#2997 --- CHANGES | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES b/CHANGES index 8ff2e3b89..c84299409 100644 --- a/CHANGES +++ b/CHANGES @@ -13,6 +13,8 @@ Features added Bugs fixed ---------- +* #2810: Problems with pdflatex in an Italian document + Documentation ------------- From aa22bede25c48c1a40141ebbb74b283edbbcbb79 Mon Sep 17 00:00:00 2001 From: Jean Jordaan Date: Sun, 2 Oct 2016 19:21:12 +0700 Subject: [PATCH 016/297] Fix grammar and wording --- doc/markup/code.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/markup/code.rst b/doc/markup/code.rst index 6e8028fe4..c7cb0f911 100644 --- a/doc/markup/code.rst +++ b/doc/markup/code.rst @@ -241,7 +241,7 @@ Dedent .. versionadded:: 1.3 -A ``dedent`` option can be given to strip a precedence characters from the code +A ``dedent`` option can be given to strip indentation characters from the code block. For example:: .. literalinclude:: example.rb From 72b76ab6d72fc2406b6adc549d8f2b2518a741f8 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Mon, 3 Oct 2016 23:30:15 +0900 Subject: [PATCH 017/297] Use ``latex_elements.papersize`` to specify papersize of LaTeX in Makefile --- CHANGES | 1 + sphinx/templates/quickstart/Makefile_t | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index c84299409..9bb479cb7 100644 --- a/CHANGES +++ b/CHANGES @@ -14,6 +14,7 @@ Bugs fixed ---------- * #2810: Problems with pdflatex in an Italian document +* Use ``latex_elements.papersize`` to specify papersize of LaTeX in Makefile Documentation ------------- diff --git a/sphinx/templates/quickstart/Makefile_t b/sphinx/templates/quickstart/Makefile_t index f86d2545a..b61c1df7e 100644 --- a/sphinx/templates/quickstart/Makefile_t +++ b/sphinx/templates/quickstart/Makefile_t @@ -8,8 +8,8 @@ PAPER = BUILDDIR = {{ rbuilddir }} # Internal variables. -PAPEROPT_a4 = -D latex_paper_size=a4 -PAPEROPT_letter = -D latex_paper_size=letter +PAPEROPT_a4 = -D latex_elements.papersize=a4 +PAPEROPT_letter = -D latex_elements.papersize=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) {{ rsrcdir }} # the i18n builder cannot share the environment and doctrees with the others I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) {{ rsrcdir }} From ce7fea9a355b2a7677232cbff0b08a0a9557f0c1 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Tue, 4 Oct 2016 11:04:58 +0900 Subject: [PATCH 018/297] Fix #2988: linkcheck: retry with GET request if denied HEAD request --- CHANGES | 1 + sphinx/builders/linkcheck.py | 20 +++++++++----------- sphinx/util/requests.py | 2 +- tests/test_build.py | 2 +- 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/CHANGES b/CHANGES index 9bb479cb7..f4a109124 100644 --- a/CHANGES +++ b/CHANGES @@ -15,6 +15,7 @@ Bugs fixed * #2810: Problems with pdflatex in an Italian document * Use ``latex_elements.papersize`` to specify papersize of LaTeX in Makefile +* #2988: linkcheck: retry with GET request if denied HEAD request Documentation ------------- diff --git a/sphinx/builders/linkcheck.py b/sphinx/builders/linkcheck.py index 371114106..e1eeb396c 100644 --- a/sphinx/builders/linkcheck.py +++ b/sphinx/builders/linkcheck.py @@ -84,14 +84,12 @@ class CheckExternalLinksBuilder(Builder): self.good = set() self.broken = {} self.redirected = {} + self.headers = dict(useragent_header) # set a timeout for non-responding servers socket.setdefaulttimeout(5.0) # create output file open(path.join(self.outdir, 'output.txt'), 'w').close() - self.session = requests.Session() - self.session.headers = dict(useragent_header) - # create queues and worker threads self.wqueue = queue.Queue() self.rqueue = queue.Queue() @@ -129,23 +127,23 @@ class CheckExternalLinksBuilder(Builder): # Read the whole document and see if #anchor exists # (Anchors starting with ! are ignored since they are # commonly used for dynamic pages) - response = self.session.get(req_url, stream=True, **kwargs) + response = requests.get(req_url, stream=True, headers=self.headers, + **kwargs) found = check_anchor(response, unquote(anchor)) if not found: raise Exception("Anchor '%s' not found" % anchor) else: try: - # try a HEAD request, which should be easier on + # try a HEAD request first, which should be easier on # the server and the network - response = self.session.head(req_url, **kwargs) + response = requests.head(req_url, headers=self.headers, **kwargs) response.raise_for_status() except HTTPError as err: - if err.response.status_code not in (403, 405): - raise - # retry with GET if that fails, some servers - # don't like HEAD requests and reply with 403 or 405 - response = self.session.get(req_url, stream=True, **kwargs) + # retry with GET request if that fails, some servers + # don't like HEAD requests. + response = requests.get(req_url, stream=True, headers=self.headers, + **kwargs) response.raise_for_status() except HTTPError as err: if err.response.status_code == 401: diff --git a/sphinx/util/requests.py b/sphinx/util/requests.py index 095bf33e6..9bd8f251c 100644 --- a/sphinx/util/requests.py +++ b/sphinx/util/requests.py @@ -39,5 +39,5 @@ except pkg_resources.UnknownExtra: 'install requests-2.4.1+.' ) -useragent_header = [('User-agent', +useragent_header = [('User-Agent', 'Mozilla/5.0 (X11; Linux x86_64; rv:25.0) Gecko/20100101 Firefox/25.0')] diff --git a/tests/test_build.py b/tests/test_build.py index 82569074d..27a99461b 100644 --- a/tests/test_build.py +++ b/tests/test_build.py @@ -66,7 +66,7 @@ def test_build_all(): ) with mock.patch('sphinx.builders.linkcheck.requests') as requests: - requests.Session().head = request_session_head + requests.head = request_session_head # note: no 'html' - if it's ok with dirhtml it's ok with html for buildername in ['dirhtml', 'singlehtml', 'latex', 'texinfo', 'pickle', From 4c7bec6460ae6154705bfd023e363e458f16d1b6 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Thu, 6 Oct 2016 12:46:23 +0900 Subject: [PATCH 019/297] Fix #3008: ``linkcheck`` builder ignores self-signed certificate URL --- CHANGES | 2 ++ sphinx/builders/linkcheck.py | 12 +++++++++--- sphinx/util/requests.py | 12 ++++++++++++ 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index f4a109124..0633fb999 100644 --- a/CHANGES +++ b/CHANGES @@ -10,6 +10,8 @@ Incompatible changes Features added -------------- +* #3008: ``linkcheck`` builder ignores self-signed certificate URL + Bugs fixed ---------- diff --git a/sphinx/builders/linkcheck.py b/sphinx/builders/linkcheck.py index e1eeb396c..92ab5a0d3 100644 --- a/sphinx/builders/linkcheck.py +++ b/sphinx/builders/linkcheck.py @@ -35,7 +35,7 @@ from sphinx.builders import Builder from sphinx.util import encode_uri from sphinx.util.console import purple, red, darkgreen, darkgray, \ darkred, turquoise -from sphinx.util.requests import requests, useragent_header +from sphinx.util.requests import requests, useragent_header, is_ssl_error class AnchorCheckParser(HTMLParser): @@ -152,7 +152,10 @@ class CheckExternalLinksBuilder(Builder): else: return 'broken', str(err), 0 except Exception as err: - return 'broken', str(err), 0 + if is_ssl_error(err): + return 'ignored', str(err), 0 + else: + return 'broken', str(err), 0 if response.url.rstrip('/') == req_url.rstrip('/'): return 'working', '', 0 else: @@ -211,7 +214,10 @@ class CheckExternalLinksBuilder(Builder): if lineno: self.info('(line %4d) ' % lineno, nonl=1) if status == 'ignored': - self.info(darkgray('-ignored- ') + uri) + if info: + self.info(darkgray('-ignored- ') + uri + ': ' + info) + else: + self.info(darkgray('-ignored- ') + uri) elif status == 'local': self.info(darkgray('-local- ') + uri) self.write_entry('local', docname, lineno, uri) diff --git a/sphinx/util/requests.py b/sphinx/util/requests.py index 9bd8f251c..36ac1e0e7 100644 --- a/sphinx/util/requests.py +++ b/sphinx/util/requests.py @@ -14,6 +14,7 @@ from __future__ import absolute_import import requests import warnings import pkg_resources +from requests.packages.urllib3.exceptions import SSLError # try to load requests[security] try: @@ -41,3 +42,14 @@ except pkg_resources.UnknownExtra: useragent_header = [('User-Agent', 'Mozilla/5.0 (X11; Linux x86_64; rv:25.0) Gecko/20100101 Firefox/25.0')] + + +def is_ssl_error(exc): + if isinstance(exc, SSLError): + return True + else: + args = getattr(exc, 'args', []) + if args and isinstance(args[0], SSLError): + return True + else: + return False From 42604a1ff63dc7fe80fbf840529effccec7aca2d Mon Sep 17 00:00:00 2001 From: Hiroaki Itoh Date: Thu, 6 Oct 2016 18:59:24 +0900 Subject: [PATCH 020/297] Fix #2990: linkcheck raises "Can't convert 'bytes' object to str implicitly" error if linkcheck_anchors enabled --- sphinx/builders/linkcheck.py | 3 ++- tests/roots/test-linkcheck/conf.py | 4 ++++ tests/roots/test-linkcheck/links.txt | 4 ++++ tests/test_build_linkcheck.py | 25 +++++++++++++++++++++++++ 4 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 tests/roots/test-linkcheck/conf.py create mode 100644 tests/roots/test-linkcheck/links.txt create mode 100644 tests/test_build_linkcheck.py diff --git a/sphinx/builders/linkcheck.py b/sphinx/builders/linkcheck.py index 92ab5a0d3..e53cabb62 100644 --- a/sphinx/builders/linkcheck.py +++ b/sphinx/builders/linkcheck.py @@ -51,6 +51,7 @@ class AnchorCheckParser(HTMLParser): for key, value in attrs: if key in ('id', 'name') and value == self.search_anchor: self.found = True + break def check_anchor(response, anchor): @@ -61,7 +62,7 @@ def check_anchor(response, anchor): try: # Read file in chunks. If we find a matching anchor, we break # the loop early in hopes not to have to download the whole thing. - for chunk in response.iter_content(): + for chunk in response.iter_content(chunk_size=4096, decode_unicode=True): parser.feed(chunk) if parser.found: break diff --git a/tests/roots/test-linkcheck/conf.py b/tests/roots/test-linkcheck/conf.py new file mode 100644 index 000000000..ae8ef24b7 --- /dev/null +++ b/tests/roots/test-linkcheck/conf.py @@ -0,0 +1,4 @@ +master_doc = 'links' +source_suffix = '.txt' +exclude_patterns = ['_build'] +linkcheck_anchors = True diff --git a/tests/roots/test-linkcheck/links.txt b/tests/roots/test-linkcheck/links.txt new file mode 100644 index 000000000..c3ec7235e --- /dev/null +++ b/tests/roots/test-linkcheck/links.txt @@ -0,0 +1,4 @@ +This is from CPython documentation. + +* Also, if there is a `default namespace `__, that full URI gets prepended to all of the non-prefixed tags. +* The `SSMEDIAN `_ function in the Gnome Gnumeric spreadsheet. diff --git a/tests/test_build_linkcheck.py b/tests/test_build_linkcheck.py new file mode 100644 index 000000000..700642901 --- /dev/null +++ b/tests/test_build_linkcheck.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +""" + test_build_linkcheck + ~~~~~~~~~~~~~~~~~~~~ + + Test the build process with manpage builder with the test root. + + :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" +from __future__ import print_function + +from util import with_app + + +@with_app('linkcheck', testroot='linkcheck', freshenv=True) +def test_all(app, status, warning): + app.builder.build_all() + + assert (app.outdir / 'output.txt').exists() + content = (app.outdir / 'output.txt').text() + + # expect all ok + assert not content + From b48cba900e5346e1927eeb8e5b02a50302977024 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Thu, 6 Oct 2016 19:00:10 +0900 Subject: [PATCH 021/297] Update CHANGES for PR#2992 --- CHANGES | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGES b/CHANGES index 0633fb999..71d83a7de 100644 --- a/CHANGES +++ b/CHANGES @@ -18,6 +18,9 @@ Bugs fixed * #2810: Problems with pdflatex in an Italian document * Use ``latex_elements.papersize`` to specify papersize of LaTeX in Makefile * #2988: linkcheck: retry with GET request if denied HEAD request +* #2990: linkcheck raises "Can't convert 'bytes' object to str implicitly" error + if linkcheck_anchors enabled + Documentation ------------- From d43259f5f748cd00eba168b54b7b798d3f257911 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Thu, 6 Oct 2016 22:50:49 +0900 Subject: [PATCH 022/297] Fix #3004: Invalid link types "top" and "up" are used --- CHANGES | 1 + sphinx/themes/basic/layout.html | 4 ---- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index 71d83a7de..6a8d5b501 100644 --- a/CHANGES +++ b/CHANGES @@ -20,6 +20,7 @@ Bugs fixed * #2988: linkcheck: retry with GET request if denied HEAD request * #2990: linkcheck raises "Can't convert 'bytes' object to str implicitly" error if linkcheck_anchors enabled +* #3004: Invalid link types "top" and "up" are used Documentation diff --git a/sphinx/themes/basic/layout.html b/sphinx/themes/basic/layout.html index 1e5d39e0a..2d37d7134 100644 --- a/sphinx/themes/basic/layout.html +++ b/sphinx/themes/basic/layout.html @@ -140,10 +140,6 @@ {%- if hasdoc('copyright') %} {%- endif %} - - {%- if parents %} - - {%- endif %} {%- if next %} {%- endif %} From 44f595a63f94e9e83c477125fb4c725a21a6a72c Mon Sep 17 00:00:00 2001 From: jfbu Date: Wed, 5 Oct 2016 10:48:54 +0200 Subject: [PATCH 023/297] Fix #3009: Bad rendering of parsed-literals in LaTeX This reverts the ``\scantokens`` added (commit 86083875) to ``\code`` (aka ``\sphinxcode``), in case it is encountered inside a parsed-literal directive. Indeed strange interference arise then. The problem would occur in Verbatim too, but I think ``\sphinxcode`` is not encountered there. --- sphinx/texinputs/sphinx.sty | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index e74f00225..2a212d6b9 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -163,7 +163,9 @@ % let \sphinxcode and \sphinxbfcode use straight quotes. \@noligs patched by upquote, % but needs protection in "moving arguments" such as for captions. % Use \scantokens to handle e.g. \item[{\sphinxcode{'fontenc'}}] -\DeclareRobustCommand{\sphinxcode}[1]{{\@noligs\scantokens{\texttt{#1}\relax}}} +\DeclareRobustCommand{\sphinxcode}[1]{{\def\@tempa{alltt}% + \ifx\@tempa\@currenvir\else\@noligs\endlinechar\m@ne\everyeof{\noexpand}% + \expandafter\scantokens\fi {\texttt{#1}}}} \newcommand{\sphinxbfcode}[1]{\sphinxcode{\bfseries#1}} \newcommand{\sphinxemail}[1]{\textsf{#1}} \newcommand{\sphinxtablecontinued}[1]{\textsf{#1}} @@ -1008,7 +1010,9 @@ } % robustified case needs special treatment \newcommand\code{}\let\code\relax - \DeclareRobustCommand{\code}[1]{{\@noligs\scantokens{\texttt{#1}\relax}}} + \DeclareRobustCommand{\code}[1]{{\def\@tempa{alltt}% + \ifx\@tempa\@currenvir\else\@noligs\endlinechar\m@ne\everyeof{\noexpand}% + \expandafter\scantokens\fi {\texttt{#1}}}} \def\sphinxcode{\code}% \fi From 446729dccfc7cb9526ac8820632e38ca195ec919 Mon Sep 17 00:00:00 2001 From: jfbu Date: Thu, 6 Oct 2016 19:22:45 +0200 Subject: [PATCH 024/297] Improve wording in sphinx.sty and spare a few code lines at its end. --- sphinx/texinputs/sphinx.sty | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index 2a212d6b9..b2363b91c 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -160,9 +160,10 @@ % Some custom font markup commands. % *** the macros without \sphinx prefix are still defined at bottom of file *** \newcommand{\sphinxstrong}[1]{{\textbf{#1}}} -% let \sphinxcode and \sphinxbfcode use straight quotes. \@noligs patched by upquote, -% but needs protection in "moving arguments" such as for captions. -% Use \scantokens to handle e.g. \item[{\sphinxcode{'fontenc'}}] +% to obtain straight quotes we execute \@noligs as patched by upquote, the +% macro must be robust in case it is used in captions e.g., and \scantokens is +% needed in such cases and others such as \item[{\sphinxcode{'fontenc'}}] +% in 'alltt' \@noligs is done already, and the \scantokens must be avoided. \DeclareRobustCommand{\sphinxcode}[1]{{\def\@tempa{alltt}% \ifx\@tempa\@currenvir\else\@noligs\endlinechar\m@ne\everyeof{\noexpand}% \expandafter\scantokens\fi {\texttt{#1}}}} @@ -996,8 +997,12 @@ % by default, also define macros with the no-prefix names \ifsphinxKeepOldNames \typeout{** (sphinx) defining (legacy) text style macros without \string\sphinx\space prefix} - \typeout{** if clashes with packages, set latex_keep_old_macro_names=False in conf.py} - \@for\@tempa:=strong,bfcode,email,tablecontinued,titleref,% + \typeout{** if clashes with packages, set latex_keep_old_macro_names=False + in conf.py} + % robustified case needs special treatment + \newcommand\code{}\DeclareRobustCommand{\code}{}% + \expandafter\let\csname code \endcsname\relax\def\sphinxcode{\code}% + \@for\@tempa:=code ,strong,bfcode,email,tablecontinued,titleref,% menuselection,accelerator,crossref,termref,optional\do {% first, check if command with no prefix already exists \expandafter\newcommand\csname\@tempa\endcsname{}% @@ -1007,13 +1012,7 @@ % redefine the \sphinx prefixed macro to expand to non-prefixed one \expandafter\def\csname sphinx\@tempa\expandafter\endcsname \expandafter{\csname\@tempa\endcsname}% -} - % robustified case needs special treatment - \newcommand\code{}\let\code\relax - \DeclareRobustCommand{\code}[1]{{\def\@tempa{alltt}% - \ifx\@tempa\@currenvir\else\@noligs\endlinechar\m@ne\everyeof{\noexpand}% - \expandafter\scantokens\fi {\texttt{#1}}}} - \def\sphinxcode{\code}% +}% \fi % additional customizable styling From 89487d02fe11e8b833781965a6f86990e975b6ed Mon Sep 17 00:00:00 2001 From: jfbu Date: Thu, 6 Oct 2016 19:25:02 +0200 Subject: [PATCH 025/297] Update CHANGES for PR#3010 --- CHANGES | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 6a8d5b501..9ecdd254a 100644 --- a/CHANGES +++ b/CHANGES @@ -21,7 +21,7 @@ Bugs fixed * #2990: linkcheck raises "Can't convert 'bytes' object to str implicitly" error if linkcheck_anchors enabled * #3004: Invalid link types "top" and "up" are used - +* #3009: Bad rendering of parsed-literals in LaTeX Documentation ------------- From 08755074971c36d3b0ce29c244a270307317626d Mon Sep 17 00:00:00 2001 From: jfbu Date: Thu, 6 Oct 2016 19:50:42 +0200 Subject: [PATCH 026/297] Better wording in CHANGES for PR#3010 --- CHANGES | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 9ecdd254a..0b1227703 100644 --- a/CHANGES +++ b/CHANGES @@ -21,7 +21,7 @@ Bugs fixed * #2990: linkcheck raises "Can't convert 'bytes' object to str implicitly" error if linkcheck_anchors enabled * #3004: Invalid link types "top" and "up" are used -* #3009: Bad rendering of parsed-literals in LaTeX +* #3009: Bad rendering of parsed-literals in LaTeX since Sphinx 1.4.4 Documentation ------------- From 4c3c128e9b6b67faa379ce4245e30a0a17eb51a5 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Fri, 7 Oct 2016 12:09:50 +0900 Subject: [PATCH 027/297] Fix #3000: ``option`` directive generates invalid HTML anchors fix --- CHANGES | 1 + sphinx/domains/std.py | 10 ++++++---- tests/test_build_html.py | 6 +++--- tests/test_intl.py | 2 +- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/CHANGES b/CHANGES index 0b1227703..c9fb9f773 100644 --- a/CHANGES +++ b/CHANGES @@ -22,6 +22,7 @@ Bugs fixed if linkcheck_anchors enabled * #3004: Invalid link types "top" and "up" are used * #3009: Bad rendering of parsed-literals in LaTeX since Sphinx 1.4.4 +* #3000: ``option`` directive generates invalid HTML anchors Documentation ------------- diff --git a/sphinx/domains/std.py b/sphinx/domains/std.py index effec9a6e..b7f2597d4 100644 --- a/sphinx/domains/std.py +++ b/sphinx/domains/std.py @@ -174,16 +174,18 @@ class Cmdoption(ObjectDescription): if currprogram: targetname = '-' + currprogram + targetname targetname = 'cmdoption' + targetname - signode['ids'].append(targetname) - self.state.document.note_explicit_target(signode) + signode['names'].append(targetname) + + self.state.document.note_explicit_target(signode) + for optname in signode.get('allnames', []): self.env.domaindata['std']['progoptions'][currprogram, optname] = \ - self.env.docname, targetname + self.env.docname, signode['ids'][0] # create only one index entry for the whole option if optname == firstname: self.indexnode['entries'].append( ('pair', _('%scommand line option; %s') % ((currprogram and currprogram + ' ' or ''), sig), - targetname, '', None)) + signode['ids'][0], '', None)) class Program(Directive): diff --git a/tests/test_build_html.py b/tests/test_build_html.py index ca5747c96..d8aff88ab 100644 --- a/tests/test_build_html.py +++ b/tests/test_build_html.py @@ -240,11 +240,11 @@ HTML_XPATH = { (".//td[@class='field-body']/ul/li/em", '^DuplicateType$'), (".//td[@class='field-body']/ul/li/em", tail_check(r'.* Some parameter')), # others - (".//a[@class='reference internal'][@href='#cmdoption-perl-arg-+p']/code/span", + (".//a[@class='reference internal'][@href='#cmdoption-perl-arg-p']/code/span", 'perl'), - (".//a[@class='reference internal'][@href='#cmdoption-perl-arg-+p']/code/span", + (".//a[@class='reference internal'][@href='#cmdoption-perl-arg-p']/code/span", '\+p'), - (".//a[@class='reference internal'][@href='#cmdoption-perl--plugin.option']/code/span", + (".//a[@class='reference internal'][@href='#cmdoption-perl-plugin-option']/code/span", '--plugin.option'), (".//a[@class='reference internal'][@href='#cmdoption-perl-arg-create-auth-token']" "/code/span", diff --git a/tests/test_intl.py b/tests/test_intl.py index 80e3eaa64..43cd17c8e 100644 --- a/tests/test_intl.py +++ b/tests/test_intl.py @@ -631,7 +631,7 @@ def test_xml_builder(app, status, warning): yield (assert_elem, para2[3], ['LINK TO', '--module', 'AND', '-m', '.'], - ['cmdoption--module', 'cmdoption-m']) + ['cmdoption-module', 'cmdoption-m']) yield (assert_elem, para2[4], ['LINK TO', 'env2', 'AND', 'env1', '.'], From 562eb51e5bb7a246d4417f6d0821cfd27d71b8b0 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Fri, 7 Oct 2016 12:47:52 +0900 Subject: [PATCH 028/297] Fix #2984: Invalid HTML has been generated if `html_split_index` enabled --- CHANGES | 1 + sphinx/themes/basic/genindex-single.html | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index c9fb9f773..1f8c841b9 100644 --- a/CHANGES +++ b/CHANGES @@ -23,6 +23,7 @@ Bugs fixed * #3004: Invalid link types "top" and "up" are used * #3009: Bad rendering of parsed-literals in LaTeX since Sphinx 1.4.4 * #3000: ``option`` directive generates invalid HTML anchors +* #2984: Invalid HTML has been generated if `html_split_index` enabled Documentation ------------- diff --git a/sphinx/themes/basic/genindex-single.html b/sphinx/themes/basic/genindex-single.html index 1fe668710..e1da78ab5 100644 --- a/sphinx/themes/basic/genindex-single.html +++ b/sphinx/themes/basic/genindex-single.html @@ -36,7 +36,7 @@ {%- for column in entries|slice(2) if column %}
    {%- for entryname, (links, subitems, _) in column %} -
  • {{ indexentries(entryname, links) }}
  • +
  • {{ indexentries(entryname, links) }} {%- if subitems %}
      {%- for subentryname, subentrylinks in subitems %} From 9719a4cb211cfb2c02b27d966d948228766d310d Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Fri, 7 Oct 2016 12:59:34 +0900 Subject: [PATCH 029/297] Fix #2986: themes/basic/defindex.html should be changed for html5 friendly --- CHANGES | 1 + sphinx/themes/basic/defindex.html | 6 +++--- sphinx/themes/basic/static/basic.css_t | 2 ++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index 1f8c841b9..66e84aa87 100644 --- a/CHANGES +++ b/CHANGES @@ -24,6 +24,7 @@ Bugs fixed * #3009: Bad rendering of parsed-literals in LaTeX since Sphinx 1.4.4 * #3000: ``option`` directive generates invalid HTML anchors * #2984: Invalid HTML has been generated if `html_split_index` enabled +* #2986: themes/basic/defindex.html should be changed for html5 friendly Documentation ------------- diff --git a/sphinx/themes/basic/defindex.html b/sphinx/themes/basic/defindex.html index 020f7e396..33becfa0d 100644 --- a/sphinx/themes/basic/defindex.html +++ b/sphinx/themes/basic/defindex.html @@ -18,13 +18,13 @@

      {% block tables %}

      {{ _('Indices and tables:') }}

      - -
      + +
      - +

      {{ docstitle|e }}

      -

      - {{ _('Welcome! This is') }} - {% block description %}{{ _('the documentation for') }} {{ project|e }} - {{ release|e }}{% if last_updated %}, {{ _('last updated') }} {{ last_updated|e }}{% endif %}{% endblock %}. -

      - {% block tables %} -

      {{ _('Indices and tables:') }}

      - - -
      - - - - - -
      - {% endblock %} -{% endblock %} From 4e6d8737ffa3e996c34d656cf70cd7fd0d48ca83 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Fri, 7 Oct 2016 15:17:50 +0900 Subject: [PATCH 031/297] Update CHANGES --- CHANGES | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index c186feb52..464f2eaa5 100644 --- a/CHANGES +++ b/CHANGES @@ -6,6 +6,7 @@ Incompatible changes * #2983: Rename ``epub3_description`` and ``epub3_contributor`` to ``epub_description`` and ``epub_contributor``. +* Remove themes/basic/defindex.html; no longer used Features added -------------- @@ -24,7 +25,6 @@ Bugs fixed * #3009: Bad rendering of parsed-literals in LaTeX since Sphinx 1.4.4 * #3000: ``option`` directive generates invalid HTML anchors * #2984: Invalid HTML has been generated if `html_split_index` enabled -* Remove themes/basic/defindex.html; no longer used Documentation ------------- From 32981d10481585342014e54445e6460ae6771627 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Fri, 7 Oct 2016 17:18:11 +0900 Subject: [PATCH 032/297] Remove unused CSS for defindex.html --- sphinx/themes/agogo/static/agogo.css_t | 20 ----------------- sphinx/themes/basic/static/basic.css_t | 22 ------------------- sphinx/themes/epub/static/epub.css_t | 20 ----------------- sphinx/themes/nonav/static/nonav.css | 20 ----------------- .../traditional/static/traditional.css_t | 20 ----------------- 5 files changed, 102 deletions(-) diff --git a/sphinx/themes/agogo/static/agogo.css_t b/sphinx/themes/agogo/static/agogo.css_t index 0baec16fc..c6e2aa64d 100644 --- a/sphinx/themes/agogo/static/agogo.css_t +++ b/sphinx/themes/agogo/static/agogo.css_t @@ -435,26 +435,6 @@ ul.keywordmatches li.goodmatch a { font-weight: bold; } -/* -- index page ------------------------------------------------------------ */ - -table.contentstable { - width: 90%; -} - -table.contentstable p.biglink { - line-height: 150%; -} - -a.biglink { - font-size: 1.3em; -} - -span.linkdescr { - font-style: italic; - padding-top: 5px; - font-size: 90%; -} - /* -- general index --------------------------------------------------------- */ table.indextable td { diff --git a/sphinx/themes/basic/static/basic.css_t b/sphinx/themes/basic/static/basic.css_t index d70003d42..fcd3d208f 100644 --- a/sphinx/themes/basic/static/basic.css_t +++ b/sphinx/themes/basic/static/basic.css_t @@ -118,28 +118,6 @@ ul.keywordmatches li.goodmatch a { font-weight: bold; } -/* -- index page ------------------------------------------------------------ */ - -table.contentstable { - width: 90%; - margin-left: auto; - margin-right: auto; -} - -table.contentstable p.biglink { - line-height: 150%; -} - -a.biglink { - font-size: 1.3em; -} - -span.linkdescr { - font-style: italic; - padding-top: 5px; - font-size: 90%; -} - /* -- general index --------------------------------------------------------- */ table.indextable { diff --git a/sphinx/themes/epub/static/epub.css_t b/sphinx/themes/epub/static/epub.css_t index ab8610072..7c4ca1217 100644 --- a/sphinx/themes/epub/static/epub.css_t +++ b/sphinx/themes/epub/static/epub.css_t @@ -134,26 +134,6 @@ ul.keywordmatches li.goodmatch a { font-weight: bold; } -/* -- index page ------------------------------------------------------------ */ - -table.contentstable { - width: 90%; -} - -table.contentstable p.biglink { - line-height: 150%; -} - -a.biglink { - font-size: 130%; -} - -span.linkdescr { - font-style: italic; - padding-top: 5px; - font-size: 90%; -} - /* -- general index --------------------------------------------------------- */ table.indextable td { diff --git a/sphinx/themes/nonav/static/nonav.css b/sphinx/themes/nonav/static/nonav.css index cbaee7ced..8891ae723 100644 --- a/sphinx/themes/nonav/static/nonav.css +++ b/sphinx/themes/nonav/static/nonav.css @@ -123,26 +123,6 @@ ul.keywordmatches li.goodmatch a { font-weight: bold; } -/* -- index page ------------------------------------------------------------ */ - -table.contentstable { - width: 90%; -} - -table.contentstable p.biglink { - line-height: 150%; -} - -a.biglink { - font-size: 130%; -} - -span.linkdescr { - font-style: italic; - padding-top: 5px; - font-size: 90%; -} - /* -- general index --------------------------------------------------------- */ table.indextable td { diff --git a/sphinx/themes/traditional/static/traditional.css_t b/sphinx/themes/traditional/static/traditional.css_t index 306b5b51d..ac00820b9 100644 --- a/sphinx/themes/traditional/static/traditional.css_t +++ b/sphinx/themes/traditional/static/traditional.css_t @@ -363,26 +363,6 @@ div.preview { margin-bottom: 30px; } - -/* :::: INDEX PAGE :::: */ - -table.contentstable { - width: 90%; -} - -table.contentstable p.biglink { - line-height: 150%; -} - -a.biglink { - font-size: 1.5em; -} - -span.linkdescr { - font-style: italic; - padding-top: 5px; -} - /* :::: GENINDEX STYLES :::: */ table.indextable td { From 5b78aa28fedfb9ed36a284d4632bc499c31a08d6 Mon Sep 17 00:00:00 2001 From: jfbu Date: Fri, 7 Oct 2016 11:41:26 +0200 Subject: [PATCH 033/297] Fix #147 and fix #1986: Problem with latex chapter style Notice that as an after effect ``Contents`` or ``Python Module Index`` will appear (by default) in bold, and larger than formerly (it was a bug of Sphinx that they were not styled). I am leaving the `\py@HeaderFamily` in the `sphinx.sty` patch to the Bjarne `fncychap.sty` style for backwards compatibility. And as it does `\bfseries` by default I left only the size changing commands in the `fncychap` customization of Bjarne style. Also, the `\@makechapterhead` re-definition obeys `\mainmatter` etc... --- doc/config.rst | 3 +- sphinx/texinputs/fncychap.sty | 683 ---------------------------------- sphinx/texinputs/sphinx.sty | 25 +- tests/test_build_latex.py | 2 +- 4 files changed, 18 insertions(+), 695 deletions(-) delete mode 100644 sphinx/texinputs/fncychap.sty diff --git a/doc/config.rst b/doc/config.rst index e257b3c95..571ddd6bd 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -1688,7 +1688,8 @@ These options influence LaTeX output. See further :doc:`latex`. script. ``'fncychap'`` Inclusion of the "fncychap" package (which makes fancy chapter titles), - default ``'\\usepackage[Bjarne]{fncychap}'`` for English documentation, + default ``'\\usepackage[Bjarne]{fncychap}'`` for English documentation + (this option is slightly customized by Sphinx), ``'\\usepackage[Sonny]{fncychap}'`` for internationalized docs (because the "Bjarne" style uses numbers spelled out in English). Other "fncychap" styles you can try include "Lenny", "Glenn", "Conny" and diff --git a/sphinx/texinputs/fncychap.sty b/sphinx/texinputs/fncychap.sty deleted file mode 100644 index 9a56c04ed..000000000 --- a/sphinx/texinputs/fncychap.sty +++ /dev/null @@ -1,683 +0,0 @@ -%%% Copyright Ulf A. Lindgren -%%% -%%% Note Premission is granted to modify this file under -%%% the condition that it is saved using another -%%% file and package name. -%%% -%%% Revision 1.1 (1997) -%%% -%%% Jan. 8th Modified package name base date option -%%% Jan. 22th Modified FmN and FmTi for error in book.cls -%%% \MakeUppercase{#}->{\MakeUppercase#} -%%% Apr. 6th Modified Lenny option to prevent undesired -%%% skip of line. -%%% Nov. 8th Fixed \@chapapp for AMS -%%% -%%% Revision 1.2 (1998) -%%% -%%% Feb. 11th Fixed appendix problem related to Bjarne -%%% Aug. 11th Fixed problem related to 11pt and 12pt -%%% suggested by Tomas Lundberg. THANKS! -%%% -%%% Revision 1.3 (2004) -%%% Sep. 20th problem with frontmatter, mainmatter and -%%% backmatter, pointed out by Lapo Mori -%%% -%%% Revision 1.31 (2004) -%%% Sep. 21th problem with the Rejne definition streched text -%%% caused ugly gaps in the vrule aligned with the title -%%% text. Kindly pointed out to me by Hendri Adriaens -%%% -%%% Revision 1.32 (2005) -%%% Jun. 23th compatibility problem with the KOMA class 'scrbook.cls' -%%% a remedy is a redefinition of '\@schapter' in -%%% line with that used in KOMA. The problem was pointed -%%% out to me by Mikkel Holm Olsen -%%% -%%% Revision 1.33 (2005) -%%% Aug. 9th misspelled ``TWELV'' corrected, the error was pointed -%%% out to me by George Pearson -%%% -%%% Revision 1.34 (2007) -%%% Added an alternative to Lenny provided by Peter -%%% Osborne (2005-11-28) -%%% Corrected front, main and back matter, based on input -%%% from Bas van Gils (2006-04-24) -%%% Jul. 30th Added Bjornstrup option provided by Jean-Marc -%%% Francois (2007-01-05). -%%% Reverted to \MakeUppercase{#} see rev 1.1, solved -%%% problem with MakeUppercase and MakeLowercase pointed -%%% out by Marco Feuerstein (2007-06-06) - - -%%% Last modified Jul. 2007 - -\NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesPackage{fncychap} - [2007/07/30 v1.34 - LaTeX package (Revised chapters)] - -%%%% For conditional inclusion of color -\newif\ifusecolor -\usecolorfalse - - - -%%%% DEFINITION OF Chapapp variables -\newcommand{\CNV}{\huge\bfseries} -\newcommand{\ChNameVar}[1]{\renewcommand{\CNV}{#1}} - - -%%%% DEFINITION OF TheChapter variables -\newcommand{\CNoV}{\huge\bfseries} -\newcommand{\ChNumVar}[1]{\renewcommand{\CNoV}{#1}} - -\newif\ifUCN -\UCNfalse -\newif\ifLCN -\LCNfalse -\def\ChNameLowerCase{\LCNtrue\UCNfalse} -\def\ChNameUpperCase{\UCNtrue\LCNfalse} -\def\ChNameAsIs{\UCNfalse\LCNfalse} - -%%%%% Fix for AMSBook 971008 - -\@ifundefined{@chapapp}{\let\@chapapp\chaptername}{} - - -%%%%% Fix for Bjarne and appendix 980211 - -\newif\ifinapp -\inappfalse -\renewcommand\appendix{\par - \setcounter{chapter}{0}% - \setcounter{section}{0}% - \inapptrue% - \renewcommand\@chapapp{\appendixname}% - \renewcommand\thechapter{\@Alph\c@chapter}} - -%%%%% Fix for frontmatter, mainmatter, and backmatter 040920 - -\@ifundefined{@mainmatter}{\newif\if@mainmatter \@mainmattertrue}{} - -%%%%% - - - -\newcommand{\FmN}[1]{% -\ifUCN - {\MakeUppercase{#1}}\LCNfalse -\else - \ifLCN - {\MakeLowercase{#1}}\UCNfalse - \else #1 - \fi -\fi} - - -%%%% DEFINITION OF Title variables -\newcommand{\CTV}{\Huge\bfseries} -\newcommand{\ChTitleVar}[1]{\renewcommand{\CTV}{#1}} - -%%%% DEFINITION OF the basic rule width -\newlength{\RW} -\setlength{\RW}{1pt} -\newcommand{\ChRuleWidth}[1]{\setlength{\RW}{#1}} - -\newif\ifUCT -\UCTfalse -\newif\ifLCT -\LCTfalse -\def\ChTitleLowerCase{\LCTtrue\UCTfalse} -\def\ChTitleUpperCase{\UCTtrue\LCTfalse} -\def\ChTitleAsIs{\UCTfalse\LCTfalse} -\newcommand{\FmTi}[1]{% -\ifUCT - {\MakeUppercase{#1}}\LCTfalse -\else - \ifLCT - {\MakeLowercase{#1}}\UCTfalse - \else {#1} - \fi -\fi} - - - -\newlength{\mylen} -\newlength{\myhi} -\newlength{\px} -\newlength{\py} -\newlength{\pyy} -\newlength{\pxx} - - -\def\mghrulefill#1{\leavevmode\leaders\hrule\@height #1\hfill\kern\z@} - -\newcommand{\DOCH}{% - \CNV\FmN{\@chapapp}\space \CNoV\thechapter - \par\nobreak - \vskip 20\p@ - } -\newcommand{\DOTI}[1]{% - \CTV\FmTi{#1}\par\nobreak - \vskip 40\p@ - } -\newcommand{\DOTIS}[1]{% - \CTV\FmTi{#1}\par\nobreak - \vskip 40\p@ - } - -%%%%%% SONNY DEF - -\DeclareOption{Sonny}{% - \ChNameVar{\Large\sf} - \ChNumVar{\Huge} - \ChTitleVar{\Large\sf} - \ChRuleWidth{0.5pt} - \ChNameUpperCase - \renewcommand{\DOCH}{% - \raggedleft - \CNV\FmN{\@chapapp}\space \CNoV\thechapter - \par\nobreak - \vskip 40\p@} - \renewcommand{\DOTI}[1]{% - \CTV\raggedleft\mghrulefill{\RW}\par\nobreak - \vskip 5\p@ - \CTV\FmTi{#1}\par\nobreak - \mghrulefill{\RW}\par\nobreak - \vskip 40\p@} - \renewcommand{\DOTIS}[1]{% - \CTV\raggedleft\mghrulefill{\RW}\par\nobreak - \vskip 5\p@ - \CTV\FmTi{#1}\par\nobreak - \mghrulefill{\RW}\par\nobreak - \vskip 40\p@} -} - -%%%%%% LENNY DEF - -\DeclareOption{Lenny}{% - - \ChNameVar{\fontsize{14}{16}\usefont{OT1}{phv}{m}{n}\selectfont} - \ChNumVar{\fontsize{60}{62}\usefont{OT1}{ptm}{m}{n}\selectfont} - \ChTitleVar{\Huge\bfseries\rm} - \ChRuleWidth{1pt} - \renewcommand{\DOCH}{% - \settowidth{\px}{\CNV\FmN{\@chapapp}} - \addtolength{\px}{2pt} - \settoheight{\py}{\CNV\FmN{\@chapapp}} - \addtolength{\py}{1pt} - - \settowidth{\mylen}{\CNV\FmN{\@chapapp}\space\CNoV\thechapter} - \addtolength{\mylen}{1pt} - \settowidth{\pxx}{\CNoV\thechapter} - \addtolength{\pxx}{-1pt} - - \settoheight{\pyy}{\CNoV\thechapter} - \addtolength{\pyy}{-2pt} - \setlength{\myhi}{\pyy} - \addtolength{\myhi}{-1\py} - \par - \parbox[b]{\textwidth}{% - \rule[\py]{\RW}{\myhi}% - \hskip -\RW% - \rule[\pyy]{\px}{\RW}% - \hskip -\px% - \raggedright% - \CNV\FmN{\@chapapp}\space\CNoV\thechapter% - \hskip1pt% - \mghrulefill{\RW}% - \rule{\RW}{\pyy}\par\nobreak% - \vskip -\baselineskip% - \vskip -\pyy% - \hskip \mylen% - \mghrulefill{\RW}\par\nobreak% - \vskip \pyy}% - \vskip 20\p@} - - - \renewcommand{\DOTI}[1]{% - \raggedright - \CTV\FmTi{#1}\par\nobreak - \vskip 40\p@} - - \renewcommand{\DOTIS}[1]{% - \raggedright - \CTV\FmTi{#1}\par\nobreak - \vskip 40\p@} - } - -%%%%%% Peter Osbornes' version of LENNY DEF - -\DeclareOption{PetersLenny}{% - -% five new lengths -\newlength{\bl} % bottom left : orig \space -\setlength{\bl}{6pt} -\newcommand{\BL}[1]{\setlength{\bl}{#1}} -\newlength{\br} % bottom right : orig 1pt -\setlength{\br}{1pt} -\newcommand{\BR}[1]{\setlength{\br}{#1}} -\newlength{\tl} % top left : orig 2pt -\setlength{\tl}{2pt} -\newcommand{\TL}[1]{\setlength{\tl}{#1}} -\newlength{\trr} % top right :orig 1pt -\setlength{\trr}{1pt} -\newcommand{\TR}[1]{\setlength{\trr}{#1}} -\newlength{\blrule} % top right :orig 1pt -\setlength{\trr}{0pt} -\newcommand{\BLrule}[1]{\setlength{\blrule}{#1}} - - - \ChNameVar{\fontsize{14}{16}\usefont{OT1}{phv}{m}{n}\selectfont} - \ChNumVar{\fontsize{60}{62}\usefont{OT1}{ptm}{m}{n}\selectfont} - \ChTitleVar{\Huge\bfseries\rm} - \ChRuleWidth{1pt} -\renewcommand{\DOCH}{% - - -%%%%%%% tweaks for 1--9 and A--Z -\ifcase\c@chapter\relax% -\or\BL{-3pt}\TL{-4pt}\BR{0pt}\TR{-6pt}%1 -\or\BL{0pt}\TL{-4pt}\BR{2pt}\TR{-4pt}%2 -\or\BL{0pt}\TL{-4pt}\BR{2pt}\TR{-4pt}%3 -\or\BL{0pt}\TL{5pt}\BR{2pt}\TR{-4pt}%4 -\or\BL{0pt}\TL{3pt}\BR{2pt}\TR{-4pt}%5 -\or\BL{-1pt}\TL{0pt}\BR{2pt}\TR{-2pt}%6 -\or\BL{0pt}\TL{-3pt}\BR{2pt}\TR{-2pt}%7 -\or\BL{0pt}\TL{-3pt}\BR{2pt}\TR{-2pt}%8 -\or\BL{0pt}\TL{-3pt}\BR{-4pt}\TR{-2pt}%9 -\or\BL{-3pt}\TL{-3pt}\BR{2pt}\TR{-7pt}%10 -\or\BL{-6pt}\TL{-6pt}\BR{0pt}\TR{-9pt}%11 -\or\BL{-6pt}\TL{-6pt}\BR{2pt}\TR{-7pt}%12 -\or\BL{-5pt}\TL{-5pt}\BR{0pt}\TR{-9pt}%13 -\or\BL{-6pt}\TL{-6pt}\BR{0pt}\TR{-9pt}%14 -\or\BL{-3pt}\TL{-3pt}\BR{3pt}\TR{-6pt}%15 -\or\BL{-3pt}\TL{-3pt}\BR{3pt}\TR{-6pt}%16 -\or\BL{-5pt}\TL{-3pt}\BR{-8pt}\TR{-6pt}%17 -\or\BL{-5pt}\TL{-5pt}\BR{0pt}\TR{-9pt}%18 -\or\BL{-3pt}\TL{-3pt}\BR{-6pt}\TR{-9pt}%19 -\or\BL{0pt}\TL{0pt}\BR{0pt}\TR{-5pt}%20 -\fi - -\ifinapp\ifcase\c@chapter\relax% -\or\BL{0pt}\TL{14pt}\BR{5pt}\TR{-19pt}%A -\or\BL{0pt}\TL{-5pt}\BR{-3pt}\TR{-8pt}%B -\or\BL{-3pt}\TL{-2pt}\BR{1pt}\TR{-6pt}\BLrule{0pt}%C -\or\BL{0pt}\TL{-5pt}\BR{-3pt}\TR{-8pt}\BLrule{0pt}%D -\or\BL{0pt}\TL{-5pt}\BR{2pt}\TR{-3pt}%E -\or\BL{0pt}\TL{-5pt}\BR{-10pt}\TR{-1pt}%F -\or\BL{-3pt}\TL{0pt}\BR{0pt}\TR{-7pt}%G -\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}%H -\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}%I -\or\BL{2pt}\TL{0pt}\BR{-3pt}\TR{1pt}%J -\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}%K -\or\BL{0pt}\TL{-5pt}\BR{2pt}\TR{-19pt}%L -\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}%M -\or\BL{0pt}\TL{-5pt}\BR{-2pt}\TR{-1pt}%N -\or\BL{-3pt}\TL{-2pt}\BR{-3pt}\TR{-11pt}%O -\or\BL{0pt}\TL{-5pt}\BR{-9pt}\TR{-3pt}%P -\or\BL{-3pt}\TL{-2pt}\BR{-3pt}\TR{-11pt}%Q -\or\BL{0pt}\TL{-5pt}\BR{4pt}\TR{-8pt}%R -\or\BL{-2pt}\TL{-2pt}\BR{-2pt}\TR{-7pt}%S -\or\BL{-3pt}\TL{0pt}\BR{-5pt}\TR{4pt}\BLrule{8pt}%T -\or\BL{-7pt}\TL{-11pt}\BR{-5pt}\TR{-7pt}\BLrule{0pt}%U -\or\BL{-14pt}\TL{-5pt}\BR{-14pt}\TR{-1pt}\BLrule{14pt}%V -\or\BL{-10pt}\TL{-9pt}\BR{-13pt}\TR{-3pt}\BLrule{7pt}%W -\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}\BLrule{0pt}%X -\or\BL{-6pt}\TL{-4pt}\BR{-7pt}\TR{1pt}\BLrule{7pt}%Y -\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}\BLrule{0pt}%Z -\fi\fi -%%%%%%% - \settowidth{\px}{\CNV\FmN{\@chapapp}} - \addtolength{\px}{\tl} %MOD change 2pt to \tl - \settoheight{\py}{\CNV\FmN{\@chapapp}} - \addtolength{\py}{1pt} - - \settowidth{\mylen}{\CNV\FmN{\@chapapp}\space\CNoV\thechapter} - \addtolength{\mylen}{\trr}% MOD change 1pt to \tr - \settowidth{\pxx}{\CNoV\thechapter} - \addtolength{\pxx}{-1pt} - - \settoheight{\pyy}{\CNoV\thechapter} - \addtolength{\pyy}{-2pt} - \setlength{\myhi}{\pyy} - \addtolength{\myhi}{-1\py} - \par - \parbox[b]{\textwidth}{% - \rule[\py]{\RW}{\myhi}% - \hskip -\RW% - \rule[\pyy]{\px}{\RW}% - \hskip -\px% - \raggedright% - \CNV\FmN{\@chapapp}\rule{\blrule}{\RW}\hskip\bl\CNoV\thechapter%MOD -% \CNV\FmN{\@chapapp}\space\CNoV\thechapter %ORIGINAL - \hskip\br% %MOD 1pt to \br - \mghrulefill{\RW}% - \rule{\RW}{\pyy}\par\nobreak% - \vskip -\baselineskip% - \vskip -\pyy% - \hskip \mylen% - \mghrulefill{\RW}\par\nobreak% - \vskip \pyy}% - \vskip 20\p@} - - - \renewcommand{\DOTI}[1]{% - \raggedright - \CTV\FmTi{#1}\par\nobreak - \vskip 40\p@} - - \renewcommand{\DOTIS}[1]{% - \raggedright - \CTV\FmTi{#1}\par\nobreak - \vskip 40\p@} - } - - -% - - -%%%%%% BJORNSTRUP DEF - -\DeclareOption{Bjornstrup}{% - \usecolortrue - % pzc (Zapf Chancelery) is nice. ppl (Palatino) is cool too. - \ChNumVar{\fontsize{76}{80}\usefont{OT1}{pzc}{m}{n}\selectfont} - \ChTitleVar{\raggedleft\Large\sffamily\bfseries} - - \setlength{\myhi}{10pt} % Space between grey box border and text - \setlength{\mylen}{\textwidth} - \addtolength{\mylen}{-2\myhi} - \renewcommand{\DOCH}{% - \settowidth{\py}{\CNoV\thechapter} - \addtolength{\py}{-10pt} % Amount of space by which the -% % number is shifted right - \fboxsep=0pt% - \colorbox[gray]{.85}{\rule{0pt}{40pt}\parbox[b]{\textwidth}{\hfill}}% - \kern-\py\raise20pt% - \hbox{\color[gray]{.5}\CNoV\thechapter}\\% - } - - \renewcommand{\DOTI}[1]{% - \nointerlineskip\raggedright% - \fboxsep=\myhi% - \vskip-1ex% - \colorbox[gray]{.85}{\parbox[t]{\mylen}{\CTV\FmTi{#1}}}\par\nobreak% - \vskip 40\p@% - } - - \renewcommand{\DOTIS}[1]{% - \fboxsep=0pt - \colorbox[gray]{.85}{\rule{0pt}{40pt}\parbox[b]{\textwidth}{\hfill}}\\% - \nointerlineskip\raggedright% - \fboxsep=\myhi% - \colorbox[gray]{.85}{\parbox[t]{\mylen}{\CTV\FmTi{#1}}}\par\nobreak% - \vskip 40\p@% - } -} - - -%%%%%%% GLENN DEF - - -\DeclareOption{Glenn}{% - \ChNameVar{\bfseries\Large\sf} - \ChNumVar{\Huge} - \ChTitleVar{\bfseries\Large\rm} - \ChRuleWidth{1pt} - \ChNameUpperCase - \ChTitleUpperCase - \renewcommand{\DOCH}{% - \settoheight{\myhi}{\CTV\FmTi{Test}} - \setlength{\py}{\baselineskip} - \addtolength{\py}{\RW} - \addtolength{\py}{\myhi} - \setlength{\pyy}{\py} - \addtolength{\pyy}{-1\RW} - - \raggedright - \CNV\FmN{\@chapapp}\space\CNoV\thechapter - \hskip 3pt\mghrulefill{\RW}\rule[-1\pyy]{2\RW}{\py}\par\nobreak} - - \renewcommand{\DOTI}[1]{% - \addtolength{\pyy}{-4pt} - \settoheight{\myhi}{\CTV\FmTi{#1}} - \addtolength{\myhi}{\py} - \addtolength{\myhi}{-1\RW} - \vskip -1\pyy - \rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 2pt - \raggedleft\CTV\FmTi{#1}\par\nobreak - \vskip 80\p@} - -\newlength{\backskip} - \renewcommand{\DOTIS}[1]{% -% \setlength{\py}{10pt} -% \setlength{\pyy}{\py} -% \addtolength{\pyy}{\RW} -% \setlength{\myhi}{\baselineskip} -% \addtolength{\myhi}{\pyy} -% \mghrulefill{\RW}\rule[-1\py]{2\RW}{\pyy}\par\nobreak -% \addtolength{}{} -%\vskip -1\baselineskip -% \rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 2pt -% \raggedleft\CTV\FmTi{#1}\par\nobreak -% \vskip 60\p@} -%% Fix suggested by Tomas Lundberg - \setlength{\py}{25pt} % eller vad man vill - \setlength{\pyy}{\py} - \setlength{\backskip}{\py} - \addtolength{\backskip}{2pt} - \addtolength{\pyy}{\RW} - \setlength{\myhi}{\baselineskip} - \addtolength{\myhi}{\pyy} - \mghrulefill{\RW}\rule[-1\py]{2\RW}{\pyy}\par\nobreak - \vskip -1\backskip - \rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 3pt % - \raggedleft\CTV\FmTi{#1}\par\nobreak - \vskip 40\p@} - } - -%%%%%%% CONNY DEF - -\DeclareOption{Conny}{% - \ChNameUpperCase - \ChTitleUpperCase - \ChNameVar{\centering\Huge\rm\bfseries} - \ChNumVar{\Huge} - \ChTitleVar{\centering\Huge\rm} - \ChRuleWidth{2pt} - - \renewcommand{\DOCH}{% - \mghrulefill{3\RW}\par\nobreak - \vskip -0.5\baselineskip - \mghrulefill{\RW}\par\nobreak - \CNV\FmN{\@chapapp}\space \CNoV\thechapter - \par\nobreak - \vskip -0.5\baselineskip - } - \renewcommand{\DOTI}[1]{% - \mghrulefill{\RW}\par\nobreak - \CTV\FmTi{#1}\par\nobreak - \vskip 60\p@ - } - \renewcommand{\DOTIS}[1]{% - \mghrulefill{\RW}\par\nobreak - \CTV\FmTi{#1}\par\nobreak - \vskip 60\p@ - } - } - -%%%%%%% REJNE DEF - -\DeclareOption{Rejne}{% - - \ChNameUpperCase - \ChTitleUpperCase - \ChNameVar{\centering\Large\rm} - \ChNumVar{\Huge} - \ChTitleVar{\centering\Huge\rm} - \ChRuleWidth{1pt} - \renewcommand{\DOCH}{% - \settoheight{\py}{\CNoV\thechapter} - \parskip=0pt plus 1pt % Set parskip to default, just in case v1.31 - \addtolength{\py}{-1pt} - \CNV\FmN{\@chapapp}\par\nobreak - \vskip 20\p@ - \setlength{\myhi}{2\baselineskip} - \setlength{\px}{\myhi} - \addtolength{\px}{-1\RW} - \rule[-1\px]{\RW}{\myhi}\mghrulefill{\RW}\hskip - 10pt\raisebox{-0.5\py}{\CNoV\thechapter}\hskip 10pt\mghrulefill{\RW}\rule[-1\px]{\RW}{\myhi}\par\nobreak - \vskip -3\p@% Added -2pt vskip to correct for streched text v1.31 - } - \renewcommand{\DOTI}[1]{% - \setlength{\mylen}{\textwidth} - \parskip=0pt plus 1pt % Set parskip to default, just in case v1.31 - \addtolength{\mylen}{-2\RW} - {\vrule width\RW}\parbox{\mylen}{\CTV\FmTi{#1}}{\vrule width\RW}\par\nobreak% - \vskip -3pt\rule{\RW}{2\baselineskip}\mghrulefill{\RW}\rule{\RW}{2\baselineskip}% - \vskip 60\p@% Added -2pt in vskip to correct for streched text v1.31 - } - \renewcommand{\DOTIS}[1]{% - \setlength{\py}{\fboxrule} - \setlength{\fboxrule}{\RW} - \setlength{\mylen}{\textwidth} - \addtolength{\mylen}{-2\RW} - \fbox{\parbox{\mylen}{\vskip 2\baselineskip\CTV\FmTi{#1}\par\nobreak\vskip \baselineskip}} - \setlength{\fboxrule}{\py} - \vskip 60\p@ - } - } - - -%%%%%%% BJARNE DEF - -\DeclareOption{Bjarne}{% - \ChNameUpperCase - \ChTitleUpperCase - \ChNameVar{\raggedleft\normalsize\rm} - \ChNumVar{\raggedleft \bfseries\Large} - \ChTitleVar{\raggedleft \Large\rm} - \ChRuleWidth{1pt} - - -%% Note thechapter -> c@chapter fix appendix bug -%% Fixed misspelled 12 - - \newcounter{AlphaCnt} - \newcounter{AlphaDecCnt} - \newcommand{\AlphaNo}{% - \ifcase\number\theAlphaCnt - \ifnum\c@chapter=0 - ZERO\else{}\fi - \or ONE\or TWO\or THREE\or FOUR\or FIVE - \or SIX\or SEVEN\or EIGHT\or NINE\or TEN - \or ELEVEN\or TWELVE\or THIRTEEN\or FOURTEEN\or FIFTEEN - \or SIXTEEN\or SEVENTEEN\or EIGHTEEN\or NINETEEN\fi -} - - \newcommand{\AlphaDecNo}{% - \setcounter{AlphaDecCnt}{0} - \@whilenum\number\theAlphaCnt>0\do - {\addtocounter{AlphaCnt}{-10} - \addtocounter{AlphaDecCnt}{1}} - \ifnum\number\theAlphaCnt=0 - \else - \addtocounter{AlphaDecCnt}{-1} - \addtocounter{AlphaCnt}{10} - \fi - - - \ifcase\number\theAlphaDecCnt\or TEN\or TWENTY\or THIRTY\or - FORTY\or FIFTY\or SIXTY\or SEVENTY\or EIGHTY\or NINETY\fi - } - \newcommand{\TheAlphaChapter}{% - - \ifinapp - \thechapter - \else - \setcounter{AlphaCnt}{\c@chapter} - \ifnum\c@chapter<20 - \AlphaNo - \else - \AlphaDecNo\AlphaNo - \fi - \fi - } - \renewcommand{\DOCH}{% - \mghrulefill{\RW}\par\nobreak - \CNV\FmN{\@chapapp}\par\nobreak - \CNoV\TheAlphaChapter\par\nobreak - \vskip -1\baselineskip\vskip 5pt\mghrulefill{\RW}\par\nobreak - \vskip 20\p@ - } - \renewcommand{\DOTI}[1]{% - \CTV\FmTi{#1}\par\nobreak - \vskip 40\p@ - } - \renewcommand{\DOTIS}[1]{% - \CTV\FmTi{#1}\par\nobreak - \vskip 40\p@ - } -} - -\DeclareOption*{% - \PackageWarning{fancychapter}{unknown style option} - } - -\ProcessOptions* \relax - -\ifusecolor - \RequirePackage{color} -\fi -\def\@makechapterhead#1{% - \vspace*{50\p@}% - {\parindent \z@ \raggedright \normalfont - \ifnum \c@secnumdepth >\m@ne - \if@mainmatter%%%%% Fix for frontmatter, mainmatter, and backmatter 040920 - \DOCH - \fi - \fi - \interlinepenalty\@M - \if@mainmatter%%%%% Fix for frontmatter, mainmatter, and backmatter 060424 - \DOTI{#1}% - \else% - \DOTIS{#1}% - \fi - }} - - -%%% Begin: To avoid problem with scrbook.cls (fncychap version 1.32) - -%%OUT: -%\def\@schapter#1{\if@twocolumn -% \@topnewpage[\@makeschapterhead{#1}]% -% \else -% \@makeschapterhead{#1}% -% \@afterheading -% \fi} - -%%IN: -\def\@schapter#1{% -\if@twocolumn% - \@makeschapterhead{#1}% -\else% - \@makeschapterhead{#1}% - \@afterheading% -\fi} - -%%% End: To avoid problem with scrbook.cls (fncychap version 1.32) - -\def\@makeschapterhead#1{% - \vspace*{50\p@}% - {\parindent \z@ \raggedright - \normalfont - \interlinepenalty\@M - \DOTIS{#1} - \vskip 40\p@ - }} - -\endinput - - diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index b2363b91c..f047c1ec3 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -758,21 +758,26 @@ % This sets up the fancy chapter headings that make the documents look % at least a little better than the usual LaTeX output. % -\spx@ifundefined{ChTitleVar}{}{ - \ChNameVar{\raggedleft\normalsize\py@HeaderFamily} - \ChNumVar{\raggedleft \bfseries\Large\py@HeaderFamily} - \ChTitleVar{\raggedleft \textrm{\Huge\py@HeaderFamily}} - % This creates chapter heads without the leading \vspace*{}: +\@ifpackagewith{fncychap}{Bjarne}{ + \ChNameVar {\raggedleft\normalsize \py@HeaderFamily} + \ChNumVar {\raggedleft\Large \py@HeaderFamily} + \ChTitleVar{\raggedleft\Large \py@HeaderFamily} + % This creates (numbered) chapter heads without the leading \vspace*{}: \def\@makechapterhead#1{% {\parindent \z@ \raggedright \normalfont \ifnum \c@secnumdepth >\m@ne - \DOCH + \if@mainmatter + \DOCH + \fi \fi \interlinepenalty\@M - \DOTI{#1} - } - } -} + \if@mainmatter + \DOTI{#1}% + \else% + \DOTIS{#1}% + \fi + }} +}{}% <-- "false" clause of \@ifpackagewith % Redefine description environment so that it is usable inside fulllineitems. % diff --git a/tests/test_build_latex.py b/tests/test_build_latex.py index 1dd0dcf7b..204808c55 100644 --- a/tests/test_build_latex.py +++ b/tests/test_build_latex.py @@ -28,7 +28,7 @@ from test_build_html import ENV_WARNINGS LATEX_ENGINES = ['pdflatex', 'lualatex', 'xelatex'] DOCCLASSES = ['howto', 'manual'] STYLEFILES = ['article.sty', 'fancyhdr.sty', 'titlesec.sty', 'amsmath.sty', 'framed.sty', - 'color.sty', 'fancyvrb.sty', 'threeparttable.sty'] + 'color.sty', 'fancyvrb.sty', 'fncychap.sty', 'threeparttable.sty'] LATEX_WARNINGS = ENV_WARNINGS + """\ %(root)s/index.rst:\\d+: WARNING: unknown option: &option From 6a6843096c5bbc44f3643c3d2e6bc70c6298fea0 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Fri, 30 Sep 2016 23:42:40 +0900 Subject: [PATCH 034/297] Fix #2987: Invalid HTML has been generated if multiple IDs are assigned to a list --- CHANGES | 1 + sphinx/writers/html.py | 24 +++++++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 464f2eaa5..4c7797064 100644 --- a/CHANGES +++ b/CHANGES @@ -25,6 +25,7 @@ Bugs fixed * #3009: Bad rendering of parsed-literals in LaTeX since Sphinx 1.4.4 * #3000: ``option`` directive generates invalid HTML anchors * #2984: Invalid HTML has been generated if `html_split_index` enabled +* #2987: Invalid HTML has been generated if multiple IDs are assigned to a list Documentation ------------- diff --git a/sphinx/writers/html.py b/sphinx/writers/html.py index e15a18ab7..495aaa094 100644 --- a/sphinx/writers/html.py +++ b/sphinx/writers/html.py @@ -297,12 +297,33 @@ class HTMLTranslator(BaseTranslator): format = u'%s' self.body.append(format % (node['ids'][0], title, self.permalink_text)) - # overwritten to avoid emitting empty
        + def generate_targets_for_listing(self, node): + """Generate hyperlink targets for listings. + + Original visit_bullet_list(), visit_definition_list() and visit_enumerated_list() + generates hyperlink targets inside listing tags (
          ,
            and
            ) if multiple + IDs are assigned to listings. That is invalid DOM structure. + (This is a bug of docutils <= 0.12) + + This exports hyperlink targets before listings to make valid DOM structure. + """ + for id in node['ids'][1:]: + self.body.append('' % id) + node['ids'].remove(id) + + # overwritten def visit_bullet_list(self, node): if len(node) == 1 and node[0].tagname == 'toctree': + # avoid emitting empty
              raise nodes.SkipNode + self.generate_targets_for_listing(node) BaseTranslator.visit_bullet_list(self, node) + # overwritten + def visit_enumerated_list(self, node): + self.generate_targets_for_listing(node) + BaseTranslator.visit_enumerated_list(self, node) + # overwritten def visit_title(self, node): BaseTranslator.visit_title(self, node) @@ -648,6 +669,7 @@ class HTMLTranslator(BaseTranslator): # overwritten to do not add '' in 'visit_definition' state. def visit_definition(self, node): + self.generate_targets_for_listing(node) self.body.append(self.starttag(node, 'dd', '')) self.set_first_last(node) From 34f1ce17fd503b50e8b6b0cee8f43eae6d6a9b73 Mon Sep 17 00:00:00 2001 From: jfbu Date: Fri, 7 Oct 2016 23:25:04 +0200 Subject: [PATCH 035/297] Fix #3018: LaTeX problem with page dimensions and chapter titles New key ``'geometry'`` to ``latex_elements``. --- doc/config.rst | 6 ++++++ sphinx/templates/latex/content.tex_t | 1 + sphinx/texinputs/sphinx.sty | 18 ------------------ sphinx/writers/latex.py | 2 ++ tests/test_build_latex.py | 2 +- 5 files changed, 10 insertions(+), 19 deletions(-) diff --git a/doc/config.rst b/doc/config.rst index e257b3c95..4bb572620 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -1675,6 +1675,12 @@ These options influence LaTeX output. See further :doc:`latex`. example ``100px=1in``, one can use ``'0.01in'`` but it is more precise to use ``'47363sp'``. To obtain ``72px=1in``, use ``'1bp'``. + .. versionadded:: 1.5 + ``'geometry'`` + "geometry" package inclusion, the default definition is: + + ``'\\usepackage[margin=1in,marginparwidth=0.5in]{geometry}'``. + .. versionadded:: 1.5 ``'babel'`` "babel" package inclusion, default ``'\\usepackage{babel}'``. diff --git a/sphinx/templates/latex/content.tex_t b/sphinx/templates/latex/content.tex_t index bb246ff6b..b9466e7ce 100644 --- a/sphinx/templates/latex/content.tex_t +++ b/sphinx/templates/latex/content.tex_t @@ -6,6 +6,7 @@ \let\sphinxpxdimen\pdfpxdimen\else\newdimen\sphinxpxdimen \fi \sphinxpxdimen=<%= pxunit %>\relax <%= passoptionstopackages %> +<%= geometry %> <%= inputenc %> <%= utf8extra %> <%= cmappkg %> diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index b2363b91c..fc0ca9d39 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -102,24 +102,6 @@ \def\py@TitleColor{\color{TitleColor}} \fi -% Increase printable page size (copied from fullpage.sty) -\topmargin 0pt -\advance \topmargin by -\headheight -\advance \topmargin by -\headsep - -% attempt to work a little better for A4 users -\textheight \paperheight -\advance\textheight by -2in - -\oddsidemargin 0pt -\evensidemargin 0pt -%\evensidemargin -.25in % for ``manual size'' documents -\marginparwidth 0.5in - -\textwidth \paperwidth -\advance\textwidth by -2in - - % Style parameters and macros used by most documents here \raggedbottom \sloppy diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index ebd96662b..6353e8948 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -265,6 +265,8 @@ class LaTeXTranslator(nodes.NodeVisitor): 'classoptions': '', 'extraclassoptions': '', 'passoptionstopackages': '', + 'geometry': '\\usepackage[margin=1in,marginparwidth=0.5in]' + '{geometry}', 'inputenc': '', 'utf8extra': ('\\ifdefined\\DeclareUnicodeCharacter\n' ' \\DeclareUnicodeCharacter{00A0}{\\nobreakspace}\n' diff --git a/tests/test_build_latex.py b/tests/test_build_latex.py index 1dd0dcf7b..9c504854a 100644 --- a/tests/test_build_latex.py +++ b/tests/test_build_latex.py @@ -28,7 +28,7 @@ from test_build_html import ENV_WARNINGS LATEX_ENGINES = ['pdflatex', 'lualatex', 'xelatex'] DOCCLASSES = ['howto', 'manual'] STYLEFILES = ['article.sty', 'fancyhdr.sty', 'titlesec.sty', 'amsmath.sty', 'framed.sty', - 'color.sty', 'fancyvrb.sty', 'threeparttable.sty'] + 'color.sty', 'fancyvrb.sty', 'threeparttable.sty', 'geometry.sty'] LATEX_WARNINGS = ENV_WARNINGS + """\ %(root)s/index.rst:\\d+: WARNING: unknown option: &option From 5e2c8b9f7412ff137f28a71adca7228ee9fd5181 Mon Sep 17 00:00:00 2001 From: jfbu Date: Sun, 9 Oct 2016 22:19:25 +0200 Subject: [PATCH 036/297] Fix an issue with ``\pysigline`` in LaTeX style file. This issue was initially reported as The commit also fixes two other potential problematic code locations in sphinx.sty --- sphinx/texinputs/sphinx.sty | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index b2363b91c..3d7192fd3 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -564,12 +564,12 @@ \newlength{\py@argswidth} \newcommand{\py@sigparams}[2]{% \parbox[t]{\py@argswidth}{#1\sphinxcode{)}#2}} -\newcommand{\pysigline}[1]{\item[#1]\nopagebreak} +\newcommand{\pysigline}[1]{\item[{#1}]\nopagebreak} \newcommand{\pysiglinewithargsret}[3]{% \settowidth{\py@argswidth}{#1\sphinxcode{(}}% \addtolength{\py@argswidth}{-2\py@argswidth}% \addtolength{\py@argswidth}{\linewidth}% - \item[#1\sphinxcode{(}\py@sigparams{#2}{#3}]} + \item[{#1\sphinxcode{(}\py@sigparams{#2}{#3}}]} % Production lists % @@ -787,7 +787,7 @@ % \newenvironment{definitions}{% \begin{description}% - \def\term##1{\item[##1]\mbox{}\\*[0mm]} + \def\term##1{\item[{##1}]\mbox{}\\*[0mm]} }{% \end{description}% } From 71a36d5b339f4bf0d4ed339193f66a51126cec15 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Mon, 10 Oct 2016 23:59:08 +0900 Subject: [PATCH 037/297] Test with XeTeX on TravisCI (#3026) --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index f974364b3..6e11f6299 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,6 +23,7 @@ addons: - texlive-latex-extra - texlive-fonts-recommended - texlive-fonts-extra + - texlive-xetex install: - pip install -U pip setuptools - pip install docutils==$DOCUTILS From de7c93756cbd9d77a82a9f6381ef4b64d8f38c4c Mon Sep 17 00:00:00 2001 From: Timotheus Kampik Date: Mon, 10 Oct 2016 17:42:41 +0200 Subject: [PATCH 038/297] allow search hits in body text that are in title of other doc #2891 (#2971) * allow search hits in body text that are in title of other doc #2891 * shorten lines/add line breaks #2891 * remove out-commented LoC, simplify check #2891 --- sphinx/search/__init__.py | 3 ++- tests/roots/test-search/index.rst | 8 +++++++- tests/roots/test-search/tocitem.rst | 10 ++++++++++ tests/test_search.py | 10 ++++++++++ 4 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 tests/roots/test-search/tocitem.rst diff --git a/sphinx/search/__init__.py b/sphinx/search/__init__.py index 6e21b2f5f..09430876b 100644 --- a/sphinx/search/__init__.py +++ b/sphinx/search/__init__.py @@ -397,7 +397,8 @@ class IndexBuilder(object): # again, stemmer must not remove words from search index if not _filter(stemmed_word) and _filter(word): stemmed_word = word - if stemmed_word not in self._title_mapping and _filter(stemmed_word): + already_indexed = docname in self._title_mapping.get(stemmed_word, []) + if _filter(stemmed_word) and not already_indexed: self._mapping.setdefault(stemmed_word, set()).add(docname) def context_for_searchtool(self): diff --git a/tests/roots/test-search/index.rst b/tests/roots/test-search/index.rst index 6383d9157..21fcdf53c 100644 --- a/tests/roots/test-search/index.rst +++ b/tests/roots/test-search/index.rst @@ -11,4 +11,10 @@ Stemmer ======= zfs -findthisstemmedkey \ No newline at end of file +findthisstemmedkey + +textinheading + +.. toctree:: + + tocitem \ No newline at end of file diff --git a/tests/roots/test-search/tocitem.rst b/tests/roots/test-search/tocitem.rst new file mode 100644 index 000000000..61c42a242 --- /dev/null +++ b/tests/roots/test-search/tocitem.rst @@ -0,0 +1,10 @@ +heading 1 +========= + +lorem ipsum + + +textinheading +============= + +lorem ipsum \ No newline at end of file diff --git a/tests/test_search.py b/tests/test_search.py index 63d78df46..a363b30be 100644 --- a/tests/test_search.py +++ b/tests/test_search.py @@ -105,3 +105,13 @@ def test_stemmer_does_not_remove_short_words(app, status, warning): def test_stemmer(app, status, warning): searchindex = (app.outdir / 'searchindex.js').text() assert 'findthisstemmedkei' in searchindex + + +@with_app(testroot='search') +def test_term_in_heading_and_section(app, status, warning): + searchindex = (app.outdir / 'searchindex.js').text() + # if search term is in the title of one doc and in the text of another + # both documents should be a hit in the search index as a title, + # respectively text hit + assert 'textinhead:1' in searchindex + assert 'textinhead:0' in searchindex \ No newline at end of file From b71ea9da61d0235693f11b6ad94bef8087c09c1c Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Tue, 11 Oct 2016 00:44:01 +0900 Subject: [PATCH 039/297] Update CHANGES for PR#2971 --- CHANGES | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES b/CHANGES index 4c7797064..72d676991 100644 --- a/CHANGES +++ b/CHANGES @@ -26,6 +26,7 @@ Bugs fixed * #3000: ``option`` directive generates invalid HTML anchors * #2984: Invalid HTML has been generated if `html_split_index` enabled * #2987: Invalid HTML has been generated if multiple IDs are assigned to a list +* #2891: HTML search does not provide all the results Documentation ------------- From 34ac39e583b020198c5656fa3fb3c03b268b5088 Mon Sep 17 00:00:00 2001 From: jfbu Date: Mon, 10 Oct 2016 20:52:55 +0200 Subject: [PATCH 040/297] Update CHANGES for PR#3017 --- CHANGES | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGES b/CHANGES index 72d676991..712547b8f 100644 --- a/CHANGES +++ b/CHANGES @@ -7,6 +7,7 @@ Incompatible changes * #2983: Rename ``epub3_description`` and ``epub3_contributor`` to ``epub_description`` and ``epub_contributor``. * Remove themes/basic/defindex.html; no longer used +* Sphinx does not ship anymore (but still uses) LaTeX style file ``fncychap`` Features added -------------- @@ -27,6 +28,8 @@ Bugs fixed * #2984: Invalid HTML has been generated if `html_split_index` enabled * #2987: Invalid HTML has been generated if multiple IDs are assigned to a list * #2891: HTML search does not provide all the results +* #1986: Title in PDF Output +* #147: Problem with latex chapter style Documentation ------------- From 5b040dd7546ae0f3376187636990898c561ece2f Mon Sep 17 00:00:00 2001 From: jfbu Date: Mon, 10 Oct 2016 20:58:34 +0200 Subject: [PATCH 041/297] Update CHANGES for PR#3020 --- CHANGES | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGES b/CHANGES index 712547b8f..9c1e24a80 100644 --- a/CHANGES +++ b/CHANGES @@ -13,6 +13,8 @@ Features added -------------- * #3008: ``linkcheck`` builder ignores self-signed certificate URL +* #3020: new ``'geometry'`` key to ``latex_elements`` whose default uses + LaTeX style file ``geometry.sty`` to set page layout Bugs fixed ---------- @@ -30,6 +32,7 @@ Bugs fixed * #2891: HTML search does not provide all the results * #1986: Title in PDF Output * #147: Problem with latex chapter style +* #3018: LaTeX problem with page layout dimensions and chapter titles Documentation ------------- From e4dd1bf04bd8e5f63a3516a991554c494282f7b5 Mon Sep 17 00:00:00 2001 From: jfbu Date: Mon, 10 Oct 2016 21:12:57 +0200 Subject: [PATCH 042/297] Update CHANGES for PR#3023 --- CHANGES | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES b/CHANGES index 9c1e24a80..5d0abbad3 100644 --- a/CHANGES +++ b/CHANGES @@ -33,6 +33,7 @@ Bugs fixed * #1986: Title in PDF Output * #147: Problem with latex chapter style * #3018: LaTeX problem with page layout dimensions and chapter titles +* Fix an issue with ``\pysigline`` in LaTeX style file (ref #3023) Documentation ------------- From e43a31da12218fc303be0225f8595d54144c3cc9 Mon Sep 17 00:00:00 2001 From: jfbu Date: Mon, 10 Oct 2016 21:15:53 +0200 Subject: [PATCH 043/297] Re-insert check for LaTeX macro filename which got suppressed in merge --- tests/test_build_latex.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_build_latex.py b/tests/test_build_latex.py index 9c504854a..378f6db80 100644 --- a/tests/test_build_latex.py +++ b/tests/test_build_latex.py @@ -28,7 +28,7 @@ from test_build_html import ENV_WARNINGS LATEX_ENGINES = ['pdflatex', 'lualatex', 'xelatex'] DOCCLASSES = ['howto', 'manual'] STYLEFILES = ['article.sty', 'fancyhdr.sty', 'titlesec.sty', 'amsmath.sty', 'framed.sty', - 'color.sty', 'fancyvrb.sty', 'threeparttable.sty', 'geometry.sty'] + 'color.sty', 'fancyvrb.sty', 'fncychap.sty', 'threeparttable.sty', 'geometry.sty'] LATEX_WARNINGS = ENV_WARNINGS + """\ %(root)s/index.rst:\\d+: WARNING: unknown option: &option From dd3f12a7fca0e427283cef1dd248c796ad06b6d2 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Tue, 11 Oct 2016 18:59:12 +0900 Subject: [PATCH 044/297] Fix style-check violation --- tests/test_build_latex.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/test_build_latex.py b/tests/test_build_latex.py index 378f6db80..89a888ab3 100644 --- a/tests/test_build_latex.py +++ b/tests/test_build_latex.py @@ -27,8 +27,9 @@ from test_build_html import ENV_WARNINGS LATEX_ENGINES = ['pdflatex', 'lualatex', 'xelatex'] DOCCLASSES = ['howto', 'manual'] -STYLEFILES = ['article.sty', 'fancyhdr.sty', 'titlesec.sty', 'amsmath.sty', 'framed.sty', - 'color.sty', 'fancyvrb.sty', 'fncychap.sty', 'threeparttable.sty', 'geometry.sty'] +STYLEFILES = ['article.sty', 'fancyhdr.sty', 'titlesec.sty', 'amsmath.sty', + 'framed.sty', 'color.sty', 'fancyvrb.sty', 'fncychap.sty', + 'threeparttable.sty', 'geometry.sty'] LATEX_WARNINGS = ENV_WARNINGS + """\ %(root)s/index.rst:\\d+: WARNING: unknown option: &option From 6027bb75a58e33bb32c8c395f8ac959fd664365f Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Thu, 8 Sep 2016 17:53:23 +0900 Subject: [PATCH 045/297] Refactor: move process_only_nodes() to sphinx.util.nodes --- sphinx/environment.py | 27 +++++---------------------- sphinx/util/nodes.py | 21 +++++++++++++++++++++ tests/test_directive_only.py | 3 ++- 3 files changed, 28 insertions(+), 23 deletions(-) diff --git a/sphinx/environment.py b/sphinx/environment.py index 02b041050..c90566eea 100644 --- a/sphinx/environment.py +++ b/sphinx/environment.py @@ -37,7 +37,8 @@ from sphinx import addnodes from sphinx.io import SphinxStandaloneReader, SphinxDummyWriter, SphinxFileInput from sphinx.util import url_re, get_matching_docs, docname_join, split_into, \ FilenameUniqDict, split_index_msg -from sphinx.util.nodes import clean_astext, WarningStream, is_translatable +from sphinx.util.nodes import clean_astext, WarningStream, is_translatable, \ + process_only_nodes from sphinx.util.osutil import SEP, getcwd, fs_encoding, ensuredir from sphinx.util.images import guess_mimetype from sphinx.util.i18n import find_catalog_files, get_image_filename_for_language, \ @@ -1058,7 +1059,7 @@ class BuildEnvironment(object): # the document does not exist anymore: return a dummy node that # renders to nothing return nodes.paragraph() - self.process_only_nodes(toc, builder, docname) + process_only_nodes(toc, builder.tags, warn_node=self.warn_node) for node in toc.traverse(nodes.reference): node['refuri'] = node['anchorname'] or '#' return toc @@ -1270,7 +1271,7 @@ class BuildEnvironment(object): maxdepth = self.metadata[ref].get('tocdepth', 0) if ref not in toctree_ancestors or (prune and maxdepth > 0): self._toctree_prune(toc, 2, maxdepth, collapse) - self.process_only_nodes(toc, builder, ref) + process_only_nodes(toc, builder.tags, warn_node=self.warn_node) if title and toc.children and len(toc.children) == 1: child = toc.children[0] for refnode in child.traverse(nodes.reference): @@ -1403,7 +1404,7 @@ class BuildEnvironment(object): node.replace_self(newnode or contnode) # remove only-nodes that do not belong to our builder - self.process_only_nodes(doctree, builder, fromdocname) + process_only_nodes(doctree, builder.tags, warn_node=self.warn_node) # allow custom references to be resolved builder.app.emit('doctree-resolved', doctree, fromdocname) @@ -1492,24 +1493,6 @@ class BuildEnvironment(object): newnode[0]['classes'].append(res_role.replace(':', '-')) return newnode - def process_only_nodes(self, doctree, builder, fromdocname=None): - # A comment on the comment() nodes being inserted: replacing by [] would - # result in a "Losing ids" exception if there is a target node before - # the only node, so we make sure docutils can transfer the id to - # something, even if it's just a comment and will lose the id anyway... - for node in doctree.traverse(addnodes.only): - try: - ret = builder.tags.eval_condition(node['expr']) - except Exception as err: - self.warn_node('exception while evaluating only ' - 'directive expression: %s' % err, node) - node.replace_self(node.children or nodes.comment()) - else: - if ret: - node.replace_self(node.children or nodes.comment()) - else: - node.replace_self(nodes.comment()) - def assign_section_numbers(self): """Assign a section number to each heading under a numbered toctree.""" # a list of all docnames whose section numbers changed diff --git a/sphinx/util/nodes.py b/sphinx/util/nodes.py index 0fb1b1e12..2b899afce 100644 --- a/sphinx/util/nodes.py +++ b/sphinx/util/nodes.py @@ -321,6 +321,27 @@ def set_role_source_info(inliner, lineno, node): node.source, node.line = inliner.reporter.get_source_and_line(lineno) +def process_only_nodes(doctree, tags, warn_node=None): + # A comment on the comment() nodes being inserted: replacing by [] would + # result in a "Losing ids" exception if there is a target node before + # the only node, so we make sure docutils can transfer the id to + # something, even if it's just a comment and will lose the id anyway... + for node in doctree.traverse(addnodes.only): + try: + ret = tags.eval_condition(node['expr']) + except Exception as err: + if warn_node is None: + raise err + warn_node('exception while evaluating only ' + 'directive expression: %s' % err, node) + node.replace_self(node.children or nodes.comment()) + else: + if ret: + node.replace_self(node.children or nodes.comment()) + else: + node.replace_self(nodes.comment()) + + # monkey-patch Element.copy to copy the rawsource and line def _new_copy(self): diff --git a/tests/test_directive_only.py b/tests/test_directive_only.py index 7e499a3a1..def064c5a 100644 --- a/tests/test_directive_only.py +++ b/tests/test_directive_only.py @@ -12,6 +12,7 @@ import re from docutils import nodes +from sphinx.util.nodes import process_only_nodes from util import with_app @@ -46,7 +47,7 @@ def test_sectioning(app, status, warning): app.builder.build(['only']) doctree = app.env.get_doctree('only') - app.env.process_only_nodes(doctree, app.builder) + process_only_nodes(doctree, app.builder.tags) parts = [getsects(n) for n in [_n for _n in doctree.children if isinstance(_n, nodes.section)]] From 17c222a7069e340d4683fd5ad7eac68f4aa972e6 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Thu, 8 Sep 2016 13:02:37 +0900 Subject: [PATCH 046/297] Separate indexentries manager to sphinx.environment.manager.indexentries --- .../__init__.py} | 161 ++-------------- sphinx/environment/managers/__init__.py | 27 +++ sphinx/environment/managers/indexentries.py | 172 ++++++++++++++++++ 3 files changed, 219 insertions(+), 141 deletions(-) rename sphinx/{environment.py => environment/__init__.py} (91%) create mode 100644 sphinx/environment/managers/__init__.py create mode 100644 sphinx/environment/managers/indexentries.py diff --git a/sphinx/environment.py b/sphinx/environment/__init__.py similarity index 91% rename from sphinx/environment.py rename to sphinx/environment/__init__.py index c90566eea..8fa580c01 100644 --- a/sphinx/environment.py +++ b/sphinx/environment/__init__.py @@ -14,16 +14,12 @@ import os import sys import time import types -import bisect import codecs -import string import fnmatch -import unicodedata from os import path from glob import glob -from itertools import groupby -from six import iteritems, itervalues, text_type, class_types, next +from six import iteritems, itervalues, class_types, next from six.moves import cPickle as pickle from docutils import nodes from docutils.io import NullOutput @@ -35,8 +31,7 @@ from docutils.frontend import OptionParser from sphinx import addnodes from sphinx.io import SphinxStandaloneReader, SphinxDummyWriter, SphinxFileInput -from sphinx.util import url_re, get_matching_docs, docname_join, split_into, \ - FilenameUniqDict, split_index_msg +from sphinx.util import url_re, get_matching_docs, docname_join, FilenameUniqDict from sphinx.util.nodes import clean_astext, WarningStream, is_translatable, \ process_only_nodes from sphinx.util.osutil import SEP, getcwd, fs_encoding, ensuredir @@ -49,9 +44,9 @@ from sphinx.util.matching import compile_matchers from sphinx.util.parallel import ParallelTasks, parallel_available, make_chunks from sphinx.util.websupport import is_commentable from sphinx.errors import SphinxError, ExtensionError -from sphinx.locale import _ from sphinx.versioning import add_uids, merge_doctrees from sphinx.transforms import SphinxContentsFilter +from sphinx.environment.managers.indexentries import IndexEntries default_settings = { @@ -209,6 +204,14 @@ class BuildEnvironment(object): # attributes of "any" cross references self.ref_context = {} + self.init_managers() + + def init_managers(self): + self.managers = {} + for manager_class in [IndexEntries]: + manager = manager_class(self) + self.managers[manager.name] = manager + def set_warnfunc(self, func): self._warnfunc = func self.settings['warning_stream'] = WarningStream(func) @@ -259,7 +262,6 @@ class BuildEnvironment(object): self.toc_fignumbers.pop(docname, None) self.toc_num_entries.pop(docname, None) self.toctree_includes.pop(docname, None) - self.indexentries.pop(docname, None) self.glob_toctrees.discard(docname) self.numbered_toctrees.discard(docname) self.images.purge_doc(docname) @@ -273,6 +275,9 @@ class BuildEnvironment(object): new = [change for change in changes if change[1] != docname] changes[:] = new + for manager in itervalues(self.managers): + manager.clear_doc(docname) + for domain in self.domains.values(): domain.clear_doc(docname) @@ -297,7 +302,6 @@ class BuildEnvironment(object): # toc_secnumbers and toc_fignumbers are not assigned during read if docname in other.toctree_includes: self.toctree_includes[docname] = other.toctree_includes[docname] - self.indexentries[docname] = other.indexentries[docname] if docname in other.glob_toctrees: self.glob_toctrees.add(docname) if docname in other.numbered_toctrees: @@ -312,6 +316,8 @@ class BuildEnvironment(object): self.versionchanges.setdefault(version, []).extend( change for change in changes if change[1] in docnames) + for manager in itervalues(self.managers): + manager.merge_other(docnames, other) for domainname, domain in self.domains.items(): domain.merge_domaindata(docnames, other.domaindata[domainname]) app.emit('env-merge-info', self, docnames, other) @@ -682,8 +688,9 @@ class BuildEnvironment(object): self.process_downloads(docname, doctree) self.process_metadata(docname, doctree) self.create_title_from(docname, doctree) - self.note_indexentries_from(docname, doctree) self.build_toc_from(docname, doctree) + for manager in itervalues(self.managers): + manager.process_doc(docname, doctree) for domain in itervalues(self.domains): domain.process_doc(self, docname, doctree) @@ -948,23 +955,6 @@ class BuildEnvironment(object): self.titles[docname] = titlenode self.longtitles[docname] = longtitlenode - def note_indexentries_from(self, docname, document): - entries = self.indexentries[docname] = [] - for node in document.traverse(addnodes.index): - try: - for entry in node['entries']: - split_index_msg(entry[0], entry[1]) - except ValueError as exc: - self.warn_node(exc, node) - node.parent.remove(node) - else: - for entry in node['entries']: - if len(entry) == 5: - # Since 1.4: new index structure including index_key (5th column) - entries.append(entry) - else: - entries.append(entry + (None,)) - def note_toctree(self, docname, toctreenode): """Note a TOC tree directive in a document and gather information about file relations from it. @@ -1636,119 +1626,8 @@ class BuildEnvironment(object): def create_index(self, builder, group_entries=True, _fixre=re.compile(r'(.*) ([(][^()]*[)])')): - """Create the real index from the collected index entries.""" - new = {} - - def add_entry(word, subword, link=True, dic=new, key=None): - # Force the word to be unicode if it's a ASCII bytestring. - # This will solve problems with unicode normalization later. - # For instance the RFC role will add bytestrings at the moment - word = text_type(word) - entry = dic.get(word) - if not entry: - dic[word] = entry = [[], {}, key] - if subword: - add_entry(subword, '', link=link, dic=entry[1], key=key) - elif link: - try: - uri = builder.get_relative_uri('genindex', fn) + '#' + tid - except NoUri: - pass - else: - # maintain links in sorted/deterministic order - bisect.insort(entry[0], (main, uri)) - - for fn, entries in iteritems(self.indexentries): - # new entry types must be listed in directives/other.py! - for type, value, tid, main, index_key in entries: - try: - if type == 'single': - try: - entry, subentry = split_into(2, 'single', value) - except ValueError: - entry, = split_into(1, 'single', value) - subentry = '' - add_entry(entry, subentry, key=index_key) - elif type == 'pair': - first, second = split_into(2, 'pair', value) - add_entry(first, second, key=index_key) - add_entry(second, first, key=index_key) - elif type == 'triple': - first, second, third = split_into(3, 'triple', value) - add_entry(first, second+' '+third, key=index_key) - add_entry(second, third+', '+first, key=index_key) - add_entry(third, first+' '+second, key=index_key) - elif type == 'see': - first, second = split_into(2, 'see', value) - add_entry(first, _('see %s') % second, link=False, - key=index_key) - elif type == 'seealso': - first, second = split_into(2, 'see', value) - add_entry(first, _('see also %s') % second, link=False, - key=index_key) - else: - self.warn(fn, 'unknown index entry type %r' % type) - except ValueError as err: - self.warn(fn, str(err)) - - # sort the index entries; put all symbols at the front, even those - # following the letters in ASCII, this is where the chr(127) comes from - def keyfunc(entry, lcletters=string.ascii_lowercase + '_'): - lckey = unicodedata.normalize('NFD', entry[0].lower()) - if lckey[0:1] in lcletters: - lckey = chr(127) + lckey - # ensure a determinstic order *within* letters by also sorting on - # the entry itself - return (lckey, entry[0]) - newlist = sorted(new.items(), key=keyfunc) - - if group_entries: - # fixup entries: transform - # func() (in module foo) - # func() (in module bar) - # into - # func() - # (in module foo) - # (in module bar) - oldkey = '' - oldsubitems = None - i = 0 - while i < len(newlist): - key, (targets, subitems, _key) = newlist[i] - # cannot move if it has subitems; structure gets too complex - if not subitems: - m = _fixre.match(key) - if m: - if oldkey == m.group(1): - # prefixes match: add entry as subitem of the - # previous entry - oldsubitems.setdefault(m.group(2), [[], {}, _key])[0].\ - extend(targets) - del newlist[i] - continue - oldkey = m.group(1) - else: - oldkey = key - oldsubitems = subitems - i += 1 - - # group the entries by letter - def keyfunc2(item, letters=string.ascii_uppercase + '_'): - # hack: mutating the subitems dicts to a list in the keyfunc - k, v = item - v[1] = sorted((si, se) for (si, (se, void, void)) in iteritems(v[1])) - if v[2] is None: - # now calculate the key - letter = unicodedata.normalize('NFD', k[0])[0].upper() - if letter in letters: - return letter - else: - # get all other symbols under one heading - return _('Symbols') - else: - return v[2] - return [(key_, list(group)) - for (key_, group) in groupby(newlist, keyfunc2)] + entries = self.managers['indexentries'] + return entries.create_index(builder, group_entries=group_entries, _fixre=_fixre) def collect_relations(self): traversed = set() diff --git a/sphinx/environment/managers/__init__.py b/sphinx/environment/managers/__init__.py new file mode 100644 index 000000000..ba8bce51b --- /dev/null +++ b/sphinx/environment/managers/__init__.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +""" + sphinx.environment.managers + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Manager components for sphinx.environment. + + :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + + +class EnvironmentManager(object): + """Base class for sphinx.environment managers.""" + name = None + + def __init__(self, env): + self.env = env + + def clear_doc(self, docname): + raise NotImplementedError + + def merge_other(self, docnames, other): + raise NotImplementedError + + def process_doc(self, docname, doctree): + raise NotImplementedError diff --git a/sphinx/environment/managers/indexentries.py b/sphinx/environment/managers/indexentries.py new file mode 100644 index 000000000..946f5a7ed --- /dev/null +++ b/sphinx/environment/managers/indexentries.py @@ -0,0 +1,172 @@ +# -*- coding: utf-8 -*- +""" + sphinx.environment.managers.indexentries + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Index entries manager for sphinx.environment. + + :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" +import re +import bisect +import unicodedata +import string +from itertools import groupby + +from six import text_type + +from sphinx import addnodes +from sphinx.util import iteritems, split_index_msg, split_into +from sphinx.locale import _ +from sphinx.environment.managers import EnvironmentManager + + +class IndexEntries(EnvironmentManager): + name = 'indexentries' + + def __init__(self, env): + super(IndexEntries, self).__init__(env) + self.data = env.indexentries + + def clear_doc(self, docname): + self.data.pop(docname, None) + + def merge_other(self, docnames, other): + for docname in docnames: + self.data[docname] = other.indexentries[docname] + + def process_doc(self, docname, doctree): + entries = self.data[docname] = [] + for node in doctree.traverse(addnodes.index): + try: + for entry in node['entries']: + split_index_msg(entry[0], entry[1]) + except ValueError as exc: + self.env.warn_node(exc, node) + node.parent.remove(node) + else: + for entry in node['entries']: + if len(entry) == 5: + # Since 1.4: new index structure including index_key (5th column) + entries.append(entry) + else: + entries.append(entry + (None,)) + + def create_index(self, builder, group_entries=True, + _fixre=re.compile(r'(.*) ([(][^()]*[)])')): + """Create the real index from the collected index entries.""" + from sphinx.environment import NoUri + + new = {} + + def add_entry(word, subword, link=True, dic=new, key=None): + # Force the word to be unicode if it's a ASCII bytestring. + # This will solve problems with unicode normalization later. + # For instance the RFC role will add bytestrings at the moment + word = text_type(word) + entry = dic.get(word) + if not entry: + dic[word] = entry = [[], {}, key] + if subword: + add_entry(subword, '', link=link, dic=entry[1], key=key) + elif link: + try: + uri = builder.get_relative_uri('genindex', fn) + '#' + tid + except NoUri: + pass + else: + # maintain links in sorted/deterministic order + bisect.insort(entry[0], (main, uri)) + + for fn, entries in iteritems(self.data): + # new entry types must be listed in directives/other.py! + for type, value, tid, main, index_key in entries: + try: + if type == 'single': + try: + entry, subentry = split_into(2, 'single', value) + except ValueError: + entry, = split_into(1, 'single', value) + subentry = '' + add_entry(entry, subentry, key=index_key) + elif type == 'pair': + first, second = split_into(2, 'pair', value) + add_entry(first, second, key=index_key) + add_entry(second, first, key=index_key) + elif type == 'triple': + first, second, third = split_into(3, 'triple', value) + add_entry(first, second+' '+third, key=index_key) + add_entry(second, third+', '+first, key=index_key) + add_entry(third, first+' '+second, key=index_key) + elif type == 'see': + first, second = split_into(2, 'see', value) + add_entry(first, _('see %s') % second, link=False, + key=index_key) + elif type == 'seealso': + first, second = split_into(2, 'see', value) + add_entry(first, _('see also %s') % second, link=False, + key=index_key) + else: + self.env.warn(fn, 'unknown index entry type %r' % type) + except ValueError as err: + self.env.warn(fn, str(err)) + + # sort the index entries; put all symbols at the front, even those + # following the letters in ASCII, this is where the chr(127) comes from + def keyfunc(entry, lcletters=string.ascii_lowercase + '_'): + lckey = unicodedata.normalize('NFD', entry[0].lower()) + if lckey[0:1] in lcletters: + lckey = chr(127) + lckey + # ensure a determinstic order *within* letters by also sorting on + # the entry itself + return (lckey, entry[0]) + newlist = sorted(new.items(), key=keyfunc) + + if group_entries: + # fixup entries: transform + # func() (in module foo) + # func() (in module bar) + # into + # func() + # (in module foo) + # (in module bar) + oldkey = '' + oldsubitems = None + i = 0 + while i < len(newlist): + key, (targets, subitems, _key) = newlist[i] + # cannot move if it has subitems; structure gets too complex + if not subitems: + m = _fixre.match(key) + if m: + if oldkey == m.group(1): + # prefixes match: add entry as subitem of the + # previous entry + oldsubitems.setdefault(m.group(2), [[], {}, _key])[0].\ + extend(targets) + del newlist[i] + continue + oldkey = m.group(1) + else: + oldkey = key + oldsubitems = subitems + i += 1 + + # group the entries by letter + def keyfunc2(item, letters=string.ascii_uppercase + '_'): + # hack: mutating the subitems dicts to a list in the keyfunc + k, v = item + v[1] = sorted((si, se) for (si, (se, void, void)) in iteritems(v[1])) + if v[2] is None: + # now calculate the key + letter = unicodedata.normalize('NFD', k[0])[0].upper() + if letter in letters: + return letter + else: + # get all other symbols under one heading + return _('Symbols') + else: + return v[2] + return [(key_, list(group)) + for (key_, group) in groupby(newlist, keyfunc2)] From dc985ed479f9a5ac6baaf8820c5f1b19354772a6 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Fri, 9 Sep 2016 16:31:14 +0900 Subject: [PATCH 047/297] Separate toctree manager to sphinx.environment.managers.toctree --- sphinx/environment/__init__.py | 510 +--------------------- sphinx/environment/managers/toctree.py | 561 +++++++++++++++++++++++++ 2 files changed, 572 insertions(+), 499 deletions(-) create mode 100644 sphinx/environment/managers/toctree.py diff --git a/sphinx/environment/__init__.py b/sphinx/environment/__init__.py index 8fa580c01..3181d8f74 100644 --- a/sphinx/environment/__init__.py +++ b/sphinx/environment/__init__.py @@ -31,7 +31,7 @@ from docutils.frontend import OptionParser from sphinx import addnodes from sphinx.io import SphinxStandaloneReader, SphinxDummyWriter, SphinxFileInput -from sphinx.util import url_re, get_matching_docs, docname_join, FilenameUniqDict +from sphinx.util import get_matching_docs, docname_join, FilenameUniqDict from sphinx.util.nodes import clean_astext, WarningStream, is_translatable, \ process_only_nodes from sphinx.util.osutil import SEP, getcwd, fs_encoding, ensuredir @@ -47,6 +47,7 @@ from sphinx.errors import SphinxError, ExtensionError from sphinx.versioning import add_uids, merge_doctrees from sphinx.transforms import SphinxContentsFilter from sphinx.environment.managers.indexentries import IndexEntries +from sphinx.environment.managers.toctree import Toctree default_settings = { @@ -208,7 +209,7 @@ class BuildEnvironment(object): def init_managers(self): self.managers = {} - for manager_class in [IndexEntries]: + for manager_class in [IndexEntries, Toctree]: manager = manager_class(self) self.managers[manager.name] = manager @@ -257,20 +258,9 @@ class BuildEnvironment(object): self.dependencies.pop(docname, None) self.titles.pop(docname, None) self.longtitles.pop(docname, None) - self.tocs.pop(docname, None) - self.toc_secnumbers.pop(docname, None) - self.toc_fignumbers.pop(docname, None) - self.toc_num_entries.pop(docname, None) - self.toctree_includes.pop(docname, None) - self.glob_toctrees.discard(docname) - self.numbered_toctrees.discard(docname) self.images.purge_doc(docname) self.dlfiles.purge_doc(docname) - for subfn, fnset in list(self.files_to_rebuild.items()): - fnset.discard(docname) - if not fnset: - del self.files_to_rebuild[subfn] for version, changes in self.versionchanges.items(): new = [change for change in changes if change[1] != docname] changes[:] = new @@ -297,21 +287,10 @@ class BuildEnvironment(object): self.dependencies[docname] = other.dependencies[docname] self.titles[docname] = other.titles[docname] self.longtitles[docname] = other.longtitles[docname] - self.tocs[docname] = other.tocs[docname] - self.toc_num_entries[docname] = other.toc_num_entries[docname] - # toc_secnumbers and toc_fignumbers are not assigned during read - if docname in other.toctree_includes: - self.toctree_includes[docname] = other.toctree_includes[docname] - if docname in other.glob_toctrees: - self.glob_toctrees.add(docname) - if docname in other.numbered_toctrees: - self.numbered_toctrees.add(docname) self.images.merge_other(docnames, other.images) self.dlfiles.merge_other(docnames, other.dlfiles) - for subfn, fnset in other.files_to_rebuild.items(): - self.files_to_rebuild.setdefault(subfn, set()).update(fnset & docnames) for version, changes in other.versionchanges.items(): self.versionchanges.setdefault(version, []).extend( change for change in changes if change[1] in docnames) @@ -614,7 +593,8 @@ class BuildEnvironment(object): self._warnfunc(*warning, **kwargs) def check_dependents(self, already): - to_rewrite = self.assign_section_numbers() + self.assign_figure_numbers() + toctree = self.managers['toctree'] + to_rewrite = toctree.assign_section_numbers() + toctree.assign_figure_numbers() for docname in set(to_rewrite): if docname not in already: yield docname @@ -688,7 +668,6 @@ class BuildEnvironment(object): self.process_downloads(docname, doctree) self.process_metadata(docname, doctree) self.create_title_from(docname, doctree) - self.build_toc_from(docname, doctree) for manager in itervalues(self.managers): manager.process_doc(docname, doctree) for domain in itervalues(self.domains): @@ -959,121 +938,15 @@ class BuildEnvironment(object): """Note a TOC tree directive in a document and gather information about file relations from it. """ - if toctreenode['glob']: - self.glob_toctrees.add(docname) - if toctreenode.get('numbered'): - self.numbered_toctrees.add(docname) - includefiles = toctreenode['includefiles'] - for includefile in includefiles: - # note that if the included file is rebuilt, this one must be - # too (since the TOC of the included file could have changed) - self.files_to_rebuild.setdefault(includefile, set()).add(docname) - self.toctree_includes.setdefault(docname, []).extend(includefiles) - - def build_toc_from(self, docname, document): - """Build a TOC from the doctree and store it in the inventory.""" - numentries = [0] # nonlocal again... - - def traverse_in_section(node, cls): - """Like traverse(), but stay within the same section.""" - result = [] - if isinstance(node, cls): - result.append(node) - for child in node.children: - if isinstance(child, nodes.section): - continue - result.extend(traverse_in_section(child, cls)) - return result - - def build_toc(node, depth=1): - entries = [] - for sectionnode in node: - # find all toctree nodes in this section and add them - # to the toc (just copying the toctree node which is then - # resolved in self.get_and_resolve_doctree) - if isinstance(sectionnode, addnodes.only): - onlynode = addnodes.only(expr=sectionnode['expr']) - blist = build_toc(sectionnode, depth) - if blist: - onlynode += blist.children - entries.append(onlynode) - continue - if not isinstance(sectionnode, nodes.section): - for toctreenode in traverse_in_section(sectionnode, - addnodes.toctree): - item = toctreenode.copy() - entries.append(item) - # important: do the inventory stuff - self.note_toctree(docname, toctreenode) - continue - title = sectionnode[0] - # copy the contents of the section title, but without references - # and unnecessary stuff - visitor = SphinxContentsFilter(document) - title.walkabout(visitor) - nodetext = visitor.get_entry_text() - if not numentries[0]: - # for the very first toc entry, don't add an anchor - # as it is the file's title anyway - anchorname = '' - else: - anchorname = '#' + sectionnode['ids'][0] - numentries[0] += 1 - # make these nodes: - # list_item -> compact_paragraph -> reference - reference = nodes.reference( - '', '', internal=True, refuri=docname, - anchorname=anchorname, *nodetext) - para = addnodes.compact_paragraph('', '', reference) - item = nodes.list_item('', para) - sub_item = build_toc(sectionnode, depth + 1) - item += sub_item - entries.append(item) - if entries: - return nodes.bullet_list('', *entries) - return [] - toc = build_toc(document) - if toc: - self.tocs[docname] = toc - else: - self.tocs[docname] = nodes.bullet_list('') - self.toc_num_entries[docname] = numentries[0] + self.managers['toctree'].note_toctree(docname, toctreenode) def get_toc_for(self, docname, builder): """Return a TOC nodetree -- for use on the same page only!""" - tocdepth = self.metadata[docname].get('tocdepth', 0) - try: - toc = self.tocs[docname].deepcopy() - self._toctree_prune(toc, 2, tocdepth) - except KeyError: - # the document does not exist anymore: return a dummy node that - # renders to nothing - return nodes.paragraph() - process_only_nodes(toc, builder.tags, warn_node=self.warn_node) - for node in toc.traverse(nodes.reference): - node['refuri'] = node['anchorname'] or '#' - return toc + return self.managers['toctree'].get_toc_for(docname, builder) def get_toctree_for(self, docname, builder, collapse, **kwds): """Return the global TOC nodetree.""" - doctree = self.get_doctree(self.config.master_doc) - toctrees = [] - if 'includehidden' not in kwds: - kwds['includehidden'] = True - if 'maxdepth' not in kwds: - kwds['maxdepth'] = 0 - kwds['collapse'] = collapse - for toctreenode in doctree.traverse(addnodes.toctree): - toctree = self.resolve_toctree(docname, builder, toctreenode, - prune=True, **kwds) - if toctree: - toctrees.append(toctree) - if not toctrees: - return None - result = toctrees[0] - for toctree in toctrees[1:]: - result.extend(toctree.children) - return result + return self.managers['toctree'].get_toctree_for(docname, builder, collapse, **kwds) def get_domain(self, domainname): """Return the domain instance with the specified name. @@ -1120,39 +993,6 @@ class BuildEnvironment(object): return doctree - def _toctree_prune(self, node, depth, maxdepth, collapse=False): - """Utility: Cut a TOC at a specified depth.""" - for subnode in node.children[:]: - if isinstance(subnode, (addnodes.compact_paragraph, - nodes.list_item)): - # for

              and

            • , just recurse - self._toctree_prune(subnode, depth, maxdepth, collapse) - elif isinstance(subnode, nodes.bullet_list): - # for
                , determine if the depth is too large or if the - # entry is to be collapsed - if maxdepth > 0 and depth > maxdepth: - subnode.parent.replace(subnode, []) - else: - # cull sub-entries whose parents aren't 'current' - if (collapse and depth > 1 and - 'iscurrent' not in subnode.parent): - subnode.parent.remove(subnode) - else: - # recurse on visible children - self._toctree_prune(subnode, depth+1, maxdepth, collapse) - - def get_toctree_ancestors(self, docname): - parent = {} - for p, children in iteritems(self.toctree_includes): - for child in children: - parent[child] = p - ancestors = [] - d = docname - while d in parent and d not in ancestors: - ancestors.append(d) - d = parent[d] - return ancestors - def resolve_toctree(self, docname, builder, toctree, prune=True, maxdepth=0, titles_only=False, collapse=False, includehidden=False): """Resolve a *toctree* node into individual bullet lists with titles @@ -1166,196 +1006,9 @@ class BuildEnvironment(object): If *collapse* is True, all branches not containing docname will be collapsed. """ - if toctree.get('hidden', False) and not includehidden: - return None - - # For reading the following two helper function, it is useful to keep - # in mind the node structure of a toctree (using HTML-like node names - # for brevity): - # - # - # - # The transformation is made in two passes in order to avoid - # interactions between marking and pruning the tree (see bug #1046). - - toctree_ancestors = self.get_toctree_ancestors(docname) - - def _toctree_add_classes(node, depth): - """Add 'toctree-l%d' and 'current' classes to the toctree.""" - for subnode in node.children: - if isinstance(subnode, (addnodes.compact_paragraph, - nodes.list_item)): - # for

                and

              • , indicate the depth level and recurse - subnode['classes'].append('toctree-l%d' % (depth-1)) - _toctree_add_classes(subnode, depth) - elif isinstance(subnode, nodes.bullet_list): - # for
                  , just recurse - _toctree_add_classes(subnode, depth+1) - elif isinstance(subnode, nodes.reference): - # for , identify which entries point to the current - # document and therefore may not be collapsed - if subnode['refuri'] == docname: - if not subnode['anchorname']: - # give the whole branch a 'current' class - # (useful for styling it differently) - branchnode = subnode - while branchnode: - branchnode['classes'].append('current') - branchnode = branchnode.parent - # mark the list_item as "on current page" - if subnode.parent.parent.get('iscurrent'): - # but only if it's not already done - return - while subnode: - subnode['iscurrent'] = True - subnode = subnode.parent - - def _entries_from_toctree(toctreenode, parents, - separate=False, subtree=False): - """Return TOC entries for a toctree node.""" - refs = [(e[0], e[1]) for e in toctreenode['entries']] - entries = [] - for (title, ref) in refs: - try: - refdoc = None - if url_re.match(ref): - if title is None: - title = ref - reference = nodes.reference('', '', internal=False, - refuri=ref, anchorname='', - *[nodes.Text(title)]) - para = addnodes.compact_paragraph('', '', reference) - item = nodes.list_item('', para) - toc = nodes.bullet_list('', item) - elif ref == 'self': - # 'self' refers to the document from which this - # toctree originates - ref = toctreenode['parent'] - if not title: - title = clean_astext(self.titles[ref]) - reference = nodes.reference('', '', internal=True, - refuri=ref, - anchorname='', - *[nodes.Text(title)]) - para = addnodes.compact_paragraph('', '', reference) - item = nodes.list_item('', para) - # don't show subitems - toc = nodes.bullet_list('', item) - else: - if ref in parents: - self.warn(ref, 'circular toctree references ' - 'detected, ignoring: %s <- %s' % - (ref, ' <- '.join(parents))) - continue - refdoc = ref - toc = self.tocs[ref].deepcopy() - maxdepth = self.metadata[ref].get('tocdepth', 0) - if ref not in toctree_ancestors or (prune and maxdepth > 0): - self._toctree_prune(toc, 2, maxdepth, collapse) - process_only_nodes(toc, builder.tags, warn_node=self.warn_node) - if title and toc.children and len(toc.children) == 1: - child = toc.children[0] - for refnode in child.traverse(nodes.reference): - if refnode['refuri'] == ref and \ - not refnode['anchorname']: - refnode.children = [nodes.Text(title)] - if not toc.children: - # empty toc means: no titles will show up in the toctree - self.warn_node( - 'toctree contains reference to document %r that ' - 'doesn\'t have a title: no link will be generated' - % ref, toctreenode) - except KeyError: - # this is raised if the included file does not exist - self.warn_node( - 'toctree contains reference to nonexisting document %r' - % ref, toctreenode) - else: - # if titles_only is given, only keep the main title and - # sub-toctrees - if titles_only: - # delete everything but the toplevel title(s) - # and toctrees - for toplevel in toc: - # nodes with length 1 don't have any children anyway - if len(toplevel) > 1: - subtrees = toplevel.traverse(addnodes.toctree) - if subtrees: - toplevel[1][:] = subtrees - else: - toplevel.pop(1) - # resolve all sub-toctrees - for subtocnode in toc.traverse(addnodes.toctree): - if not (subtocnode.get('hidden', False) and - not includehidden): - i = subtocnode.parent.index(subtocnode) + 1 - for item in _entries_from_toctree( - subtocnode, [refdoc] + parents, - subtree=True): - subtocnode.parent.insert(i, item) - i += 1 - subtocnode.parent.remove(subtocnode) - if separate: - entries.append(toc) - else: - entries.extend(toc.children) - if not subtree and not separate: - ret = nodes.bullet_list() - ret += entries - return [ret] - return entries - - maxdepth = maxdepth or toctree.get('maxdepth', -1) - if not titles_only and toctree.get('titlesonly', False): - titles_only = True - if not includehidden and toctree.get('includehidden', False): - includehidden = True - - # NOTE: previously, this was separate=True, but that leads to artificial - # separation when two or more toctree entries form a logical unit, so - # separating mode is no longer used -- it's kept here for history's sake - tocentries = _entries_from_toctree(toctree, [], separate=False) - if not tocentries: - return None - - newnode = addnodes.compact_paragraph('', '') - caption = toctree.attributes.get('caption') - if caption: - caption_node = nodes.caption(caption, '', *[nodes.Text(caption)]) - caption_node.line = toctree.line - caption_node.source = toctree.source - caption_node.rawsource = toctree['rawcaption'] - if hasattr(toctree, 'uid'): - # move uid to caption_node to translate it - caption_node.uid = toctree.uid - del toctree.uid - newnode += caption_node - newnode.extend(tocentries) - newnode['toctree'] = True - - # prune the tree to maxdepth, also set toc depth and current classes - _toctree_add_classes(newnode, 1) - self._toctree_prune(newnode, 1, prune and maxdepth or 0, collapse) - - if len(newnode[-1]) == 0: # No titles found - return None - - # set the target paths in the toctrees (they are not known at TOC - # generation time) - for refnode in newnode.traverse(nodes.reference): - if not url_re.match(refnode['refuri']): - refnode['refuri'] = builder.get_relative_uri( - docname, refnode['refuri']) + refnode['anchorname'] - return newnode + return self.managers['toctree'].resolve_toctree(docname, builder, toctree, prune, + maxdepth, titles_only, collapse, + includehidden) def resolve_references(self, doctree, fromdocname, builder): for node in doctree.traverse(addnodes.pending_xref): @@ -1483,147 +1136,6 @@ class BuildEnvironment(object): newnode[0]['classes'].append(res_role.replace(':', '-')) return newnode - def assign_section_numbers(self): - """Assign a section number to each heading under a numbered toctree.""" - # a list of all docnames whose section numbers changed - rewrite_needed = [] - - assigned = set() - old_secnumbers = self.toc_secnumbers - self.toc_secnumbers = {} - - def _walk_toc(node, secnums, depth, titlenode=None): - # titlenode is the title of the document, it will get assigned a - # secnumber too, so that it shows up in next/prev/parent rellinks - for subnode in node.children: - if isinstance(subnode, nodes.bullet_list): - numstack.append(0) - _walk_toc(subnode, secnums, depth-1, titlenode) - numstack.pop() - titlenode = None - elif isinstance(subnode, nodes.list_item): - _walk_toc(subnode, secnums, depth, titlenode) - titlenode = None - elif isinstance(subnode, addnodes.only): - # at this stage we don't know yet which sections are going - # to be included; just include all of them, even if it leads - # to gaps in the numbering - _walk_toc(subnode, secnums, depth, titlenode) - titlenode = None - elif isinstance(subnode, addnodes.compact_paragraph): - numstack[-1] += 1 - if depth > 0: - number = tuple(numstack) - else: - number = None - secnums[subnode[0]['anchorname']] = \ - subnode[0]['secnumber'] = number - if titlenode: - titlenode['secnumber'] = number - titlenode = None - elif isinstance(subnode, addnodes.toctree): - _walk_toctree(subnode, depth) - - def _walk_toctree(toctreenode, depth): - if depth == 0: - return - for (title, ref) in toctreenode['entries']: - if url_re.match(ref) or ref == 'self' or ref in assigned: - # don't mess with those - continue - if ref in self.tocs: - secnums = self.toc_secnumbers[ref] = {} - assigned.add(ref) - _walk_toc(self.tocs[ref], secnums, depth, - self.titles.get(ref)) - if secnums != old_secnumbers.get(ref): - rewrite_needed.append(ref) - - for docname in self.numbered_toctrees: - assigned.add(docname) - doctree = self.get_doctree(docname) - for toctreenode in doctree.traverse(addnodes.toctree): - depth = toctreenode.get('numbered', 0) - if depth: - # every numbered toctree gets new numbering - numstack = [0] - _walk_toctree(toctreenode, depth) - - return rewrite_needed - - def assign_figure_numbers(self): - """Assign a figure number to each figure under a numbered toctree.""" - - rewrite_needed = [] - - assigned = set() - old_fignumbers = self.toc_fignumbers - self.toc_fignumbers = {} - fignum_counter = {} - - def get_section_number(docname, section): - anchorname = '#' + section['ids'][0] - secnumbers = self.toc_secnumbers.get(docname, {}) - if anchorname in secnumbers: - secnum = secnumbers.get(anchorname) - else: - secnum = secnumbers.get('') - - return secnum or tuple() - - def get_next_fignumber(figtype, secnum): - counter = fignum_counter.setdefault(figtype, {}) - - secnum = secnum[:self.config.numfig_secnum_depth] - counter[secnum] = counter.get(secnum, 0) + 1 - return secnum + (counter[secnum],) - - def register_fignumber(docname, secnum, figtype, fignode): - self.toc_fignumbers.setdefault(docname, {}) - fignumbers = self.toc_fignumbers[docname].setdefault(figtype, {}) - figure_id = fignode['ids'][0] - - fignumbers[figure_id] = get_next_fignumber(figtype, secnum) - - def _walk_doctree(docname, doctree, secnum): - for subnode in doctree.children: - if isinstance(subnode, nodes.section): - next_secnum = get_section_number(docname, subnode) - if next_secnum: - _walk_doctree(docname, subnode, next_secnum) - else: - _walk_doctree(docname, subnode, secnum) - continue - elif isinstance(subnode, addnodes.toctree): - for title, subdocname in subnode['entries']: - if url_re.match(subdocname) or subdocname == 'self': - # don't mess with those - continue - - _walk_doc(subdocname, secnum) - - continue - - figtype = self.domains['std'].get_figtype(subnode) - if figtype and subnode['ids']: - register_fignumber(docname, secnum, figtype, subnode) - - _walk_doctree(docname, subnode, secnum) - - def _walk_doc(docname, secnum): - if docname not in assigned: - assigned.add(docname) - doctree = self.get_doctree(docname) - _walk_doctree(docname, doctree, secnum) - - if self.config.numfig: - _walk_doc(self.config.master_doc, tuple()) - for docname, fignums in iteritems(self.toc_fignumbers): - if fignums != old_fignumbers.get(docname): - rewrite_needed.append(docname) - - return rewrite_needed - def create_index(self, builder, group_entries=True, _fixre=re.compile(r'(.*) ([(][^()]*[)])')): entries = self.managers['indexentries'] diff --git a/sphinx/environment/managers/toctree.py b/sphinx/environment/managers/toctree.py new file mode 100644 index 000000000..d4848a72c --- /dev/null +++ b/sphinx/environment/managers/toctree.py @@ -0,0 +1,561 @@ +# -*- coding: utf-8 -*- +""" + sphinx.environment.managers.toctree + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Toctree manager for sphinx.environment. + + :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from six import iteritems +from docutils import nodes + +from sphinx import addnodes +from sphinx.util import url_re +from sphinx.util.nodes import clean_astext, process_only_nodes +from sphinx.transforms import SphinxContentsFilter +from sphinx.environment.managers import EnvironmentManager + + +class Toctree(EnvironmentManager): + name = 'toctree' + + def __init__(self, env): + super(Toctree, self).__init__(env) + + self.tocs = env.tocs + self.toc_num_entries = env.toc_num_entries + self.toc_secnumbers = env.toc_secnumbers + self.toc_fignumbers = env.toc_fignumbers + self.toctree_includes = env.toctree_includes + self.files_to_rebuild = env.files_to_rebuild + self.glob_toctrees = env.glob_toctrees + self.numbered_toctrees = env.numbered_toctrees + + def clear_doc(self, docname): + self.tocs.pop(docname, None) + self.toc_secnumbers.pop(docname, None) + self.toc_fignumbers.pop(docname, None) + self.toc_num_entries.pop(docname, None) + self.toctree_includes.pop(docname, None) + self.glob_toctrees.discard(docname) + self.numbered_toctrees.discard(docname) + + for subfn, fnset in list(self.files_to_rebuild.items()): + fnset.discard(docname) + if not fnset: + del self.files_to_rebuild[subfn] + + def merge_other(self, docnames, other): + for docname in docnames: + self.tocs[docname] = other.tocs[docname] + self.toc_num_entries[docname] = other.toc_num_entries[docname] + if docname in other.toctree_includes: + self.toctree_includes[docname] = other.toctree_includes[docname] + if docname in other.glob_toctrees: + self.glob_toctrees.add(docname) + if docname in other.numbered_toctrees: + self.numbered_toctrees.add(docname) + + for subfn, fnset in other.files_to_rebuild.items(): + self.files_to_rebuild.setdefault(subfn, set()).update(fnset & docnames) + + def process_doc(self, docname, doctree): + """Build a TOC from the doctree and store it in the inventory.""" + numentries = [0] # nonlocal again... + + def traverse_in_section(node, cls): + """Like traverse(), but stay within the same section.""" + result = [] + if isinstance(node, cls): + result.append(node) + for child in node.children: + if isinstance(child, nodes.section): + continue + result.extend(traverse_in_section(child, cls)) + return result + + def build_toc(node, depth=1): + entries = [] + for sectionnode in node: + # find all toctree nodes in this section and add them + # to the toc (just copying the toctree node which is then + # resolved in self.get_and_resolve_doctree) + if isinstance(sectionnode, addnodes.only): + onlynode = addnodes.only(expr=sectionnode['expr']) + blist = build_toc(sectionnode, depth) + if blist: + onlynode += blist.children + entries.append(onlynode) + continue + if not isinstance(sectionnode, nodes.section): + for toctreenode in traverse_in_section(sectionnode, + addnodes.toctree): + item = toctreenode.copy() + entries.append(item) + # important: do the inventory stuff + self.note_toctree(docname, toctreenode) + continue + title = sectionnode[0] + # copy the contents of the section title, but without references + # and unnecessary stuff + visitor = SphinxContentsFilter(doctree) + title.walkabout(visitor) + nodetext = visitor.get_entry_text() + if not numentries[0]: + # for the very first toc entry, don't add an anchor + # as it is the file's title anyway + anchorname = '' + else: + anchorname = '#' + sectionnode['ids'][0] + numentries[0] += 1 + # make these nodes: + # list_item -> compact_paragraph -> reference + reference = nodes.reference( + '', '', internal=True, refuri=docname, + anchorname=anchorname, *nodetext) + para = addnodes.compact_paragraph('', '', reference) + item = nodes.list_item('', para) + sub_item = build_toc(sectionnode, depth + 1) + item += sub_item + entries.append(item) + if entries: + return nodes.bullet_list('', *entries) + return [] + toc = build_toc(doctree) + if toc: + self.tocs[docname] = toc + else: + self.tocs[docname] = nodes.bullet_list('') + self.toc_num_entries[docname] = numentries[0] + + def note_toctree(self, docname, toctreenode): + """Note a TOC tree directive in a document and gather information about + file relations from it. + """ + if toctreenode['glob']: + self.glob_toctrees.add(docname) + if toctreenode.get('numbered'): + self.numbered_toctrees.add(docname) + includefiles = toctreenode['includefiles'] + for includefile in includefiles: + # note that if the included file is rebuilt, this one must be + # too (since the TOC of the included file could have changed) + self.files_to_rebuild.setdefault(includefile, set()).add(docname) + self.toctree_includes.setdefault(docname, []).extend(includefiles) + + def get_toc_for(self, docname, builder): + """Return a TOC nodetree -- for use on the same page only!""" + tocdepth = self.env.metadata[docname].get('tocdepth', 0) + try: + toc = self.tocs[docname].deepcopy() + self._toctree_prune(toc, 2, tocdepth) + except KeyError: + # the document does not exist anymore: return a dummy node that + # renders to nothing + return nodes.paragraph() + process_only_nodes(toc, builder.tags, warn_node=self.env.warn_node) + for node in toc.traverse(nodes.reference): + node['refuri'] = node['anchorname'] or '#' + return toc + + def get_toctree_for(self, docname, builder, collapse, **kwds): + """Return the global TOC nodetree.""" + doctree = self.env.get_doctree(self.env.config.master_doc) + toctrees = [] + if 'includehidden' not in kwds: + kwds['includehidden'] = True + if 'maxdepth' not in kwds: + kwds['maxdepth'] = 0 + kwds['collapse'] = collapse + for toctreenode in doctree.traverse(addnodes.toctree): + toctree = self.env.resolve_toctree(docname, builder, toctreenode, + prune=True, **kwds) + if toctree: + toctrees.append(toctree) + if not toctrees: + return None + result = toctrees[0] + for toctree in toctrees[1:]: + result.extend(toctree.children) + return result + + def resolve_toctree(self, docname, builder, toctree, prune=True, maxdepth=0, + titles_only=False, collapse=False, includehidden=False): + """Resolve a *toctree* node into individual bullet lists with titles + as items, returning None (if no containing titles are found) or + a new node. + + If *prune* is True, the tree is pruned to *maxdepth*, or if that is 0, + to the value of the *maxdepth* option on the *toctree* node. + If *titles_only* is True, only toplevel document titles will be in the + resulting tree. + If *collapse* is True, all branches not containing docname will + be collapsed. + """ + if toctree.get('hidden', False) and not includehidden: + return None + + # For reading the following two helper function, it is useful to keep + # in mind the node structure of a toctree (using HTML-like node names + # for brevity): + # + # + # + # The transformation is made in two passes in order to avoid + # interactions between marking and pruning the tree (see bug #1046). + + toctree_ancestors = self.get_toctree_ancestors(docname) + + def _toctree_add_classes(node, depth): + """Add 'toctree-l%d' and 'current' classes to the toctree.""" + for subnode in node.children: + if isinstance(subnode, (addnodes.compact_paragraph, + nodes.list_item)): + # for

                  and

                • , indicate the depth level and recurse + subnode['classes'].append('toctree-l%d' % (depth-1)) + _toctree_add_classes(subnode, depth) + elif isinstance(subnode, nodes.bullet_list): + # for
                    , just recurse + _toctree_add_classes(subnode, depth+1) + elif isinstance(subnode, nodes.reference): + # for , identify which entries point to the current + # document and therefore may not be collapsed + if subnode['refuri'] == docname: + if not subnode['anchorname']: + # give the whole branch a 'current' class + # (useful for styling it differently) + branchnode = subnode + while branchnode: + branchnode['classes'].append('current') + branchnode = branchnode.parent + # mark the list_item as "on current page" + if subnode.parent.parent.get('iscurrent'): + # but only if it's not already done + return + while subnode: + subnode['iscurrent'] = True + subnode = subnode.parent + + def _entries_from_toctree(toctreenode, parents, + separate=False, subtree=False): + """Return TOC entries for a toctree node.""" + refs = [(e[0], e[1]) for e in toctreenode['entries']] + entries = [] + for (title, ref) in refs: + try: + refdoc = None + if url_re.match(ref): + if title is None: + title = ref + reference = nodes.reference('', '', internal=False, + refuri=ref, anchorname='', + *[nodes.Text(title)]) + para = addnodes.compact_paragraph('', '', reference) + item = nodes.list_item('', para) + toc = nodes.bullet_list('', item) + elif ref == 'self': + # 'self' refers to the document from which this + # toctree originates + ref = toctreenode['parent'] + if not title: + title = clean_astext(self.titles[ref]) + reference = nodes.reference('', '', internal=True, + refuri=ref, + anchorname='', + *[nodes.Text(title)]) + para = addnodes.compact_paragraph('', '', reference) + item = nodes.list_item('', para) + # don't show subitems + toc = nodes.bullet_list('', item) + else: + if ref in parents: + self.env.warn(ref, 'circular toctree references ' + 'detected, ignoring: %s <- %s' % + (ref, ' <- '.join(parents))) + continue + refdoc = ref + toc = self.tocs[ref].deepcopy() + maxdepth = self.env.metadata[ref].get('tocdepth', 0) + if ref not in toctree_ancestors or (prune and maxdepth > 0): + self._toctree_prune(toc, 2, maxdepth, collapse) + process_only_nodes(toc, builder.tags, warn_node=self.env.warn_node) + if title and toc.children and len(toc.children) == 1: + child = toc.children[0] + for refnode in child.traverse(nodes.reference): + if refnode['refuri'] == ref and \ + not refnode['anchorname']: + refnode.children = [nodes.Text(title)] + if not toc.children: + # empty toc means: no titles will show up in the toctree + self.env.warn_node( + 'toctree contains reference to document %r that ' + 'doesn\'t have a title: no link will be generated' + % ref, toctreenode) + except KeyError: + # this is raised if the included file does not exist + self.env.warn_node( + 'toctree contains reference to nonexisting document %r' + % ref, toctreenode) + else: + # if titles_only is given, only keep the main title and + # sub-toctrees + if titles_only: + # delete everything but the toplevel title(s) + # and toctrees + for toplevel in toc: + # nodes with length 1 don't have any children anyway + if len(toplevel) > 1: + subtrees = toplevel.traverse(addnodes.toctree) + if subtrees: + toplevel[1][:] = subtrees + else: + toplevel.pop(1) + # resolve all sub-toctrees + for subtocnode in toc.traverse(addnodes.toctree): + if not (subtocnode.get('hidden', False) and + not includehidden): + i = subtocnode.parent.index(subtocnode) + 1 + for item in _entries_from_toctree( + subtocnode, [refdoc] + parents, + subtree=True): + subtocnode.parent.insert(i, item) + i += 1 + subtocnode.parent.remove(subtocnode) + if separate: + entries.append(toc) + else: + entries.extend(toc.children) + if not subtree and not separate: + ret = nodes.bullet_list() + ret += entries + return [ret] + return entries + + maxdepth = maxdepth or toctree.get('maxdepth', -1) + if not titles_only and toctree.get('titlesonly', False): + titles_only = True + if not includehidden and toctree.get('includehidden', False): + includehidden = True + + # NOTE: previously, this was separate=True, but that leads to artificial + # separation when two or more toctree entries form a logical unit, so + # separating mode is no longer used -- it's kept here for history's sake + tocentries = _entries_from_toctree(toctree, [], separate=False) + if not tocentries: + return None + + newnode = addnodes.compact_paragraph('', '') + caption = toctree.attributes.get('caption') + if caption: + caption_node = nodes.caption(caption, '', *[nodes.Text(caption)]) + caption_node.line = toctree.line + caption_node.source = toctree.source + caption_node.rawsource = toctree['rawcaption'] + if hasattr(toctree, 'uid'): + # move uid to caption_node to translate it + caption_node.uid = toctree.uid + del toctree.uid + newnode += caption_node + newnode.extend(tocentries) + newnode['toctree'] = True + + # prune the tree to maxdepth, also set toc depth and current classes + _toctree_add_classes(newnode, 1) + self._toctree_prune(newnode, 1, prune and maxdepth or 0, collapse) + + if len(newnode[-1]) == 0: # No titles found + return None + + # set the target paths in the toctrees (they are not known at TOC + # generation time) + for refnode in newnode.traverse(nodes.reference): + if not url_re.match(refnode['refuri']): + refnode['refuri'] = builder.get_relative_uri( + docname, refnode['refuri']) + refnode['anchorname'] + return newnode + + def get_toctree_ancestors(self, docname): + parent = {} + for p, children in iteritems(self.toctree_includes): + for child in children: + parent[child] = p + ancestors = [] + d = docname + while d in parent and d not in ancestors: + ancestors.append(d) + d = parent[d] + return ancestors + + def _toctree_prune(self, node, depth, maxdepth, collapse=False): + """Utility: Cut a TOC at a specified depth.""" + for subnode in node.children[:]: + if isinstance(subnode, (addnodes.compact_paragraph, + nodes.list_item)): + # for

                    and

                  • , just recurse + self._toctree_prune(subnode, depth, maxdepth, collapse) + elif isinstance(subnode, nodes.bullet_list): + # for
                      , determine if the depth is too large or if the + # entry is to be collapsed + if maxdepth > 0 and depth > maxdepth: + subnode.parent.replace(subnode, []) + else: + # cull sub-entries whose parents aren't 'current' + if (collapse and depth > 1 and + 'iscurrent' not in subnode.parent): + subnode.parent.remove(subnode) + else: + # recurse on visible children + self._toctree_prune(subnode, depth+1, maxdepth, collapse) + + def assign_section_numbers(self): + """Assign a section number to each heading under a numbered toctree.""" + # a list of all docnames whose section numbers changed + rewrite_needed = [] + + assigned = set() + old_secnumbers = self.toc_secnumbers + self.toc_secnumbers = self.env.toc_secnumbers = {} + + def _walk_toc(node, secnums, depth, titlenode=None): + # titlenode is the title of the document, it will get assigned a + # secnumber too, so that it shows up in next/prev/parent rellinks + for subnode in node.children: + if isinstance(subnode, nodes.bullet_list): + numstack.append(0) + _walk_toc(subnode, secnums, depth-1, titlenode) + numstack.pop() + titlenode = None + elif isinstance(subnode, nodes.list_item): + _walk_toc(subnode, secnums, depth, titlenode) + titlenode = None + elif isinstance(subnode, addnodes.only): + # at this stage we don't know yet which sections are going + # to be included; just include all of them, even if it leads + # to gaps in the numbering + _walk_toc(subnode, secnums, depth, titlenode) + titlenode = None + elif isinstance(subnode, addnodes.compact_paragraph): + numstack[-1] += 1 + if depth > 0: + number = tuple(numstack) + else: + number = None + secnums[subnode[0]['anchorname']] = \ + subnode[0]['secnumber'] = number + if titlenode: + titlenode['secnumber'] = number + titlenode = None + elif isinstance(subnode, addnodes.toctree): + _walk_toctree(subnode, depth) + + def _walk_toctree(toctreenode, depth): + if depth == 0: + return + for (title, ref) in toctreenode['entries']: + if url_re.match(ref) or ref == 'self' or ref in assigned: + # don't mess with those + continue + if ref in self.tocs: + secnums = self.toc_secnumbers[ref] = {} + assigned.add(ref) + _walk_toc(self.tocs[ref], secnums, depth, + self.env.titles.get(ref)) + if secnums != old_secnumbers.get(ref): + rewrite_needed.append(ref) + + for docname in self.numbered_toctrees: + assigned.add(docname) + doctree = self.env.get_doctree(docname) + for toctreenode in doctree.traverse(addnodes.toctree): + depth = toctreenode.get('numbered', 0) + if depth: + # every numbered toctree gets new numbering + numstack = [0] + _walk_toctree(toctreenode, depth) + + return rewrite_needed + + def assign_figure_numbers(self): + """Assign a figure number to each figure under a numbered toctree.""" + + rewrite_needed = [] + + assigned = set() + old_fignumbers = self.toc_fignumbers + self.toc_fignumbers = self.env.toc_fignumbers = {} + fignum_counter = {} + + def get_section_number(docname, section): + anchorname = '#' + section['ids'][0] + secnumbers = self.toc_secnumbers.get(docname, {}) + if anchorname in secnumbers: + secnum = secnumbers.get(anchorname) + else: + secnum = secnumbers.get('') + + return secnum or tuple() + + def get_next_fignumber(figtype, secnum): + counter = fignum_counter.setdefault(figtype, {}) + + secnum = secnum[:self.env.config.numfig_secnum_depth] + counter[secnum] = counter.get(secnum, 0) + 1 + return secnum + (counter[secnum],) + + def register_fignumber(docname, secnum, figtype, fignode): + self.toc_fignumbers.setdefault(docname, {}) + fignumbers = self.toc_fignumbers[docname].setdefault(figtype, {}) + figure_id = fignode['ids'][0] + + fignumbers[figure_id] = get_next_fignumber(figtype, secnum) + + def _walk_doctree(docname, doctree, secnum): + for subnode in doctree.children: + if isinstance(subnode, nodes.section): + next_secnum = get_section_number(docname, subnode) + if next_secnum: + _walk_doctree(docname, subnode, next_secnum) + else: + _walk_doctree(docname, subnode, secnum) + continue + elif isinstance(subnode, addnodes.toctree): + for title, subdocname in subnode['entries']: + if url_re.match(subdocname) or subdocname == 'self': + # don't mess with those + continue + + _walk_doc(subdocname, secnum) + + continue + + figtype = self.env.domains['std'].get_figtype(subnode) + if figtype and subnode['ids']: + register_fignumber(docname, secnum, figtype, subnode) + + _walk_doctree(docname, subnode, secnum) + + def _walk_doc(docname, secnum): + if docname not in assigned: + assigned.add(docname) + doctree = self.env.get_doctree(docname) + _walk_doctree(docname, doctree, secnum) + + if self.env.config.numfig: + _walk_doc(self.env.config.master_doc, tuple()) + for docname, fignums in iteritems(self.toc_fignumbers): + if fignums != old_fignumbers.get(docname): + rewrite_needed.append(docname) + + return rewrite_needed From c5e56969ed9f6f62957a19c206c769bbded3d1ad Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sat, 10 Sep 2016 08:50:05 +0900 Subject: [PATCH 048/297] Add testcase for indexentries --- tests/test_environment_indexentries.py | 136 +++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 tests/test_environment_indexentries.py diff --git a/tests/test_environment_indexentries.py b/tests/test_environment_indexentries.py new file mode 100644 index 000000000..869239487 --- /dev/null +++ b/tests/test_environment_indexentries.py @@ -0,0 +1,136 @@ +# -*- coding: utf-8 -*- +""" + test_environment_indexentries + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Test the sphinx.environment.managers.indexentries. + + :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from collections import namedtuple +from sphinx import locale +from sphinx.environment.managers.indexentries import IndexEntries + +from util import mock + +Environment = namedtuple('Environment', 'indexentries') + +dummy_builder = mock.Mock() +dummy_builder.get_relative_uri.return_value = '' + + +def test_create_single_index(): + # type, value, tid, main, index_key + env = Environment({ + 'index': [ + ('single', 'docutils', 'id1', '', None), + ('single', 'Python', 'id2', '', None), + ('single', 'pip; install', 'id3', '', None), + ('single', 'pip; upgrade', 'id4', '', None), + ('single', 'Sphinx', 'id5', '', None), + ], + }) + index = IndexEntries(env).create_index(dummy_builder) + assert len(index) == 3 + assert index[0] == (u'D', [(u'docutils', [[('', '#id1')], [], None])]) + assert index[1] == (u'P', [(u'pip', [[], [(u'install', [('', '#id3')]), + (u'upgrade', [('', '#id4')])], None]), + (u'Python', [[('', '#id2')], [], None])]) + assert index[2] == (u'S', [(u'Sphinx', [[('', '#id5')], [], None])]) + + +def test_create_pair_index(): + # type, value, tid, main, index_key + env = Environment({ + 'index': [ + ('pair', 'docutils; reStructuredText', 'id1', '', None), + ('pair', 'Python; interpreter', 'id2', '', None), + ('pair', 'Sphinx; documentation tool', 'id3', '', None), + ], + }) + index = IndexEntries(env).create_index(dummy_builder) + assert len(index) == 5 + assert index[0] == (u'D', + [(u'documentation tool', [[], [(u'Sphinx', [('', '#id3')])], None]), + (u'docutils', [[], [(u'reStructuredText', [('', '#id1')])], None])]) + assert index[1] == (u'I', [(u'interpreter', [[], [(u'Python', [('', '#id2')])], None])]) + assert index[2] == (u'P', [(u'Python', [[], [(u'interpreter', [('', '#id2')])], None])]) + assert index[3] == (u'R', + [(u'reStructuredText', [[], [(u'docutils', [('', '#id1')])], None])]) + assert index[4] == (u'S', + [(u'Sphinx', [[], [(u'documentation tool', [('', '#id3')])], None])]) + + +def test_create_triple_index(): + # type, value, tid, main, index_key + env = Environment({ + 'index': [ + ('triple', 'foo; bar; baz', 'id1', '', None), + ('triple', 'Python; Sphinx; reST', 'id2', '', None), + ], + }) + index = IndexEntries(env).create_index(dummy_builder) + assert len(index) == 5 + assert index[0] == (u'B', [(u'bar', [[], [(u'baz, foo', [('', '#id1')])], None]), + (u'baz', [[], [(u'foo bar', [('', '#id1')])], None])]) + assert index[1] == (u'F', [(u'foo', [[], [(u'bar baz', [('', '#id1')])], None])]) + assert index[2] == (u'P', [(u'Python', [[], [(u'Sphinx reST', [('', '#id2')])], None])]) + assert index[3] == (u'R', [(u'reST', [[], [(u'Python Sphinx', [('', '#id2')])], None])]) + assert index[4] == (u'S', [(u'Sphinx', [[], [(u'reST, Python', [('', '#id2')])], None])]) + + +def test_create_see_index(): + locale.init([], None) + + # type, value, tid, main, index_key + env = Environment({ + 'index': [ + ('see', 'docutils; reStructuredText', 'id1', '', None), + ('see', 'Python; interpreter', 'id2', '', None), + ('see', 'Sphinx; documentation tool', 'id3', '', None), + ], + }) + index = IndexEntries(env).create_index(dummy_builder) + assert len(index) == 3 + assert index[0] == (u'D', [(u'docutils', [[], [(u'see reStructuredText', [])], None])]) + assert index[1] == (u'P', [(u'Python', [[], [(u'see interpreter', [])], None])]) + assert index[2] == (u'S', [(u'Sphinx', [[], [(u'see documentation tool', [])], None])]) + + +def test_create_seealso_index(): + locale.init([], None) + + # type, value, tid, main, index_key + env = Environment({ + 'index': [ + ('seealso', 'docutils; reStructuredText', 'id1', '', None), + ('seealso', 'Python; interpreter', 'id2', '', None), + ('seealso', 'Sphinx; documentation tool', 'id3', '', None), + ], + }) + index = IndexEntries(env).create_index(dummy_builder) + assert len(index) == 3 + assert index[0] == (u'D', + [(u'docutils', [[], [(u'see also reStructuredText', [])], None])]) + assert index[1] == (u'P', + [(u'Python', [[], [(u'see also interpreter', [])], None])]) + assert index[2] == (u'S', + [(u'Sphinx', [[], [(u'see also documentation tool', [])], None])]) + + +def test_create_index_by_key(): + # type, value, tid, main, index_key + env = Environment({ + 'index': [ + ('single', 'docutils', 'id1', '', None), + ('single', 'Python', 'id2', '', None), + ('single', u'スフィンクス', 'id3', '', u'ス'), + ], + }) + index = IndexEntries(env).create_index(dummy_builder) + assert len(index) == 3 + assert index[0] == (u'D', [(u'docutils', [[('', '#id1')], [], None])]) + assert index[1] == (u'P', [(u'Python', [[('', '#id2')], [], None])]) + assert index[2] == (u'ス', [(u'スフィンクス', [[('', '#id3')], [], u'ス'])]) From e5b3a7c9519ecff8f547a4c2bc66305c92632c02 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sat, 10 Sep 2016 10:40:00 +0900 Subject: [PATCH 049/297] indexentries: refactor a little --- sphinx/environment/managers/indexentries.py | 24 ++++++++++----------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/sphinx/environment/managers/indexentries.py b/sphinx/environment/managers/indexentries.py index 946f5a7ed..e298c017c 100644 --- a/sphinx/environment/managers/indexentries.py +++ b/sphinx/environment/managers/indexentries.py @@ -60,7 +60,7 @@ class IndexEntries(EnvironmentManager): new = {} - def add_entry(word, subword, link=True, dic=new, key=None): + def add_entry(word, subword, main, link=True, dic=new, key=None): # Force the word to be unicode if it's a ASCII bytestring. # This will solve problems with unicode normalization later. # For instance the RFC role will add bytestrings at the moment @@ -69,7 +69,7 @@ class IndexEntries(EnvironmentManager): if not entry: dic[word] = entry = [[], {}, key] if subword: - add_entry(subword, '', link=link, dic=entry[1], key=key) + add_entry(subword, '', main, link=link, dic=entry[1], key=key) elif link: try: uri = builder.get_relative_uri('genindex', fn) + '#' + tid @@ -89,24 +89,24 @@ class IndexEntries(EnvironmentManager): except ValueError: entry, = split_into(1, 'single', value) subentry = '' - add_entry(entry, subentry, key=index_key) + add_entry(entry, subentry, main, key=index_key) elif type == 'pair': first, second = split_into(2, 'pair', value) - add_entry(first, second, key=index_key) - add_entry(second, first, key=index_key) + add_entry(first, second, main, key=index_key) + add_entry(second, first, main, key=index_key) elif type == 'triple': first, second, third = split_into(3, 'triple', value) - add_entry(first, second+' '+third, key=index_key) - add_entry(second, third+', '+first, key=index_key) - add_entry(third, first+' '+second, key=index_key) + add_entry(first, second + ' ' + third, main, key=index_key) + add_entry(second, third + ', ' + first, main, key=index_key) + add_entry(third, first + ' ' + second, main, key=index_key) elif type == 'see': first, second = split_into(2, 'see', value) - add_entry(first, _('see %s') % second, link=False, - key=index_key) + add_entry(first, _('see %s') % second, None, + link=False, key=index_key) elif type == 'seealso': first, second = split_into(2, 'see', value) - add_entry(first, _('see also %s') % second, link=False, - key=index_key) + add_entry(first, _('see also %s') % second, None, + link=False, key=index_key) else: self.env.warn(fn, 'unknown index entry type %r' % type) except ValueError as err: From 97870ebc0b2535dd70ddfd2f7f4128e37bc1a7dd Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Fri, 30 Sep 2016 11:07:49 +0900 Subject: [PATCH 050/297] Allow to access mangers through env.{manager_name} --- sphinx/environment/__init__.py | 20 ++++++++++---------- sphinx/environment/managers/indexentries.py | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/sphinx/environment/__init__.py b/sphinx/environment/__init__.py index 3181d8f74..95454c882 100644 --- a/sphinx/environment/__init__.py +++ b/sphinx/environment/__init__.py @@ -212,6 +212,7 @@ class BuildEnvironment(object): for manager_class in [IndexEntries, Toctree]: manager = manager_class(self) self.managers[manager.name] = manager + setattr(self, manager.name, manager) def set_warnfunc(self, func): self._warnfunc = func @@ -593,8 +594,8 @@ class BuildEnvironment(object): self._warnfunc(*warning, **kwargs) def check_dependents(self, already): - toctree = self.managers['toctree'] - to_rewrite = toctree.assign_section_numbers() + toctree.assign_figure_numbers() + to_rewrite = (self.toctree.assign_section_numbers() + + self.toctree.assign_figure_numbers()) for docname in set(to_rewrite): if docname not in already: yield docname @@ -938,15 +939,15 @@ class BuildEnvironment(object): """Note a TOC tree directive in a document and gather information about file relations from it. """ - self.managers['toctree'].note_toctree(docname, toctreenode) + self.toctree.note_toctree(docname, toctreenode) def get_toc_for(self, docname, builder): """Return a TOC nodetree -- for use on the same page only!""" - return self.managers['toctree'].get_toc_for(docname, builder) + return self.toctree.get_toc_for(docname, builder) def get_toctree_for(self, docname, builder, collapse, **kwds): """Return the global TOC nodetree.""" - return self.managers['toctree'].get_toctree_for(docname, builder, collapse, **kwds) + return self.toctree.get_toctree_for(docname, builder, collapse, **kwds) def get_domain(self, domainname): """Return the domain instance with the specified name. @@ -1006,9 +1007,9 @@ class BuildEnvironment(object): If *collapse* is True, all branches not containing docname will be collapsed. """ - return self.managers['toctree'].resolve_toctree(docname, builder, toctree, prune, - maxdepth, titles_only, collapse, - includehidden) + return self.toctree.resolve_toctree(docname, builder, toctree, prune, + maxdepth, titles_only, collapse, + includehidden) def resolve_references(self, doctree, fromdocname, builder): for node in doctree.traverse(addnodes.pending_xref): @@ -1138,8 +1139,7 @@ class BuildEnvironment(object): def create_index(self, builder, group_entries=True, _fixre=re.compile(r'(.*) ([(][^()]*[)])')): - entries = self.managers['indexentries'] - return entries.create_index(builder, group_entries=group_entries, _fixre=_fixre) + return self.indices.create_index(builder, group_entries=group_entries, _fixre=_fixre) def collect_relations(self): traversed = set() diff --git a/sphinx/environment/managers/indexentries.py b/sphinx/environment/managers/indexentries.py index e298c017c..c35a161b4 100644 --- a/sphinx/environment/managers/indexentries.py +++ b/sphinx/environment/managers/indexentries.py @@ -23,7 +23,7 @@ from sphinx.environment.managers import EnvironmentManager class IndexEntries(EnvironmentManager): - name = 'indexentries' + name = 'indices' def __init__(self, env): super(IndexEntries, self).__init__(env) From 1f2368047e90769f1f093badf3b996cfba0ebfd0 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Tue, 11 Oct 2016 18:09:36 +0900 Subject: [PATCH 051/297] Detach managers on pickling environment --- sphinx/application.py | 1 + sphinx/environment/__init__.py | 22 ++++++++++++++++++---- sphinx/environment/managers/__init__.py | 10 ++++++++++ 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/sphinx/application.py b/sphinx/application.py index 5466970a4..29ebd454a 100644 --- a/sphinx/application.py +++ b/sphinx/application.py @@ -293,6 +293,7 @@ class Sphinx(object): self.env = BuildEnvironment.frompickle( self.srcdir, self.config, path.join(self.doctreedir, ENV_PICKLE_FILENAME)) self.env.set_warnfunc(self.warn) + self.env.init_managers() self.env.domains = {} for domain in self.domains.keys(): # this can raise if the data version doesn't fit diff --git a/sphinx/environment/__init__.py b/sphinx/environment/__init__.py index 95454c882..d750b0284 100644 --- a/sphinx/environment/__init__.py +++ b/sphinx/environment/__init__.py @@ -111,6 +111,7 @@ class BuildEnvironment(object): del self.config.values domains = self.domains del self.domains + managers = self.detach_managers() # remove potentially pickling-problematic values from config for key, val in list(vars(self.config).items()): if key.startswith('_') or \ @@ -121,6 +122,7 @@ class BuildEnvironment(object): with open(filename, 'wb') as picklefile: pickle.dump(self, picklefile, pickle.HIGHEST_PROTOCOL) # reset attributes + self.attach_managers(managers) self.domains = domains self.config.values = values self.set_warnfunc(warnfunc) @@ -205,14 +207,26 @@ class BuildEnvironment(object): # attributes of "any" cross references self.ref_context = {} + self.managers = {} self.init_managers() def init_managers(self): - self.managers = {} + managers = {} for manager_class in [IndexEntries, Toctree]: - manager = manager_class(self) - self.managers[manager.name] = manager - setattr(self, manager.name, manager) + managers[manager_class.name] = manager_class(self) + self.attach_managers(managers) + + def attach_managers(self, managers): + for name, manager in iteritems(managers): + self.managers[name] = manager + manager.attach(self) + + def detach_managers(self): + managers = self.managers + self.managers = {} + for _, manager in iteritems(managers): + manager.detach(self) + return managers def set_warnfunc(self, func): self._warnfunc = func diff --git a/sphinx/environment/managers/__init__.py b/sphinx/environment/managers/__init__.py index ba8bce51b..963ec54b8 100644 --- a/sphinx/environment/managers/__init__.py +++ b/sphinx/environment/managers/__init__.py @@ -17,6 +17,16 @@ class EnvironmentManager(object): def __init__(self, env): self.env = env + def attach(self, env): + self.env = env + if self.name: + setattr(env, self.name, self) + + def detach(self, env): + self.env = None + if self.name: + delattr(env, self.name) + def clear_doc(self, docname): raise NotImplementedError From dc584c6963654a8906dc57073d7c606f4ce8f3e7 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Thu, 15 Sep 2016 23:40:00 +0900 Subject: [PATCH 052/297] Fix #2435: Slim down quickstarted conf.py --- CHANGES | 1 + sphinx/templates/quickstart/conf.py_t | 256 +------------------------- 2 files changed, 4 insertions(+), 253 deletions(-) diff --git a/CHANGES b/CHANGES index 5d0abbad3..0a5e55fd7 100644 --- a/CHANGES +++ b/CHANGES @@ -8,6 +8,7 @@ Incompatible changes ``epub_description`` and ``epub_contributor``. * Remove themes/basic/defindex.html; no longer used * Sphinx does not ship anymore (but still uses) LaTeX style file ``fncychap`` +* #2435: Slim down quickstarted conf.py Features added -------------- diff --git a/sphinx/templates/quickstart/conf.py_t b/sphinx/templates/quickstart/conf.py_t index ee5858b21..4b7b34315 100644 --- a/sphinx/templates/quickstart/conf.py_t +++ b/sphinx/templates/quickstart/conf.py_t @@ -53,10 +53,6 @@ templates_path = ['{{ dot }}templates'] # source_suffix = ['.rst', '.md'] source_suffix = '{{ suffix }}' -# The encoding of source files. -# -# source_encoding = 'utf-8-sig' - # The master toctree document. master_doc = '{{ master_str }}' @@ -81,48 +77,14 @@ release = u'{{ release_str }}' # Usually you set "language" from the command line for these cases. language = {{ language | repr }} -# There are two options for replacing |today|: either, you set today to some -# non-false value, then it is used: -# -# today = '' -# -# Else, today_fmt is used as the format for a strftime call. -# -# today_fmt = '%B %d, %Y' - # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This patterns also effect to html_static_path and html_extra_path exclude_patterns = [{{ exclude_patterns }}] -# The reST default role (used for this markup: `text`) to use for all -# documents. -# -# default_role = None - -# If true, '()' will be appended to :func: etc. cross-reference text. -# -# add_function_parentheses = True - -# If true, the current module name will be prepended to all description -# unit titles (such as .. function::). -# -# add_module_names = True - -# If true, sectionauthor and moduleauthor directives will be shown in the -# output. They are ignored by default. -# -# show_authors = False - # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' -# A list of ignored prefixes for module index sorting. -# modindex_common_prefix = [] - -# If true, keep warnings as "system message" paragraphs in the built documents. -# keep_warnings = False - # If true, `todo` and `todoList` produce output, else they produce nothing. todo_include_todos = {{ ext_todo }} @@ -140,114 +102,18 @@ html_theme = 'alabaster' # # html_theme_options = {} -# Add any paths that contain custom themes here, relative to this directory. -# html_theme_path = [] - -# The name for this set of Sphinx documents. -# " v documentation" by default. -# -# html_title = u'{{ project_str }} v{{ release_str }}' - -# A shorter title for the navigation bar. Default is the same as html_title. -# -# html_short_title = None - -# The name of an image file (relative to this directory) to place at the top -# of the sidebar. -# -# html_logo = None - -# The name of an image file (relative to this directory) to use as a favicon of -# the docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 -# pixels large. -# -# html_favicon = None - # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['{{ dot }}static'] -# Add any extra paths that contain custom files (such as robots.txt or -# .htaccess) here, relative to this directory. These files are copied -# directly to the root of the documentation. -# -# html_extra_path = [] -# If not None, a 'Last updated on:' timestamp is inserted at every page -# bottom, using the given strftime format. -# The empty string is equivalent to '%b %d, %Y'. -# -# html_last_updated_fmt = None - -# If true, SmartyPants will be used to convert quotes and dashes to -# typographically correct entities. -# -# html_use_smartypants = True - -# Custom sidebar templates, maps document names to template names. -# -# html_sidebars = {} - -# Additional templates that should be rendered to pages, maps page names to -# template names. -# -# html_additional_pages = {} - -# If false, no module index is generated. -# -# html_domain_indices = True - -# If false, no index is generated. -# -# html_use_index = True - -# If true, the index is split into individual pages for each letter. -# -# html_split_index = False - -# If true, links to the reST sources are added to the pages. -# -# html_show_sourcelink = True - -# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. -# -# html_show_sphinx = True - -# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -# -# html_show_copyright = True - -# If true, an OpenSearch description file will be output, and all pages will -# contain a tag referring to it. The value of this option must be the -# base URL from which the finished HTML is served. -# -# html_use_opensearch = '' - -# This is the file name suffix for HTML files (e.g. ".xhtml"). -# html_file_suffix = None - -# Language to be used for generating the HTML full-text search index. -# Sphinx supports the following languages: -# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja' -# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr', 'zh' -# -# html_search_language = 'en' - -# A dictionary with options for the search language support, empty by default. -# 'ja' uses this config value. -# 'zh' user can custom change `jieba` dictionary path. -# -# html_search_options = {'type': 'default'} - -# The name of a javascript file (relative to the configuration directory) that -# implements a search results scorer. If empty, the default will be used. -# -# html_search_scorer = 'scorer.js' +# -- Options for HTMLHelp output ------------------------------------------ # Output file base name for HTML help builder. htmlhelp_basename = '{{ project_fn }}doc' + # -- Options for LaTeX output --------------------------------------------- latex_elements = { @@ -276,38 +142,6 @@ latex_documents = [ u'{{ author_texescaped_str }}', 'manual'), ] -# The name of an image file (relative to this directory) to place at the top of -# the title page. -# -# latex_logo = None - -# For "manual" documents, if this is true, then toplevel headings are parts, -# not chapters. -# -# latex_use_parts = False - -# If true, show page references after internal links. -# -# latex_show_pagerefs = False - -# If true, show URL addresses after external links. -# -# latex_show_urls = False - -# Documents to append as an appendix to all manuals. -# -# latex_appendices = [] - -# It false, will not define \strong, \code, \titleref, \crossref ... but only -# \sphinxstrong, ..., \sphinxtitleref, ... To help avoid clash with user added -# packages. -# -# latex_keep_old_macro_names = True - -# If false, no module index is generated. -# -# latex_domain_indices = True - # -- Options for manual page output --------------------------------------- @@ -318,10 +152,6 @@ man_pages = [ [author], 1) ] -# If true, show URL addresses after external links. -# -# man_show_urls = False - # -- Options for Texinfo output ------------------------------------------- @@ -334,23 +164,8 @@ texinfo_documents = [ 'Miscellaneous'), ] -# Documents to append as an appendix to all manuals. -# -# texinfo_appendices = [] - -# If false, no module index is generated. -# -# texinfo_domain_indices = True - -# How to display URL addresses: 'footnote', 'no', or 'inline'. -# -# texinfo_show_urls = 'footnote' - -# If true, do not generate a @detailmenu in the "Top" node's menu. -# -# texinfo_no_detailmenu = False - {% if epub %} + # -- Options for Epub output ---------------------------------------------- # Bibliographic Dublin Core info. @@ -359,24 +174,6 @@ epub_author = author epub_publisher = author epub_copyright = copyright -# The basename for the epub file. It defaults to the project name. -# epub_basename = project - -# The HTML theme for the epub output. Since the default themes are not -# optimized for small screen space, using the same theme for HTML and epub -# output is usually not wise. This defaults to 'epub', a theme designed to save -# visual space. -# -# epub_theme = 'epub' - -# The language of the text. It defaults to the language option -# or 'en' if the language is not set. -# -# epub_language = '' - -# The scheme of the identifier. Typical schemes are ISBN or URL. -# epub_scheme = '' - # The unique identifier of the text. This can be a ISBN number # or the project homepage. # @@ -386,58 +183,11 @@ epub_copyright = copyright # # epub_uid = '' -# A tuple containing the cover image and cover page html template filenames. -# -# epub_cover = () - -# A sequence of (type, uri, title) tuples for the guide element of content.opf. -# -# epub_guide = () - -# HTML files that should be inserted before the pages created by sphinx. -# The format is a list of tuples containing the path and title. -# -# epub_pre_files = [] - -# HTML files that should be inserted after the pages created by sphinx. -# The format is a list of tuples containing the path and title. -# -# epub_post_files = [] - # A list of files that should not be packed into the epub file. epub_exclude_files = ['search.html'] - -# The depth of the table of contents in toc.ncx. -# -# epub_tocdepth = 3 - -# Allow duplicate toc entries. -# -# epub_tocdup = True - -# Choose between 'default' and 'includehidden'. -# -# epub_tocscope = 'default' - -# Fix unsupported image types using the Pillow. -# -# epub_fix_images = False - -# Scale large images. -# -# epub_max_image_width = 0 - -# How to display URL addresses: 'footnote', 'no', or 'inline'. -# -# epub_show_urls = 'inline' - -# If false, no index is generated. -# -# epub_use_index = True {% endif %} {% if ext_intersphinx %} # Example configuration for intersphinx: refer to the Python standard library. intersphinx_mapping = {'https://docs.python.org/': None} {% endif %} - From f9186c9b89fb91d758a69001bbad135cdb849934 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Thu, 15 Sep 2016 23:00:15 +0900 Subject: [PATCH 053/297] Test with nightly python builds --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 6e11f6299..9623c65f1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,11 +7,12 @@ python: - "2.7" - "3.4" - "3.5" - - "3.5-dev" + - "nightly" - "pypy" env: global: - TEST='-v --with-timer --timer-top-n 25' + - PYTHONFAULTHANDLER=x matrix: - DOCUTILS=0.11 - DOCUTILS=0.12 From 143daf21d82fbddf6290e775a0738c4aa5fafb65 Mon Sep 17 00:00:00 2001 From: jfbu Date: Tue, 11 Oct 2016 20:42:58 +0200 Subject: [PATCH 054/297] Fix #3031: incompatibility with LaTeX package ``tocloft`` Use ``\sphinxtableofcontents``, and environments ``sphinxtheindex`` and ``sphinxthebibliography``. --- doc/config.rst | 8 ++++++-- sphinx/texinputs/sphinxhowto.cls | 26 +++++++++++--------------- sphinx/texinputs/sphinxmanual.cls | 25 ++++++++++--------------- sphinx/writers/latex.py | 10 +++++----- 4 files changed, 32 insertions(+), 37 deletions(-) diff --git a/doc/config.rst b/doc/config.rst index e12b9561f..221ca5c3b 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -1739,13 +1739,17 @@ These options influence LaTeX output. See further :doc:`latex`. ``'fontenc'`` "fontenc" package inclusion, default ``'\\usepackage[T1]{fontenc}'``. ``'maketitle'`` - "maketitle" call, default ``'\\maketitle'``. Override if you want to + "maketitle" call, default ``'\\maketitle'`` (but it has been + redefined by the Sphinx ``manual`` and ``howto`` classes.) Override + if you want to generate a differently-styled title page. ``'releasename'`` value that prefixes ``'release'`` element on title page, default ``'Release'``. ``'tableofcontents'`` - "tableofcontents" call, default ``'\\tableofcontents'``. Override if + "tableofcontents" call, default ``'\\sphinxtableofcontents'`` (it is a + wrapper of unmodified ``tableofcontents``.) + Override if you want to generate a different table of contents or put content between the title page and the TOC. ``'transition'`` diff --git a/sphinx/texinputs/sphinxhowto.cls b/sphinx/texinputs/sphinxhowto.cls index 8d5c59232..f0d3e1d74 100644 --- a/sphinx/texinputs/sphinxhowto.cls +++ b/sphinx/texinputs/sphinxhowto.cls @@ -70,11 +70,10 @@ %\gdef\@thanks{}\gdef\@author{}\gdef\@title{} } -\let\py@OldTableofcontents=\tableofcontents -\renewcommand{\tableofcontents}{ +\newcommand{\sphinxtableofcontents}{ \begingroup \parskip = 0mm - \py@OldTableofcontents + \tableofcontents \endgroup \rule{\textwidth}{1pt} \vspace{12pt} @@ -91,21 +90,18 @@ % Contents. % For an article document class this environment is a section, % so no page break before it. -\let\py@OldThebibliography=\thebibliography -\renewcommand{\thebibliography}[1]{ +\newenvironment{sphinxthebibliography}[1]{% \phantomsection - \py@OldThebibliography{1} - \addcontentsline{toc}{section}{\bibname} -} + \begin{thebibliography}{\detokenize{#1}}% + \addcontentsline{toc}{chapter}{\bibname}}{\end{thebibliography}} + % Same for the indices. % The memoir class already does this, so we don't duplicate it in that case. % -\@ifclassloaded{memoir}{}{ - \let\py@OldTheindex=\theindex - \renewcommand{\theindex}{ +\@ifclassloaded{memoir} + {\newenvironment{sphinxtheindex}{\begin{theindex}}{\end{theindex}}} + {\newenvironment{sphinxtheindex}{% \phantomsection - \py@OldTheindex - \addcontentsline{toc}{section}{\indexname} - } -} + \begin{theindex}% + \addcontentsline{toc}{chapter}{\indexname}}{\end{theindex}}} diff --git a/sphinx/texinputs/sphinxmanual.cls b/sphinx/texinputs/sphinxmanual.cls index f20449449..7cdb6988a 100644 --- a/sphinx/texinputs/sphinxmanual.cls +++ b/sphinx/texinputs/sphinxmanual.cls @@ -82,15 +82,14 @@ %\gdef\@thanks{}\gdef\@author{}\gdef\@title{} } -\let\py@OldTableofcontents=\tableofcontents -\renewcommand{\tableofcontents}{% +\newcommand{\sphinxtableofcontents}{% % before resetting page counter, let's do the right thing. \if@openright\cleardoublepage\else\clearpage\fi \pagenumbering{roman}% \pagestyle{plain}% \begingroup \parskip \z@skip - \py@OldTableofcontents + \tableofcontents \endgroup % before resetting page counter, let's do the right thing. \if@openright\cleardoublepage\else\clearpage\fi @@ -108,23 +107,19 @@ % Fix the bibliography environment to add an entry to the Table of % Contents. % For a report document class this environment is a chapter. -\let\py@OldThebibliography=\thebibliography -\renewcommand{\thebibliography}[1]{ +\newenvironment{sphinxthebibliography}[1]{% \if@openright\cleardoublepage\else\clearpage\fi \phantomsection - \py@OldThebibliography{1} - \addcontentsline{toc}{chapter}{\bibname} -} + \begin{thebibliography}{\detokenize{#1}}% + \addcontentsline{toc}{chapter}{\bibname}}{\end{thebibliography}} % Same for the indices. % The memoir class already does this, so we don't duplicate it in that case. % -\@ifclassloaded{memoir}{}{ - \let\py@OldTheindex=\theindex - \renewcommand{\theindex}{ +\@ifclassloaded{memoir} + {\newenvironment{sphinxtheindex}{\begin{theindex}}{\end{theindex}}} + {\newenvironment{sphinxtheindex}{% \if@openright\cleardoublepage\else\clearpage\fi \phantomsection - \py@OldTheindex - \addcontentsline{toc}{chapter}{\indexname} - } -} + \begin{theindex}% + \addcontentsline{toc}{chapter}{\indexname}}{\end{theindex}}} diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 6353e8948..88a06f836 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -291,7 +291,7 @@ class LaTeXTranslator(nodes.NodeVisitor): 'makeindex': '\\makeindex', 'shorthandoff': '', 'maketitle': '\\maketitle', - 'tableofcontents': '\\tableofcontents', + 'tableofcontents': '\\sphinxtableofcontents', 'postamble': '', 'printindex': '\\printindex', 'transition': '\n\n\\bigskip\\hrule{}\\bigskip\n\n', @@ -587,7 +587,7 @@ class LaTeXTranslator(nodes.NodeVisitor): def generate_indices(self): def generate(content, collapsed): - ret.append('\\begin{theindex}\n') + ret.append('\\begin{sphinxtheindex}\n') ret.append('\\def\\bigletter#1{{\\Large\\sffamily#1}' '\\nopagebreak\\vspace{1mm}}\n') for i, (letter, entries) in enumerate(content): @@ -604,7 +604,7 @@ class LaTeXTranslator(nodes.NodeVisitor): ret.append('\\sphinxstyleindexextra{%s}' % self.encode(entry[4])) ret.append('\\sphinxstyleindexpageref{%s:%s}\n' % (entry[2], self.idescape(entry[3]))) - ret.append('\\end{theindex}\n') + ret.append('\\end{sphinxtheindex}\n') ret = [] # latex_domain_indices can be False/True or a list of index names @@ -652,14 +652,14 @@ class LaTeXTranslator(nodes.NodeVisitor): for bi in self.bibitems: if len(widest_label) < len(bi[0]): widest_label = bi[0] - self.body.append(u'\n\\begin{thebibliography}{%s}\n' % widest_label) + self.body.append(u'\n\\begin{sphinxthebibliography}{%s}\n' % widest_label) for bi in self.bibitems: target = self.hypertarget(bi[2] + ':' + bi[3], withdoc=False) self.body.append(u'\\bibitem[%s]{%s}{%s %s}\n' % (self.encode(bi[0]), self.idescape(bi[0]), target, bi[1])) - self.body.append(u'\\end{thebibliography}\n') + self.body.append(u'\\end{sphinxthebibliography}\n') self.bibitems = [] def visit_start_of_file(self, node): From bc8d9aa93d603cc185fa231ad198f5b43c9002b0 Mon Sep 17 00:00:00 2001 From: jfbu Date: Tue, 11 Oct 2016 20:52:19 +0200 Subject: [PATCH 055/297] fix accidental replacement of section by chapter --- sphinx/texinputs/sphinxhowto.cls | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sphinx/texinputs/sphinxhowto.cls b/sphinx/texinputs/sphinxhowto.cls index f0d3e1d74..425153dd4 100644 --- a/sphinx/texinputs/sphinxhowto.cls +++ b/sphinx/texinputs/sphinxhowto.cls @@ -93,7 +93,7 @@ \newenvironment{sphinxthebibliography}[1]{% \phantomsection \begin{thebibliography}{\detokenize{#1}}% - \addcontentsline{toc}{chapter}{\bibname}}{\end{thebibliography}} + \addcontentsline{toc}{section}{\bibname}}{\end{thebibliography}} % Same for the indices. @@ -104,4 +104,4 @@ {\newenvironment{sphinxtheindex}{% \phantomsection \begin{theindex}% - \addcontentsline{toc}{chapter}{\indexname}}{\end{theindex}}} + \addcontentsline{toc}{section}{\indexname}}{\end{theindex}}} From b0a3b6cbc065fab4ea184d8b0da4e94e8e222842 Mon Sep 17 00:00:00 2001 From: jfbu Date: Tue, 11 Oct 2016 20:55:00 +0200 Subject: [PATCH 056/297] fix typo in config.rst --- doc/config.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/config.rst b/doc/config.rst index 221ca5c3b..7f8ad4c40 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -1748,7 +1748,8 @@ These options influence LaTeX output. See further :doc:`latex`. ``'Release'``. ``'tableofcontents'`` "tableofcontents" call, default ``'\\sphinxtableofcontents'`` (it is a - wrapper of unmodified ``tableofcontents``.) + wrapper of unmodified ``\tableofcontents``, which may itself be + customized by user loaded packages.) Override if you want to generate a different table of contents or put content between the title page and the TOC. From 49031c3c40c8ccb62076d8be2a681c215ce30dc1 Mon Sep 17 00:00:00 2001 From: jfbu Date: Tue, 11 Oct 2016 22:50:12 +0200 Subject: [PATCH 057/297] make sphinx latex style file use a package option for handling of ``latex_keep_old_macro_names`` conf.py setting --- sphinx/templates/latex/content.tex_t | 2 +- sphinx/texinputs/sphinx.sty | 4 ++++ sphinx/writers/latex.py | 5 +++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/sphinx/templates/latex/content.tex_t b/sphinx/templates/latex/content.tex_t index b9466e7ce..9361961c5 100644 --- a/sphinx/templates/latex/content.tex_t +++ b/sphinx/templates/latex/content.tex_t @@ -1,6 +1,6 @@ %% Generated by Sphinx. \def\sphinxdocclass{<%= docclass %>} -\newif\ifsphinxKeepOldNames <%= keepoldnames %> +<%= keepoldnames %> \documentclass[<%= papersize %>,<%= pointsize %><%= classoptions %>]{<%= wrapperclass %>} \ifdefined\pdfpxdimen \let\sphinxpxdimen\pdfpxdimen\else\newdimen\sphinxpxdimen diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index f3608c376..76926efdf 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -7,6 +7,10 @@ \NeedsTeXFormat{LaTeX2e}[1995/12/01] \ProvidesPackage{sphinx}[2016/06/10 LaTeX package (Sphinx markup)] +\newif\ifsphinxKeepOldNames \sphinxKeepOldNamestrue +\DeclareOption{dontkeepoldnames}{\sphinxKeepOldNamesfalse} +\DeclareOption*{\PackageWarning{sphinx}{Unknown option `\CurrentOption'}} +\ProcessOptions\relax % this is the \ltx@ifundefined of ltxcmds.sty, which is loaded by % hyperref.sty, but we need it before, and initial ltxcmds.sty diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 6353e8948..7200a5769 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -350,9 +350,10 @@ class LaTeXTranslator(nodes.NodeVisitor): }) # set-up boolean for sphinx.sty if builder.config.latex_keep_old_macro_names: - self.elements['keepoldnames'] = '\\sphinxKeepOldNamestrue' + self.elements['keepoldnames'] = '' else: - self.elements['keepoldnames'] = '\\sphinxKeepOldNamesfalse' + self.elements['keepoldnames'] = ('\\PassOptionsToPackage' + '{dontkeepoldnames}{sphinx}') if document.settings.docclass == 'howto': docclass = builder.config.latex_docclass.get('howto', 'article') else: From 9826be6f69917fac1e9fde20ab1df61258ffbf69 Mon Sep 17 00:00:00 2001 From: jfbu Date: Tue, 11 Oct 2016 23:12:27 +0200 Subject: [PATCH 058/297] fix forgotten needed redefinitions in sphinx.sty for jsclasses --- sphinx/texinputs/sphinx.sty | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index f3608c376..e0535fdbe 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -923,16 +923,15 @@ % fix the double index and bibliography on the table of contents % in jsclasses (Japanese standard document classes) \ifx\@jsc@uplatextrue\undefined\else - \renewcommand{\theindex}{ - \cleardoublepage - \phantomsection - \py@OldTheindex - } - \renewcommand{\thebibliography}[1]{ - \cleardoublepage - \phantomsection - \py@OldThebibliography{1} - } + \renewenvironment{sphinxtheindex} + {\cleardoublepage\phantomsection + \begin{theindex}} + {\end{theindex}} + + \renewenvironment{sphinxthebibliography}[1] + {\cleardoublepage\phantomsection + \begin{thebibliography}{\detokenize{#1}}} + {\end{thebibliography}} \fi % disable \@chappos in Appendix in pTeX From 1a540247b61ba96424882d987ac065b201a3e3ba Mon Sep 17 00:00:00 2001 From: jfbu Date: Wed, 12 Oct 2016 08:32:24 +0200 Subject: [PATCH 059/297] make sphinx prefixed names known to non-Sphinx document classes --- sphinx/texinputs/sphinx.sty | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index e0535fdbe..731240c5c 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -1019,3 +1019,8 @@ % stylesheet for highlighting with pygments \RequirePackage{sphinxhighlight} + +% make commands known to non-Sphinx document classes +\providecommand*{\sphinxtableofcontents}{\tableofcontents} +\providecommand*{\sphinxthebibliography}{\thebibliography} +\providecommand*{\sphinxtheindex}{\theindex} From cbe0ce6beb9757ed51d520cfb006774a8592951a Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Tue, 11 Oct 2016 20:09:47 +0900 Subject: [PATCH 060/297] Add example of conf.py to doc/config.rst --- doc/_static/conf.py.txt | 359 ++++++++++++++++++++++++++++++++++++++++ doc/config.rst | 5 + 2 files changed, 364 insertions(+) create mode 100644 doc/_static/conf.py.txt diff --git a/doc/_static/conf.py.txt b/doc/_static/conf.py.txt new file mode 100644 index 000000000..73714879f --- /dev/null +++ b/doc/_static/conf.py.txt @@ -0,0 +1,359 @@ +# -*- coding: utf-8 -*- +# +# test documentation build configuration file, created by +# sphinx-quickstart on Sun Jun 26 00:00:43 2016. +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +# import os +# import sys +# sys.path.insert(0, os.path.abspath('.')) + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +# +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The encoding of source files. +# +# source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'test' +copyright = u'2016, test' +author = u'test' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = u'test' +# The full version, including alpha/beta/rc tags. +release = u'test' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +# +# today = '' +# +# Else, today_fmt is used as the format for a strftime call. +# +# today_fmt = '%B %d, %Y' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This patterns also effect to html_static_path and html_extra_path +exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] + +# The reST default role (used for this markup: `text`) to use for all +# documents. +# +# default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +# +# add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +# +# add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +# +# show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# A list of ignored prefixes for module index sorting. +# modindex_common_prefix = [] + +# If true, keep warnings as "system message" paragraphs in the built documents. +# keep_warnings = False + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = False + + +# -- Options for HTML output ---------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'alabaster' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +# html_theme_options = {} + +# Add any paths that contain custom themes here, relative to this directory. +# html_theme_path = [] + +# The name for this set of Sphinx documents. +# " v documentation" by default. +# +# html_title = u'test vtest' + +# A shorter title for the navigation bar. Default is the same as html_title. +# +# html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +# +# html_logo = None + +# The name of an image file (relative to this directory) to use as a favicon of +# the docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +# +# html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# Add any extra paths that contain custom files (such as robots.txt or +# .htaccess) here, relative to this directory. These files are copied +# directly to the root of the documentation. +# +# html_extra_path = [] + +# If not None, a 'Last updated on:' timestamp is inserted at every page +# bottom, using the given strftime format. +# The empty string is equivalent to '%b %d, %Y'. +# +# html_last_updated_fmt = None + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +# +# html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +# +# html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +# +# html_additional_pages = {} + +# If false, no module index is generated. +# +# html_domain_indices = True + +# If false, no index is generated. +# +# html_use_index = True + +# If true, the index is split into individual pages for each letter. +# +# html_split_index = False + +# If true, links to the reST sources are added to the pages. +# +# html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +# +# html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +# +# html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +# +# html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +# html_file_suffix = None + +# Language to be used for generating the HTML full-text search index. +# Sphinx supports the following languages: +# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja' +# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr', 'zh' +# +# html_search_language = 'en' + +# A dictionary with options for the search language support, empty by default. +# 'ja' uses this config value. +# 'zh' user can custom change `jieba` dictionary path. +# +# html_search_options = {'type': 'default'} + +# The name of a javascript file (relative to the configuration directory) that +# implements a search results scorer. If empty, the default will be used. +# +# html_search_scorer = 'scorer.js' + +# Output file base name for HTML help builder. +htmlhelp_basename = 'testdoc' + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', + + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'test.tex', u'test Documentation', + u'test', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +# +# latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +# +# latex_use_parts = False + +# If true, show page references after internal links. +# +# latex_show_pagerefs = False + +# If true, show URL addresses after external links. +# +# latex_show_urls = False + +# Documents to append as an appendix to all manuals. +# +# latex_appendices = [] + +# It false, will not define \strong, \code, itleref, \crossref ... but only +# \sphinxstrong, ..., \sphinxtitleref, ... To help avoid clash with user added +# packages. +# +# latex_keep_old_macro_names = True + +# If false, no module index is generated. +# +# latex_domain_indices = True + + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'test', u'test Documentation', + [author], 1) +] + +# If true, show URL addresses after external links. +# +# man_show_urls = False + + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'test', u'test Documentation', + author, 'test', 'One line description of project.', + 'Miscellaneous'), +] + +# Documents to append as an appendix to all manuals. +# +# texinfo_appendices = [] + +# If false, no module index is generated. +# +# texinfo_domain_indices = True + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +# +# texinfo_show_urls = 'footnote' + +# If true, do not generate a @detailmenu in the "Top" node's menu. +# +# texinfo_no_detailmenu = False + +import sys, os +sys.path.insert(0, os.path.abspath('.')) +exclude_patterns = ['zzz'] + +numfig = True +#language = 'ja' + +extensions.append('sphinx.ext.autodoc') +extensions.append('sphinx.ext.todo') +extensions.append('sphinx.ext.autodoc') +#extensions.append('sphinx.ext.autosummary') +extensions.append('sphinx.ext.intersphinx') +extensions.append('sphinx.ext.mathjax') +extensions.append('sphinx.ext.viewcode') +extensions.append('sphinx.ext.graphviz') + + +autosummary_generate = True +html_theme = 'default' +#source_suffix = ['.rst', '.txt'] diff --git a/doc/config.rst b/doc/config.rst index e12b9561f..b12aab434 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -2089,3 +2089,8 @@ Options for the C++ domain .. versionadded:: 1.5 +example of configuration file +============================= + +.. literalinclude:: _static/conf.py.txt + :language: python From f22bbf668d70127b8af103a56d98b721142543b5 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Wed, 12 Oct 2016 19:32:48 +0900 Subject: [PATCH 061/297] Add testcase for reversed toctree --- tests/roots/test-toctree-glob/index.rst | 16 ++++++++++++++++ tests/test_environment_toctree.py | 23 +++++++++++++++++++---- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/tests/roots/test-toctree-glob/index.rst b/tests/roots/test-toctree-glob/index.rst index 079cd6027..ff5ba8fe7 100644 --- a/tests/roots/test-toctree-glob/index.rst +++ b/tests/roots/test-toctree-glob/index.rst @@ -1,6 +1,9 @@ test-toctree-glob ================= +normal order +------------ + .. toctree:: :glob: @@ -9,3 +12,16 @@ test-toctree-glob bar/* baz qux/index + +reversed order +------------- + +.. toctree:: + :glob: + :reverse: + + foo + bar/index + bar/* + baz + qux/index diff --git a/tests/test_environment_toctree.py b/tests/test_environment_toctree.py index fe10da660..20188c16a 100644 --- a/tests/test_environment_toctree.py +++ b/tests/test_environment_toctree.py @@ -108,20 +108,35 @@ def test_glob(app, status, warning): toctree = app.env.tocs['index'] assert_node(toctree, [bullet_list, list_item, (compact_paragraph, # [0][0] - [bullet_list, addnodes.toctree])]) # [0][1][0] + [bullet_list, (list_item, # [0][1][0] + list_item)])]) # [0][1][1] assert_node(toctree[0][0], [compact_paragraph, reference, "test-toctree-glob"]) - assert_node(toctree[0][1][0], addnodes.toctree, caption=None, + assert_node(toctree[0][1][0], + [list_item, ([compact_paragraph, reference, "normal order"], + [bullet_list, addnodes.toctree])]) # [0][1][0][1][0] + assert_node(toctree[0][1][0][1][0], addnodes.toctree, caption=None, glob=True, hidden=False, titlesonly=False, maxdepth=-1, numbered=0, includefiles=includefiles, entries=[(None, 'foo'), (None, 'bar/index'), (None, 'bar/bar_1'), (None, 'bar/bar_2'), (None, 'bar/bar_3'), (None, 'baz'), (None, 'qux/index')]) + assert_node(toctree[0][1][1], + [list_item, ([compact_paragraph, reference, "reversed order"], + [bullet_list, addnodes.toctree])]) # [0][1][1][1][0] + assert_node(toctree[0][1][1][1][0], addnodes.toctree, caption=None, + glob=True, hidden=False, titlesonly=False, + maxdepth=-1, numbered=0, includefiles=includefiles, + entries=[(None, 'qux/index'), (None, 'baz'), (None, 'bar/bar_3'), + (None, 'bar/bar_2'), (None, 'bar/bar_1'), (None, 'bar/index'), + (None, 'foo')]) + includefiles = ['foo', 'bar/index', 'bar/bar_1', 'bar/bar_2', + 'bar/bar_3', 'baz', 'qux/index'] # other collections - assert app.env.toc_num_entries['index'] == 1 - assert app.env.toctree_includes['index'] == includefiles + assert app.env.toc_num_entries['index'] == 3 + assert app.env.toctree_includes['index'] == includefiles + includefiles for file in includefiles: assert 'index' in app.env.files_to_rebuild[file] assert 'index' in app.env.glob_toctrees From c8fe4a1848b8d6734d5c9bd7439dcaac385980ac Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Wed, 12 Oct 2016 19:36:49 +0900 Subject: [PATCH 062/297] Rename :reverse: option of toctree directive to :reversed: --- doc/markup/toctree.rst | 4 ++-- sphinx/directives/other.py | 4 ++-- tests/roots/test-toctree-glob/index.rst | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/markup/toctree.rst b/doc/markup/toctree.rst index 81f99504e..a0161ee3c 100644 --- a/doc/markup/toctree.rst +++ b/doc/markup/toctree.rst @@ -123,13 +123,13 @@ tables of contents. The ``toctree`` directive is the central element. toctree directive. This is useful if you want to generate a "sitemap" from the toctree. - You can use the ``reverse`` flag option to reverse the order of the entries + You can use the ``reversed`` flag option to reverse the order of the entries in the list. This can be useful when using the ``glob`` flag option to reverse the ordering of the files. Example:: .. toctree:: :glob: - :reverse: + :reversed: recipe/* diff --git a/sphinx/directives/other.py b/sphinx/directives/other.py index 23671be07..1c9c5016b 100644 --- a/sphinx/directives/other.py +++ b/sphinx/directives/other.py @@ -46,7 +46,7 @@ class TocTree(Directive): 'includehidden': directives.flag, 'numbered': int_or_nothing, 'titlesonly': directives.flag, - 'reverse': directives.flag, + 'reversed': directives.flag, } def run(self): @@ -110,7 +110,7 @@ class TocTree(Directive): subnode = addnodes.toctree() subnode['parent'] = env.docname # entries contains all entries (self references, external links etc.) - if 'reverse' in self.options: + if 'reversed' in self.options: entries.reverse() subnode['entries'] = entries # includefiles only entries that are documents diff --git a/tests/roots/test-toctree-glob/index.rst b/tests/roots/test-toctree-glob/index.rst index ff5ba8fe7..a3c198ce3 100644 --- a/tests/roots/test-toctree-glob/index.rst +++ b/tests/roots/test-toctree-glob/index.rst @@ -18,7 +18,7 @@ reversed order .. toctree:: :glob: - :reverse: + :reversed: foo bar/index From d87608ea1dcabdc041295e222c135786c8f75fa9 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Wed, 12 Oct 2016 19:37:36 +0900 Subject: [PATCH 063/297] Update CHANGES for PR#2527 --- CHANGES | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES b/CHANGES index 5d0abbad3..2e1fc1d29 100644 --- a/CHANGES +++ b/CHANGES @@ -15,6 +15,7 @@ Features added * #3008: ``linkcheck`` builder ignores self-signed certificate URL * #3020: new ``'geometry'`` key to ``latex_elements`` whose default uses LaTeX style file ``geometry.sty`` to set page layout +* #2527: Add ``:reversed:`` option to toctree directive Bugs fixed ---------- From 353e274d4b8acff3ad30ec737ca1c92fa78a22eb Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Wed, 12 Oct 2016 19:55:21 +0900 Subject: [PATCH 064/297] Update CHANGES for PR#2843 --- CHANGES | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES b/CHANGES index 5d0abbad3..dda63e13a 100644 --- a/CHANGES +++ b/CHANGES @@ -15,6 +15,7 @@ Features added * #3008: ``linkcheck`` builder ignores self-signed certificate URL * #3020: new ``'geometry'`` key to ``latex_elements`` whose default uses LaTeX style file ``geometry.sty`` to set page layout +* #2843: Add :start-at: and :end-at: options to literalinclude directive Bugs fixed ---------- From cdafec02ad4d3300d4f0162e71e98aa6736035aa Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Thu, 13 Oct 2016 00:32:28 +0900 Subject: [PATCH 065/297] Fix #3038: ``sphinx.ext.math*`` raises TypeError if labels are duplicated --- CHANGES | 1 + sphinx/ext/mathbase.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index c905dc0be..e95feb529 100644 --- a/CHANGES +++ b/CHANGES @@ -37,6 +37,7 @@ Bugs fixed * #147: Problem with latex chapter style * #3018: LaTeX problem with page layout dimensions and chapter titles * Fix an issue with ``\pysigline`` in LaTeX style file (ref #3023) +* #3038: ``sphinx.ext.math*`` raises TypeError if labels are duplicated Documentation ------------- diff --git a/sphinx/ext/mathbase.py b/sphinx/ext/mathbase.py index 57bcb1c0c..ae4b439b7 100644 --- a/sphinx/ext/mathbase.py +++ b/sphinx/ext/mathbase.py @@ -209,7 +209,7 @@ class MathDirective(Directive): self.state.document.note_explicit_target(target) ret.insert(0, target) except UserWarning as exc: - self.state_machine.reporter.warning(exc[0], line=self.lineno) + self.state_machine.reporter.warning(exc.args[0], line=self.lineno) def latex_visit_math(self, node): From cb74df621c2a7e79f430bb89e84777306fbc13d2 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Thu, 13 Oct 2016 02:25:31 +0900 Subject: [PATCH 066/297] export all directives sphinx provides as sphinx.directive.* (like sphinx-1.4.x) --- sphinx/directives/__init__.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/sphinx/directives/__init__.py b/sphinx/directives/__init__.py index b0c69a8e1..0e712f85f 100644 --- a/sphinx/directives/__init__.py +++ b/sphinx/directives/__init__.py @@ -17,6 +17,18 @@ from docutils.parsers.rst import Directive, directives, roles from sphinx import addnodes from sphinx.util.docfields import DocFieldTransformer +# import all directives sphinx provides +from sphinx.directives.code import ( # noqa + Highlight, CodeBlock, LiteralInclude +) +from sphinx.directives.other import ( # noqa + TocTree, Author, Index, VersionChange, SeeAlso, + TabularColumns, Centered, Acks, HList, Only, Include, Class +) +from sphinx.directives.patches import ( # noqa + Figure, Meta +) + # RE to strip backslash escapes nl_escape_re = re.compile(r'\\\n') From 613b80d3edf6c5e05e1d796180877bc7e096838e Mon Sep 17 00:00:00 2001 From: jfbu Date: Tue, 11 Oct 2016 18:16:47 +0200 Subject: [PATCH 067/297] update latex.rst (``LaTeX customization`` chapter in the docs) --- doc/latex.rst | 88 +++++++++++++++++++++++++++++++++------------------ 1 file changed, 58 insertions(+), 30 deletions(-) diff --git a/doc/latex.rst b/doc/latex.rst index c05d25ef8..58e8f7363 100644 --- a/doc/latex.rst +++ b/doc/latex.rst @@ -11,45 +11,71 @@ LaTeX customization The *latex* target does not (yet) benefit from pre-prepared themes like the *html* target does (see :doc:`theming`). -There are two principal means of setting up customization: +Basic customization is available from ``conf.py`` via usage of the +:ref:`latex-options` as described in :doc:`config`. For example:: -#. usage of the :ref:`latex-options` as described in :doc:`config`, particularly the - various keys of :confval:`latex_elements`, to modify the loaded packages, - for example:: + # inside conf.py + latex_engine = 'xelatex' + latex_elements = { + 'fontenc': '\\usepackage{fontspec}', + 'fontpkg': '''\ + \\setmainfont{DejaVu Serif} + \\setsansfont{DejaVu Sans} + \\setmonofont{DejaVu Sans Mono}''', + 'geometry': '\\usepackage[vmargin=2.5cm, hmargin=3cm]{geometry}', + 'preamble': '''\ + \\usepackage[titles]{tocloft} + \\cftsetpnumwidth {1.25cm}\\cftsetrmarg{1.5cm} + \\setlength{\cftchapnumwidth}{0.75cm} + \\setlength{\cftsecindent}{\\cftchapnumwidth} + \\setlength{\cftsecnumwidth}{1.25cm}''', + 'fncychap': '\\usepackage[Bjornstrup]{fncychap}', + 'printindex': '\\footnotesize\\raggedright\\printindex', + } + latex_show_urls = 'footnote' - 'fontpkg': '\\usepackage{times}', # can load other font - 'fncychap': '\\usepackage[Bjarne]{fncychap}', # can use other option +.. the above was tested on Sphinx's own 1.5a2 documentation with good effect ! - .. tip:: +More advanced customization will be obtained via insertion into the LaTeX +preamble of relevant ``\renewcommand``, ``\renewenvironment``, ``\setlength``, +or ``\definecolor`` commands. The ``'preamble'`` key of +:confval:`latex_elements` will serve for inserting these commands. If they are +numerous, it may prove more convenient to assemble them into a specialized +file :file:`mycustomizedmacros.tex` and then use:: - It is not mandatory to load *fncychap*. Naturally, without it and in - absence of further customizations, the chapter headings will revert to - LaTeX's default for the *report* class. + 'preamble': '\\makeatletter\\input{mycustomizedmacros.tex}\\makeatother', -#. usage of LaTeX ``\renewcommand``, ``\renewenvironment``, ``\setlength``, - ``\definecolor`` to modify the defaults from package file :file:`sphinx.sty` - and class files :file:`sphinxhowto.cls` and :file:`sphinxmanual.cls`. If such - definitions are few, they can be located inside the ``'preamble'`` key of - :confval:`latex_elements`. In case of many it may prove more convenient to - assemble them into a specialized file :file:`customizedmacros.tex` and use:: +More advanced LaTeX users will set up a style file +:file:`mycustomizedmacros.sty`, which can then be loaded via:: - 'preamble': '\\makeatletter\\input{customizedmacros.tex}\\makeatother', + 'preamble': '\\usepackage{mycustomizedmacros}', - More advanced LaTeX users will set up a style file - :file:`customizedmacros.sty`, which can then be loaded via:: +The :ref:`build configuration file ` file for the project needs +to have its variable :confval:`latex_additional_files` appropriately +configured, for example:: - 'preamble': '\\usepackage{customizedmacros}', + latex_additional_files = ["customizedmacros.sty"] - The :ref:`build configuration file ` file will then have its variable - :confval:`latex_additional_files` appropriately configured, for example:: +Such *LaTeX Sphinx theme* files could possibly be contributed in the +future by advanced users for wider use. - latex_additional_files = ["customizedmacros.sty"] +Let us list here some examples of macros, lengths, colors, which are inherited +from package file :file:`sphinx.sty` and class file :file:`sphinxhowto.cls` or +:file:`sphinxmanual.cls`, and can be customized. - Such *LaTeX Sphinx theme* files could possibly be contributed in the - future by advanced users for wider use. +- the table of contents is typeset via ``\sphinxtableofcontents`` which is a + wrapper (whose definition can be found in :file:`sphinxhowto.cls` or in + :file:`sphinxmanual.cls`) of standard ``\tableofcontents``. -Let us illustrate here what can be modified by the second method. + .. versionchanged:: 1.5 + formerly, the meaning of ``\tableofcontents`` was modified by Sphinx. +- the bibliography and Python Module index are typeset respectively within + environments ``sphinxthebibliography`` and ``sphinxtheindex``, which are + simple wrappers of the non-modified ``thebibliography`` and ``theindex`` + environments. + .. versionchanged:: 1.5 + formerly, the original environments were modified by Sphinx. - text styling commands (they have one argument): ``\sphinx`` with ```` being one of ``strong``, ``bfcode``, ``email``, ``tablecontinued``, ``titleref``, ``menuselection``, ``accelerator``, ``crossref``, ``termref``, @@ -128,8 +154,10 @@ Let us illustrate here what can be modified by the second method. .. versionadded:: 1.5 formerly, the use of ``\small`` for code listings was not customizable. -- miscellaneous colours: *TitleColor*, *InnerLinkColor*, *OuterLinkColor*, - *VerbatimColor* (this is a background colour), *VerbatimBorderColor*. +- miscellaneous colours: *InnerLinkColor*, *OuterLinkColor* (used in + ``hyperref`` options), *TitleColor* (used for titles via ``titlesec``), + *VerbatimColor* (background colour) and *VerbatimBorderColor* (used for + code-blocks). - the ``\sphinxAtStartFootnote`` is inserted between footnote numbers and their texts, by default it does ``\mbox{ }``. - use ``\sphinxSetHeaderFamily`` to set the font used by headings @@ -140,8 +168,8 @@ Let us illustrate here what can be modified by the second method. ``\titleformat`` command. - for the ``'manual'`` class, the chapter headings can be customized using *fncychap*'s commands ``\ChNameVar``, ``\ChNumVar``, ``\ChTitleVar``. Or, if - the loading of this package has been removed from ``'fncychap'`` key, one can - use the *titlesec* ``\titleformat`` command. + the loading of this package has been removed via emptying the ``'fncychap'`` + key, one can use the *titlesec* ``\titleformat`` command. .. note:: From 0861ca9a03b9bf5ed229fc63ffe8c7f78cc0452f Mon Sep 17 00:00:00 2001 From: jfbu Date: Wed, 12 Oct 2016 22:33:09 +0200 Subject: [PATCH 068/297] escape some backslashes in latex.rst example code --- doc/latex.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/latex.rst b/doc/latex.rst index 58e8f7363..76cdf33dc 100644 --- a/doc/latex.rst +++ b/doc/latex.rst @@ -26,9 +26,9 @@ Basic customization is available from ``conf.py`` via usage of the 'preamble': '''\ \\usepackage[titles]{tocloft} \\cftsetpnumwidth {1.25cm}\\cftsetrmarg{1.5cm} - \\setlength{\cftchapnumwidth}{0.75cm} - \\setlength{\cftsecindent}{\\cftchapnumwidth} - \\setlength{\cftsecnumwidth}{1.25cm}''', + \\setlength{\\cftchapnumwidth}{0.75cm} + \\setlength{\\cftsecindent}{\\cftchapnumwidth} + \\setlength{\\cftsecnumwidth}{1.25cm}''', 'fncychap': '\\usepackage[Bjornstrup]{fncychap}', 'printindex': '\\footnotesize\\raggedright\\printindex', } From c3b6f8cc95211e76ac29d3109b86a3226a8434b9 Mon Sep 17 00:00:00 2001 From: jfbu Date: Wed, 12 Oct 2016 22:42:12 +0200 Subject: [PATCH 069/297] Update CHANGES for PR#3032 --- CHANGES | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES b/CHANGES index e95feb529..6ae0f8e2c 100644 --- a/CHANGES +++ b/CHANGES @@ -38,6 +38,7 @@ Bugs fixed * #3018: LaTeX problem with page layout dimensions and chapter titles * Fix an issue with ``\pysigline`` in LaTeX style file (ref #3023) * #3038: ``sphinx.ext.math*`` raises TypeError if labels are duplicated +* #3031: incompatibility with LaTeX package ``tocloft`` Documentation ------------- From 59ba8c1dee4451673ca2a96c2946a698ef6a19b4 Mon Sep 17 00:00:00 2001 From: Jonathan Harker Date: Thu, 13 Oct 2016 16:34:19 +1300 Subject: [PATCH 070/297] Fix #3028: figure_language_filename format tokens, document tokens. --- doc/config.rst | 16 ++++++++++++++++ sphinx/util/i18n.py | 12 +++++++++--- tests/test_util_i18n.py | 12 ++++++++++++ 3 files changed, 37 insertions(+), 3 deletions(-) diff --git a/doc/config.rst b/doc/config.rst index 8ef6a6de3..fae378a1d 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -599,9 +599,25 @@ documentation on :ref:`intl` for details. The filename format for language-specific figures. The default value is ``{root}.{language}{ext}``. It will be expanded to ``dirname/filename.en.png`` from ``.. image:: dirname/filename.png``. + The available format tokens are: + + * ``{root}`` - the filename, including any path component, without the file + extension, e.g. ``dirname/filename`` + * ``{path}`` - the directory path component of the filename, with a trailing + slash if non-empty, e.g. ``dirname/`` + * ``{basename}`` - the filename without the directory path or file extension + components, e.g. ``filename`` + * ``{ext}`` - the file extension, e.g. ``.png`` + * ``{language}`` - the translation language, e.g. ``en`` + + For example, setting this to ``{path}{language}/{basename}{ext}`` will + expand to ``dirname/en/filename.png`` instead. .. versionadded:: 1.4 + .. versionchanged:: 1.5 + Added ``{path}`` and ``{basename}`` tokens. + .. _html-options: Options for HTML output diff --git a/sphinx/util/i18n.py b/sphinx/util/i18n.py index d0cb1f443..446925cdb 100644 --- a/sphinx/util/i18n.py +++ b/sphinx/util/i18n.py @@ -229,10 +229,16 @@ def get_image_filename_for_language(filename, env): return filename filename_format = env.config.figure_language_filename - root, ext = path.splitext(filename) + d = dict() + d['root'], d['ext'] = path.splitext(filename) + dirname = path.dirname(d['root']) + if dirname and not dirname.endswith(path.sep): + dirname += path.sep + d['path'] = dirname + d['basename'] = path.basename(d['root']) + d['language'] = env.config.language try: - return filename_format.format(root=root, ext=ext, - language=env.config.language) + return filename_format.format(**d) except KeyError as exc: raise SphinxError('Invalid figure_language_filename: %r' % exc) diff --git a/tests/test_util_i18n.py b/tests/test_util_i18n.py index 3e0cfd5f3..849796a8f 100644 --- a/tests/test_util_i18n.py +++ b/tests/test_util_i18n.py @@ -255,6 +255,18 @@ def test_get_filename_for_language(): '../foo.png', app.env) == 'images/en/../foo.png' assert i18n.get_image_filename_for_language('foo', app.env) == 'images/en/foo' + # new path and basename tokens + app.env.config.language = 'en' + app.env.config.figure_language_filename = '{path}{language}/{basename}{ext}' + assert i18n.get_image_filename_for_language('foo.png', app.env) == 'en/foo.png' + assert i18n.get_image_filename_for_language( + 'foo.bar.png', app.env) == 'en/foo.bar.png' + assert i18n.get_image_filename_for_language( + 'subdir/foo.png', app.env) == 'subdir/en/foo.png' + assert i18n.get_image_filename_for_language( + '../foo.png', app.env) == '../en/foo.png' + assert i18n.get_image_filename_for_language('foo', app.env) == 'en/foo' + # invalid figure_language_filename app.env.config.figure_language_filename = '{root}.{invalid}{ext}' raises(SphinxError, i18n.get_image_filename_for_language, 'foo.png', app.env) From a16cb8ea57b68a560e3fcf41b75006bde6f316e0 Mon Sep 17 00:00:00 2001 From: jfbu Date: Thu, 13 Oct 2016 10:42:40 +0200 Subject: [PATCH 071/297] update info strings of Sphinx LaTeX style file and classes makes latex compilation logs more precise --- sphinx/texinputs/sphinx.sty | 2 +- sphinx/texinputs/sphinxhowto.cls | 2 +- sphinx/texinputs/sphinxmanual.cls | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index 3166fa511..c184f8bb5 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -6,7 +6,7 @@ % \NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesPackage{sphinx}[2016/06/10 LaTeX package (Sphinx markup)] +\ProvidesPackage{sphinx}[2016/10/12 v1.5 LaTeX package (Sphinx markup)] \newif\ifsphinxKeepOldNames \sphinxKeepOldNamestrue \DeclareOption{dontkeepoldnames}{\sphinxKeepOldNamesfalse} \DeclareOption*{\PackageWarning{sphinx}{Unknown option `\CurrentOption'}} diff --git a/sphinx/texinputs/sphinxhowto.cls b/sphinx/texinputs/sphinxhowto.cls index 425153dd4..8bba94935 100644 --- a/sphinx/texinputs/sphinxhowto.cls +++ b/sphinx/texinputs/sphinxhowto.cls @@ -3,7 +3,7 @@ % \NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesClass{sphinxhowto}[2009/06/02 Document class (Sphinx HOWTO)] +\ProvidesClass{sphinxhowto}[2016/10/12 v1.5 Document class (Sphinx HOWTO)] \ifx\directlua\undefined\else % if compiling with lualatex 0.85 or later load compatibility patch issued by diff --git a/sphinx/texinputs/sphinxmanual.cls b/sphinx/texinputs/sphinxmanual.cls index 7cdb6988a..52e4d40b0 100644 --- a/sphinx/texinputs/sphinxmanual.cls +++ b/sphinx/texinputs/sphinxmanual.cls @@ -3,7 +3,7 @@ % \NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesClass{sphinxmanual}[2009/06/02 Document class (Sphinx manual)] +\ProvidesClass{sphinxmanual}[2016/10/12 v1.5 Document class (Sphinx manual)] \ifx\directlua\undefined\else % if compiling with lualatex 0.85 or later load compatibility patch issued by From 44907736ec8f39c1f537d7ff0196eacf95eb9299 Mon Sep 17 00:00:00 2001 From: jfbu Date: Thu, 13 Oct 2016 14:09:43 +0200 Subject: [PATCH 072/297] update more latex.rst --- doc/latex.rst | 57 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 34 insertions(+), 23 deletions(-) diff --git a/doc/latex.rst b/doc/latex.rst index 76cdf33dc..9bc48a0af 100644 --- a/doc/latex.rst +++ b/doc/latex.rst @@ -8,7 +8,7 @@ LaTeX customization .. module:: latex :synopsis: LaTeX specifics. -The *latex* target does not (yet) benefit from pre-prepared themes like the +The *latex* target does not benefit from pre-prepared themes like the *html* target does (see :doc:`theming`). Basic customization is available from ``conf.py`` via usage of the @@ -54,7 +54,7 @@ The :ref:`build configuration file ` file for the project needs to have its variable :confval:`latex_additional_files` appropriately configured, for example:: - latex_additional_files = ["customizedmacros.sty"] + latex_additional_files = ["mycustomizedmacros.sty"] Such *LaTeX Sphinx theme* files could possibly be contributed in the future by advanced users for wider use. @@ -63,19 +63,6 @@ Let us list here some examples of macros, lengths, colors, which are inherited from package file :file:`sphinx.sty` and class file :file:`sphinxhowto.cls` or :file:`sphinxmanual.cls`, and can be customized. -- the table of contents is typeset via ``\sphinxtableofcontents`` which is a - wrapper (whose definition can be found in :file:`sphinxhowto.cls` or in - :file:`sphinxmanual.cls`) of standard ``\tableofcontents``. - - .. versionchanged:: 1.5 - formerly, the meaning of ``\tableofcontents`` was modified by Sphinx. -- the bibliography and Python Module index are typeset respectively within - environments ``sphinxthebibliography`` and ``sphinxtheindex``, which are - simple wrappers of the non-modified ``thebibliography`` and ``theindex`` - environments. - - .. versionchanged:: 1.5 - formerly, the original environments were modified by Sphinx. - text styling commands (they have one argument): ``\sphinx`` with ```` being one of ``strong``, ``bfcode``, ``email``, ``tablecontinued``, ``titleref``, ``menuselection``, ``accelerator``, ``crossref``, ``termref``, @@ -86,7 +73,9 @@ from package file :file:`sphinx.sty` and class file :file:`sphinxhowto.cls` or .. versionchanged:: 1.4.5 use of ``\sphinx`` prefixed macro names to limit possibilities of conflict - with user added packages. The LaTeX writer uses always the prefixed names. + with user added packages: if + :confval:`latex_keep_old_macro_names` is set to ``False`` in + :file:`conf.py` only the prefixed names are defined. - more text styling commands: ``\sphinxstyle`` with ```` one of ``indexentry``, ``indexextra``, ``indexpageref``, ``topictitle``, ``sidebartitle``, ``othertitle``, ``sidebarsubtitle``, ``thead``, @@ -94,7 +83,9 @@ from package file :file:`sphinx.sty` and class file :file:`sphinxhowto.cls` or ``abbreviation``, ``literalintitle``. .. versionadded:: 1.5 - earlier, the LaTeX writer used hard-coded ``\texttt``, ``\emph``, etc... + the new macros are wrappers of the formerly hard-coded ``\texttt``, + ``\emph``, ... The default definitions can be found near the end of + :file:`sphinx.sty`. - parameters for paragraph level environments: with ```` one of :dudir:`warning`, :dudir:`caution`, :dudir:`attention`, :dudir:`danger`, :dudir:`error`, the colours @@ -157,7 +148,7 @@ from package file :file:`sphinx.sty` and class file :file:`sphinxhowto.cls` or - miscellaneous colours: *InnerLinkColor*, *OuterLinkColor* (used in ``hyperref`` options), *TitleColor* (used for titles via ``titlesec``), *VerbatimColor* (background colour) and *VerbatimBorderColor* (used for - code-blocks). + displaying source code examples). - the ``\sphinxAtStartFootnote`` is inserted between footnote numbers and their texts, by default it does ``\mbox{ }``. - use ``\sphinxSetHeaderFamily`` to set the font used by headings @@ -165,11 +156,31 @@ from package file :file:`sphinx.sty` and class file :file:`sphinxhowto.cls` or .. versionadded:: 1.5 - the section, subsection, ... headings are set using *titlesec*'s - ``\titleformat`` command. -- for the ``'manual'`` class, the chapter headings can be customized using - *fncychap*'s commands ``\ChNameVar``, ``\ChNumVar``, ``\ChTitleVar``. Or, if - the loading of this package has been removed via emptying the ``'fncychap'`` - key, one can use the *titlesec* ``\titleformat`` command. + ``\titleformat`` command. Check :file:`sphinx.sty` for the definitions. +- for the ``'sphinxmanual'`` class (corresponding to the fifth element of + :confval:`latex_documents` being set to ``'manual'``), the chapter headings + can be customized using *fncychap*'s commands ``\ChNameVar``, ``\ChNumVar``, + ``\ChTitleVar``. Check :file:`sphinx.sty` for the default definitions. They + are applied only if *fncychap* is loaded with option ``Bjarne``. It is also + possible to use an empty ``'fncychap'`` key, and use the *titlesec* + ``\titleformat`` command to style the chapter titles. + + .. versionchanged:: 1.5 + formerly, use of *fncychap* with other styles than ``Bjarne`` was + dysfunctional. +- the table of contents is typeset via ``\sphinxtableofcontents`` which is a + wrapper (whose definition can be found in :file:`sphinxhowto.cls` or in + :file:`sphinxmanual.cls`) of standard ``\tableofcontents``. + + .. versionchanged:: 1.5 + formerly, the meaning of ``\tableofcontents`` was modified by Sphinx. +- the bibliography and Python Module index are typeset respectively within + environments ``sphinxthebibliography`` and ``sphinxtheindex``, which are + simple wrappers of the non-modified ``thebibliography`` and ``theindex`` + environments. + + .. versionchanged:: 1.5 + formerly, the original environments were modified by Sphinx. .. note:: From 2981664178c17cfcbd46ee5af6f3329529490b60 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Thu, 8 Sep 2016 11:31:17 +0900 Subject: [PATCH 073/297] sphinx-quickstart supports user templates (ref: #2912) --- CHANGES | 2 ++ doc/invocation.rst | 26 ++++++++++++++++++++++++++ sphinx/quickstart.py | 32 +++++++++++++++++++++++++++++--- sphinx/util/template.py | 4 ++++ 4 files changed, 61 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index 6ae0f8e2c..c59fce53f 100644 --- a/CHANGES +++ b/CHANGES @@ -18,6 +18,8 @@ Features added LaTeX style file ``geometry.sty`` to set page layout * #2843: Add :start-at: and :end-at: options to literalinclude directive * #2527: Add ``:reversed:`` option to toctree directive +* Add ``-t`` and ``-d`` option to ``sphinx-quickstart`` to support templating + generated sphinx project. Bugs fixed ---------- diff --git a/doc/invocation.rst b/doc/invocation.rst index 37c5938c1..a723b43f3 100644 --- a/doc/invocation.rst +++ b/doc/invocation.rst @@ -138,6 +138,32 @@ Makefile and Batchfile creation options .. versionadded:: 1.3 Add various options for sphinx-quickstart invocation. +Project templating +------------------ + +.. option:: -t, --templatedir=TEMPLATEDIR + + Template directory for template files. You can modify the templates of + sphinx project files generated by quickstart. Following Jinja2 template + files are allowed: + + * master_doc.rst_t + * conf.py_t + * Makefile_t + * Makefile.new_t + * make.bat_t + * make.bat.new_t + + In detail, please refer the system template files Sphinx provides. + (sphinx/templates/quickstart) + +.. option:: -d NAME=VALUE + + Define a template variable + +.. versionadded:: 1.5 + Project templating options for sphinx-quickstart + Invocation of sphinx-build ========================== diff --git a/sphinx/quickstart.py b/sphinx/quickstart.py index f7e6ad38a..61abbb092 100644 --- a/sphinx/quickstart.py +++ b/sphinx/quickstart.py @@ -182,6 +182,19 @@ def convert_python_source(source, rex=re.compile(r"[uU]('.*?')")): return source +class QuickstartRenderer(SphinxRenderer): + def __init__(self, templatedir): + self.templatedir = templatedir or '' + super(QuickstartRenderer, self).__init__() + + def render(self, template_name, context): + user_template = path.join(self.templatedir, path.basename(template_name)) + if self.templatedir and path.exists(user_template): + return self.render_from_file(user_template, context) + else: + return super(QuickstartRenderer, self).render(template_name, context) + + def ask_user(d): """Ask the user for quickstart values missing from *d*. @@ -357,9 +370,9 @@ directly.''') print() -def generate(d, overwrite=True, silent=False): +def generate(d, overwrite=True, silent=False, templatedir=None): """Generate project based on values in *d*.""" - template = SphinxRenderer() + template = QuickstartRenderer(templatedir=templatedir) texescape.init() indent = ' ' * 4 @@ -588,6 +601,12 @@ def main(argv=sys.argv): default=True, help='use make-mode for Makefile/make.bat') + group = parser.add_option_group('Project templating') + group.add_option('-t', '--templatedir', metavar='TEMPLATEDIR', dest='templatedir', + help='template directory for template files') + group.add_option('-d', metavar='NAME=VALUE', action='append', dest='variables', + help='define a template variable') + # parse options try: opts, args = parser.parse_args(argv[1:]) @@ -640,7 +659,14 @@ def main(argv=sys.argv): if isinstance(value, binary_type): d[key] = term_decode(value) - generate(d) + for variable in d.get('variables', []): + try: + name, value = variable.split('=') + d[name] = value + except ValueError: + print('Invalid template variable: %s' % variable) + + generate(d, templatedir=opts.templatedir) if __name__ == '__main__': sys.exit(main(sys.argv)) diff --git a/sphinx/util/template.py b/sphinx/util/template.py index b89a4c960..7cb897e7d 100644 --- a/sphinx/util/template.py +++ b/sphinx/util/template.py @@ -44,6 +44,10 @@ class SphinxRenderer(FileRenderer): def __init__(self): super(SphinxRenderer, self).__init__(os.path.join(package_dir, 'templates')) + @classmethod + def render_from_file(cls, filename, context): + return FileRenderer.render_from_file(filename, context) + class LaTeXRenderer(SphinxRenderer): def __init__(self): From 6ee4289a950c10582e587e27ba1c5c0a410b4421 Mon Sep 17 00:00:00 2001 From: Yoshiki Shibukawa Date: Fri, 2 Sep 2016 15:25:22 +0900 Subject: [PATCH 074/297] Fix doc/Makefile that can't build man because of doc/man folder exists --- CHANGES | 2 ++ doc/Makefile | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/CHANGES b/CHANGES index 41f0055df..e1fd628a4 100644 --- a/CHANGES +++ b/CHANGES @@ -4,6 +4,8 @@ Release 1.4.9 (in development) Bugs fixed ---------- +* #2936: Fix doc/Makefile that can't build man because doc/man exists + Release 1.4.8 (released Oct 1, 2016) ==================================== diff --git a/doc/Makefile b/doc/Makefile index 559096493..dcd67186d 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -1,3 +1,4 @@ +.PHONY: man # Makefile for Sphinx documentation # @@ -12,6 +13,9 @@ BUILDDIR = _build help: @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) +man: + @$(SPHINXBUILD) -M man "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: From fc3908485c98643d91ada9148e0c0b5ff65f2c27 Mon Sep 17 00:00:00 2001 From: jfbu Date: Thu, 13 Oct 2016 15:47:30 +0200 Subject: [PATCH 075/297] kill unwanted TABs --- doc/latex.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/latex.rst b/doc/latex.rst index 9bc48a0af..8d047582d 100644 --- a/doc/latex.rst +++ b/doc/latex.rst @@ -74,7 +74,7 @@ from package file :file:`sphinx.sty` and class file :file:`sphinxhowto.cls` or .. versionchanged:: 1.4.5 use of ``\sphinx`` prefixed macro names to limit possibilities of conflict with user added packages: if - :confval:`latex_keep_old_macro_names` is set to ``False`` in + :confval:`latex_keep_old_macro_names` is set to ``False`` in :file:`conf.py` only the prefixed names are defined. - more text styling commands: ``\sphinxstyle`` with ```` one of ``indexentry``, ``indexextra``, ``indexpageref``, ``topictitle``, @@ -84,8 +84,8 @@ from package file :file:`sphinx.sty` and class file :file:`sphinxhowto.cls` or .. versionadded:: 1.5 the new macros are wrappers of the formerly hard-coded ``\texttt``, - ``\emph``, ... The default definitions can be found near the end of - :file:`sphinx.sty`. + ``\emph``, ... The default definitions can be found near the end of + :file:`sphinx.sty`. - parameters for paragraph level environments: with ```` one of :dudir:`warning`, :dudir:`caution`, :dudir:`attention`, :dudir:`danger`, :dudir:`error`, the colours @@ -167,7 +167,7 @@ from package file :file:`sphinx.sty` and class file :file:`sphinxhowto.cls` or .. versionchanged:: 1.5 formerly, use of *fncychap* with other styles than ``Bjarne`` was - dysfunctional. + dysfunctional. - the table of contents is typeset via ``\sphinxtableofcontents`` which is a wrapper (whose definition can be found in :file:`sphinxhowto.cls` or in :file:`sphinxmanual.cls`) of standard ``\tableofcontents``. From 4e88bfeff0cd1d7487dba032357382d2bafeb0ca Mon Sep 17 00:00:00 2001 From: jfbu Date: Thu, 13 Oct 2016 20:17:28 +0200 Subject: [PATCH 076/297] (latex) avoid in a better way duplicate name page.1 hyperref warning The ``\pagenumbering{alph}`` trick has the inconvenient that it is mandatory to reset later the page numbering to arabic else errors will arise as soon as the document has more than 26 pages. This resetting is done by Sphinx code for ``\tableofcontents`` now called ``\sphinxtableofcontents`` but not by original ``\tableofcontents``. Thus, user putting ``\tableofcontents`` in ``'tableofcontents'`` key would get errors now without that fix. The titlepage environment creates a group and clears the page before exiting, thus this solution is quite analogous to the one recommended by hyperref author at http://tex.stackexchange.com/a/333219/4686. --- sphinx/texinputs/sphinxmanual.cls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sphinx/texinputs/sphinxmanual.cls b/sphinx/texinputs/sphinxmanual.cls index 52e4d40b0..88e9ba77a 100644 --- a/sphinx/texinputs/sphinxmanual.cls +++ b/sphinx/texinputs/sphinxmanual.cls @@ -41,6 +41,7 @@ % \renewcommand{\maketitle}{% \begin{titlepage}% + \hypersetup{pageanchor=false}% avoid duplicate destination page.1 warning \let\footnotesize\small \let\footnoterule\relax \noindent\rule{\textwidth}{1pt}\ifsphinxpdfoutput\newline\null\fi\par @@ -96,7 +97,6 @@ \pagenumbering{arabic}% \ifdefined\fancyhf\pagestyle{normal}\fi } -\pagenumbering{alph}% avoid hyperref "duplicate destination" warnings % This is needed to get the width of the section # area wide enough in the % library reference. Doing it here keeps it the same for all the manuals. From 340edb32c605eb21cb12d817e28415c1c3fff29a Mon Sep 17 00:00:00 2001 From: jfbu Date: Thu, 13 Oct 2016 23:21:05 +0200 Subject: [PATCH 077/297] (latex) mention Bjornstrup fncychap chapter style in the docs --- doc/config.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/config.rst b/doc/config.rst index 8ef6a6de3..9c32f6ce2 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -1698,8 +1698,8 @@ These options influence LaTeX output. See further :doc:`latex`. (this option is slightly customized by Sphinx), ``'\\usepackage[Sonny]{fncychap}'`` for internationalized docs (because the "Bjarne" style uses numbers spelled out in English). Other - "fncychap" styles you can try include "Lenny", "Glenn", "Conny" and - "Rejne". You can also set this to ``''`` to disable fncychap. + "fncychap" styles you can try are "Lenny", "Glenn", "Conny", "Rejne" and + "Bjornstrup". You can also set this to ``''`` to disable fncychap. ``'passoptionstopackages'`` "PassOptionsToPackage" call, default empty. From 72712a95ae86750e33c4bbc8d9de51d33f38a878 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Fri, 14 Oct 2016 12:00:05 +0900 Subject: [PATCH 078/297] Update CHANGES for PR#3052 --- CHANGES | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES b/CHANGES index c59fce53f..f6e834b3a 100644 --- a/CHANGES +++ b/CHANGES @@ -20,6 +20,8 @@ Features added * #2527: Add ``:reversed:`` option to toctree directive * Add ``-t`` and ``-d`` option to ``sphinx-quickstart`` to support templating generated sphinx project. +* #3028: Add ``{path}`` and ``{basename}`` to the format of + ``figure_language_filename`` Bugs fixed ---------- From 3e7884f5d7dbbc2fe9e1fc770f96083e5f628f2a Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Fri, 14 Oct 2016 12:12:54 +0900 Subject: [PATCH 079/297] Improve message for confval type checking --- sphinx/config.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/sphinx/config.py b/sphinx/config.py index 9e944c468..5741d66bf 100644 --- a/sphinx/config.py +++ b/sphinx/config.py @@ -30,8 +30,10 @@ CONFIG_EXIT_ERROR = "The configuration file (or one of the modules it imports) " "called sys.exit()" CONFIG_ENUM_WARNING = "The config value `{name}` has to be a one of {candidates}, " \ "but `{current}` is given." +CONFIG_PERMITTED_TYPE_WARNING = "The config value `{name}' has type `{current.__name__}', " \ + "expected to {permitted}." CONFIG_TYPE_WARNING = "The config value `{name}' has type `{current.__name__}', " \ - "defaults to `{default.__name__}.'" + "defaults to `{default.__name__}'." class ENUM(object): @@ -186,8 +188,13 @@ class Config(object): if common_bases: continue # at least we share a non-trivial base class - warn(CONFIG_TYPE_WARNING.format( - name=name, current=type(current), default=type(default))) + if permitted: + warn(CONFIG_PERMITTED_TYPE_WARNING.format( + name=name, current=type(current), + permitted=str([cls.__name__ for cls in permitted]))) + else: + warn(CONFIG_TYPE_WARNING.format( + name=name, current=type(current), default=type(default))) def check_unicode(self, warn): # check all string values for non-ASCII characters in bytestrings, From 9cdf4fe00f31cefe9bc4fa4c4f03d16622e6013b Mon Sep 17 00:00:00 2001 From: jfbu Date: Tue, 11 Oct 2016 18:57:46 +0200 Subject: [PATCH 080/297] (latex) separate loading of hyperref from sphinx.sty new 'hyperref' key in ``latex_elements``. --- doc/config.rst | 19 +++++++++++++++---- sphinx/templates/latex/content.tex_t | 1 + sphinx/texinputs/sphinx.sty | 13 ------------- sphinx/writers/latex.py | 12 ++++++++++++ 4 files changed, 28 insertions(+), 17 deletions(-) diff --git a/doc/config.rst b/doc/config.rst index 8fbbf606a..cdf7eae1a 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -1692,6 +1692,10 @@ These options influence LaTeX output. See further :doc:`latex`. to use ``'47363sp'``. To obtain ``72px=1in``, use ``'1bp'``. .. versionadded:: 1.5 + ``'passoptionstopackages'`` + "PassOptionsToPackage" call, default empty. + + .. versionadded:: 1.4 ``'geometry'`` "geometry" package inclusion, the default definition is: @@ -1716,10 +1720,6 @@ These options influence LaTeX output. See further :doc:`latex`. the "Bjarne" style uses numbers spelled out in English). Other "fncychap" styles you can try are "Lenny", "Glenn", "Conny", "Rejne" and "Bjornstrup". You can also set this to ``''`` to disable fncychap. - ``'passoptionstopackages'`` - "PassOptionsToPackage" call, default empty. - - .. versionadded:: 1.4 ``'preamble'`` Additional preamble content, default empty. See :doc:`latex`. ``'postamble'`` @@ -1754,6 +1754,17 @@ These options influence LaTeX output. See further :doc:`latex`. .. versionadded:: 1.2 ``'fontenc'`` "fontenc" package inclusion, default ``'\\usepackage[T1]{fontenc}'``. + ``'hyperref'`` + "hyperref" package inclusion; also loads package "hypcap" and issues + ``\urlstyle{same}``. This is done after :file:`sphinx.sty` file is + loaded and before executing the contents of ``'preamble'`` key. + + .. attention:: + + Loading of packages "hyperref" and "hypcap" is mandatory. + + .. versionadded:: 1.5 + Previously this was done from inside :file:`sphinx.sty`. ``'maketitle'`` "maketitle" call, default ``'\\maketitle'`` (but it has been redefined by the Sphinx ``manual`` and ``howto`` classes.) Override diff --git a/sphinx/templates/latex/content.tex_t b/sphinx/templates/latex/content.tex_t index 9361961c5..1e0028503 100644 --- a/sphinx/templates/latex/content.tex_t +++ b/sphinx/templates/latex/content.tex_t @@ -20,6 +20,7 @@ \usepackage{multirow} \usepackage{eqparbox} <%= usepackages %> +<%= hyperref %> <%= contentsname %> <%= numfig_format %> <%= pageautorefname %> diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index c184f8bb5..bb2da9f1f 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -853,19 +853,6 @@ \fi \fi -% Include hyperref last. -\RequirePackage[colorlinks,breaklinks, - linkcolor=InnerLinkColor,filecolor=OuterLinkColor, - menucolor=OuterLinkColor,urlcolor=OuterLinkColor, - citecolor=InnerLinkColor]{hyperref} -% Fix anchor placement for figures with captions. -% (Note: we don't use a package option here; instead, we give an explicit -% \capstart for figures that actually have a caption.) -\RequirePackage{hypcap} - -% Set up styles of URL: it should be placed after hyperref -\urlstyle{same} - % From docutils.writers.latex2e % inline markup (custom roles) % \DUrole{#1}{#2} tries \DUrole#1{#2} diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 29def59af..a47864443 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -278,6 +278,18 @@ class LaTeXTranslator(nodes.NodeVisitor): 'fontpkg': '\\usepackage{times}', 'fncychap': '\\usepackage[Bjarne]{fncychap}', 'longtable': '\\usepackage{longtable}', + 'hyperref': ('% Include hyperref last.\n' + '\\usepackage[colorlinks,breaklinks,%\n' + ' ' + 'linkcolor=InnerLinkColor,filecolor=OuterLinkColor,%\n' + ' ' + 'menucolor=OuterLinkColor,urlcolor=OuterLinkColor,%\n' + ' ' + 'citecolor=InnerLinkColor]{hyperref}\n' + '% Fix anchor placement for figures with captions.\n' + '\\usepackage{hypcap}% it must be loaded after hyperref.\n' + '% Set up styles of URL: it should be placed after hyperref.\n' + '\\urlstyle{same}'), 'usepackages': '', 'numfig_format': '', 'contentsname': '', From 9972d729abb076441d9cfe24b637a19e471bab50 Mon Sep 17 00:00:00 2001 From: jfbu Date: Thu, 13 Oct 2016 22:41:37 +0200 Subject: [PATCH 081/297] new ``'packages'`` key to ``latex_elements`` serves to load packages after ``sphinx.sty`` itself and before hyperref. --- doc/config.rst | 7 ++++++- sphinx/templates/latex/content.tex_t | 1 + sphinx/writers/latex.py | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/doc/config.rst b/doc/config.rst index cdf7eae1a..adc1892cb 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -1720,8 +1720,13 @@ These options influence LaTeX output. See further :doc:`latex`. the "Bjarne" style uses numbers spelled out in English). Other "fncychap" styles you can try are "Lenny", "Glenn", "Conny", "Rejne" and "Bjornstrup". You can also set this to ``''`` to disable fncychap. + ``'packages'`` + Extra user specified ``\\usepackage{}`` commands, default empty, + executed *after* the loading of :file:`sphinx.sty` and *before* the + loading of "hyperref". ``'preamble'`` - Additional preamble content, default empty. See :doc:`latex`. + Additional preamble content, default empty. Executed *after* + the loading of "hyperref" package. See :doc:`latex`. ``'postamble'`` Additional postamble content (before the indices), default empty. ``'figure_align'`` diff --git a/sphinx/templates/latex/content.tex_t b/sphinx/templates/latex/content.tex_t index 1e0028503..6a3fb444d 100644 --- a/sphinx/templates/latex/content.tex_t +++ b/sphinx/templates/latex/content.tex_t @@ -20,6 +20,7 @@ \usepackage{multirow} \usepackage{eqparbox} <%= usepackages %> +<%= packages %> <%= hyperref %> <%= contentsname %> <%= numfig_format %> diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index a47864443..e46285300 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -278,6 +278,7 @@ class LaTeXTranslator(nodes.NodeVisitor): 'fontpkg': '\\usepackage{times}', 'fncychap': '\\usepackage[Bjarne]{fncychap}', 'longtable': '\\usepackage{longtable}', + 'packages': '', 'hyperref': ('% Include hyperref last.\n' '\\usepackage[colorlinks,breaklinks,%\n' ' ' From 536d52063f33a4c90860e7a6d26a9059a90363e6 Mon Sep 17 00:00:00 2001 From: jfbu Date: Fri, 14 Oct 2016 09:04:45 +0200 Subject: [PATCH 082/297] Revert "new ``'packages'`` key to ``latex_elements``" This reverts commit 9972d729abb076441d9cfe24b637a19e471bab50. --- doc/config.rst | 7 +------ sphinx/templates/latex/content.tex_t | 1 - sphinx/writers/latex.py | 1 - 3 files changed, 1 insertion(+), 8 deletions(-) diff --git a/doc/config.rst b/doc/config.rst index adc1892cb..cdf7eae1a 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -1720,13 +1720,8 @@ These options influence LaTeX output. See further :doc:`latex`. the "Bjarne" style uses numbers spelled out in English). Other "fncychap" styles you can try are "Lenny", "Glenn", "Conny", "Rejne" and "Bjornstrup". You can also set this to ``''`` to disable fncychap. - ``'packages'`` - Extra user specified ``\\usepackage{}`` commands, default empty, - executed *after* the loading of :file:`sphinx.sty` and *before* the - loading of "hyperref". ``'preamble'`` - Additional preamble content, default empty. Executed *after* - the loading of "hyperref" package. See :doc:`latex`. + Additional preamble content, default empty. See :doc:`latex`. ``'postamble'`` Additional postamble content (before the indices), default empty. ``'figure_align'`` diff --git a/sphinx/templates/latex/content.tex_t b/sphinx/templates/latex/content.tex_t index 6a3fb444d..1e0028503 100644 --- a/sphinx/templates/latex/content.tex_t +++ b/sphinx/templates/latex/content.tex_t @@ -20,7 +20,6 @@ \usepackage{multirow} \usepackage{eqparbox} <%= usepackages %> -<%= packages %> <%= hyperref %> <%= contentsname %> <%= numfig_format %> diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index e46285300..a47864443 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -278,7 +278,6 @@ class LaTeXTranslator(nodes.NodeVisitor): 'fontpkg': '\\usepackage{times}', 'fncychap': '\\usepackage[Bjarne]{fncychap}', 'longtable': '\\usepackage{longtable}', - 'packages': '', 'hyperref': ('% Include hyperref last.\n' '\\usepackage[colorlinks,breaklinks,%\n' ' ' From 689327d6fc083d6ecaf8c6b1a0c843a38544873e Mon Sep 17 00:00:00 2001 From: jfbu Date: Fri, 14 Oct 2016 11:14:15 +0200 Subject: [PATCH 083/297] add missing versionchanged directive for tableofcontents --- doc/config.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/config.rst b/doc/config.rst index 8fbbf606a..4ca3768af 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -1769,6 +1769,11 @@ These options influence LaTeX output. See further :doc:`latex`. Override if you want to generate a different table of contents or put content between the title page and the TOC. + + .. versionchanged:: 1.5 + Previously the meaning of ``\tableofcontents`` itself was modified + by Sphinx. This created an incompatibility with dedicated packages + modifying it also such as "tocloft" or "etoc". ``'transition'`` Commands used to display transitions, default ``'\n\n\\bigskip\\hrule{}\\bigskip\n\n'``. Override if you want to From ec8dd32e3576f9ec22ccae7145d38a1642cfa049 Mon Sep 17 00:00:00 2001 From: jfbu Date: Fri, 14 Oct 2016 11:21:18 +0200 Subject: [PATCH 084/297] add example to use of ``'printindex'`` key --- doc/config.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/config.rst b/doc/config.rst index 4ca3768af..c42d4e5cf 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -1783,7 +1783,9 @@ These options influence LaTeX output. See further :doc:`latex`. ``'printindex'`` "printindex" call, the last thing in the file, default ``'\\printindex'``. Override if you want to generate the index - differently or append some content after the index. + differently or append some content after the index. For example + ``'\\footnotesize\\raggedright\\printindex'`` is advisable when the + index is full of long entries. * Keys that are set by other options and therefore should not be overridden are: From 487f3db5f688da34df17243167daabfc9724db47 Mon Sep 17 00:00:00 2001 From: shimizukawa Date: Sat, 15 Oct 2016 16:22:27 +0900 Subject: [PATCH 085/297] To simplify, sphinx uses external mock package even if unittest.mock exists. --- CHANGES | 5 +++++ tests/test_build.py | 3 ++- tests/test_config.py | 2 +- tests/test_domain_std.py | 2 +- tests/test_environment_indexentries.py | 2 +- tests/test_ext_intersphinx.py | 3 ++- tests/test_ext_napoleon.py | 2 +- tests/test_ext_napoleon_docstring.py | 2 +- tests/test_theming.py | 4 +++- tests/test_util_fileutil.py | 4 ++-- tests/util.py | 7 ------- tox.ini | 10 +--------- 12 files changed, 20 insertions(+), 26 deletions(-) diff --git a/CHANGES b/CHANGES index f6e834b3a..f09d178ef 100644 --- a/CHANGES +++ b/CHANGES @@ -44,6 +44,11 @@ Bugs fixed * #3038: ``sphinx.ext.math*`` raises TypeError if labels are duplicated * #3031: incompatibility with LaTeX package ``tocloft`` +Testing +-------- + +* To simplify, sphinx uses external mock package even if unittest.mock exists. + Documentation ------------- diff --git a/tests/test_build.py b/tests/test_build.py index 27a99461b..cc34de2c1 100644 --- a/tests/test_build.py +++ b/tests/test_build.py @@ -13,11 +13,12 @@ from six import BytesIO import pickle from docutils import nodes +import mock from textwrap import dedent from sphinx.errors import SphinxError import sphinx.builders.linkcheck -from util import mock, with_app, with_tempdir, rootdir, tempdir, SkipTest, TestApp +from util import with_app, with_tempdir, rootdir, tempdir, SkipTest, TestApp try: from docutils.writers.manpage import Writer as ManWriter diff --git a/tests/test_config.py b/tests/test_config.py index b10711732..1b3c94957 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -10,7 +10,7 @@ :license: BSD, see LICENSE for details. """ from six import PY3, iteritems -from util import mock +import mock from util import TestApp, with_app, gen_with_app, with_tempdir, \ raises, raises_msg, assert_in, assert_not_in diff --git a/tests/test_domain_std.py b/tests/test_domain_std.py index 5bd9f805b..4f892cb01 100644 --- a/tests/test_domain_std.py +++ b/tests/test_domain_std.py @@ -10,9 +10,9 @@ """ from docutils import nodes +import mock from sphinx.domains.std import StandardDomain -from util import mock def test_process_doc_handle_figure_caption(): diff --git a/tests/test_environment_indexentries.py b/tests/test_environment_indexentries.py index 869239487..57a3cf52f 100644 --- a/tests/test_environment_indexentries.py +++ b/tests/test_environment_indexentries.py @@ -13,7 +13,7 @@ from collections import namedtuple from sphinx import locale from sphinx.environment.managers.indexentries import IndexEntries -from util import mock +import mock Environment = namedtuple('Environment', 'indexentries') diff --git a/tests/test_ext_intersphinx.py b/tests/test_ext_intersphinx.py index 2b67dd329..e1995e3d3 100644 --- a/tests/test_ext_intersphinx.py +++ b/tests/test_ext_intersphinx.py @@ -15,6 +15,7 @@ import zlib from six import BytesIO from docutils import nodes +import mock from sphinx import addnodes from sphinx.ext.intersphinx import setup as intersphinx_setup @@ -22,7 +23,7 @@ from sphinx.ext.intersphinx import read_inventory, \ load_mappings, missing_reference, _strip_basic_auth, _read_from_url, \ _get_safe_url, fetch_inventory, INVENTORY_FILENAME -from util import with_app, with_tempdir, mock +from util import with_app, with_tempdir inventory_v1 = '''\ diff --git a/tests/test_ext_napoleon.py b/tests/test_ext_napoleon.py index d4ce96001..7ecd08292 100644 --- a/tests/test_ext_napoleon.py +++ b/tests/test_ext_napoleon.py @@ -16,7 +16,7 @@ from unittest import TestCase from sphinx.application import Sphinx from sphinx.ext.napoleon import (_process_docstring, _skip_member, Config, setup) -from util import mock +import mock def _private_doc(): diff --git a/tests/test_ext_napoleon_docstring.py b/tests/test_ext_napoleon_docstring.py index c320a7fec..37dcca90c 100644 --- a/tests/test_ext_napoleon_docstring.py +++ b/tests/test_ext_napoleon_docstring.py @@ -19,7 +19,7 @@ from unittest import TestCase from sphinx.ext.napoleon import Config from sphinx.ext.napoleon.docstring import GoogleDocstring, NumpyDocstring -from util import mock +import mock class NamedtupleSubclass(namedtuple('NamedtupleSubclass', ('attr1', 'attr2'))): diff --git a/tests/test_theming.py b/tests/test_theming.py index d4c104c8c..b62cbcd72 100644 --- a/tests/test_theming.py +++ b/tests/test_theming.py @@ -12,9 +12,11 @@ import os import zipfile +import mock + from sphinx.theming import Theme, ThemeError -from util import with_app, raises, mock, path +from util import with_app, raises, path @with_app(confoverrides={'html_theme': 'ziptheme', diff --git a/tests/test_util_fileutil.py b/tests/test_util_fileutil.py index a56543614..5810dd2a8 100644 --- a/tests/test_util_fileutil.py +++ b/tests/test_util_fileutil.py @@ -11,14 +11,14 @@ from sphinx.util.fileutil import copy_asset, copy_asset_file from sphinx.jinja2glue import BuiltinTemplateLoader -from mock import Mock +import mock from util import with_tempdir class DummyTemplateLoader(BuiltinTemplateLoader): def __init__(self): BuiltinTemplateLoader.__init__(self) - builder = Mock() + builder = mock.Mock() builder.config.templates_path = [] builder.app.translater = None self.init(builder) diff --git a/tests/util.py b/tests/util.py index a14bee838..120492d47 100644 --- a/tests/util.py +++ b/tests/util.py @@ -28,12 +28,6 @@ from sphinx.pycode import ModuleAnalyzer from path import path, repr_as # NOQA -try: - # Python >=3.3 - from unittest import mock -except ImportError: - import mock - __all__ = [ 'rootdir', 'tempdir', 'raises', 'raises_msg', @@ -41,7 +35,6 @@ __all__ = [ 'ListOutput', 'TestApp', 'with_app', 'gen_with_app', 'path', 'with_tempdir', 'sprint', 'remove_unicode_literals', - 'mock', ] diff --git a/tox.ini b/tox.ini index 5c5989250..44ae8a7a6 100644 --- a/tox.ini +++ b/tox.ini @@ -9,38 +9,30 @@ deps= sqlalchemy whoosh html5lib + mock setenv = SPHINX_TEST_TEMPDIR = {envdir}/testbuild commands= {envpython} tests/run.py -I py35 -m '^[tT]est' {posargs} sphinx-build -q -W -b html -d {envtmpdir}/doctrees doc {envtmpdir}/html -[testenv:py27] -deps= - mock - {[testenv]deps} - [testenv:pypy] deps= - mock simplejson {[testenv]deps} [testenv:du10] deps= - mock docutils==0.10 {[testenv]deps} [testenv:du11] deps= - mock docutils==0.11 {[testenv]deps} [testenv:du12] deps= - mock docutils==0.12 {[testenv]deps} From 58dab8d80b0674a06829920467cdad8fb102b0cb Mon Sep 17 00:00:00 2001 From: jfbu Date: Sat, 15 Oct 2016 11:56:17 +0200 Subject: [PATCH 086/297] Update CHANGES for PR#3030 --- CHANGES | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGES b/CHANGES index f09d178ef..84f3b1f7b 100644 --- a/CHANGES +++ b/CHANGES @@ -9,6 +9,8 @@ Incompatible changes * Remove themes/basic/defindex.html; no longer used * Sphinx does not ship anymore (but still uses) LaTeX style file ``fncychap`` * #2435: Slim down quickstarted conf.py +* The ``sphinx.sty`` latex package does not load itself "hyperref", as this + is done later in the preamble of the latex output via ``'hyperref'`` key. Features added -------------- @@ -22,6 +24,7 @@ Features added generated sphinx project. * #3028: Add ``{path}`` and ``{basename}`` to the format of ``figure_language_filename`` +* new ``'hyperref'`` key in the ``latex_elements`` dictionary (ref #3030) Bugs fixed ---------- From b8e0e935e47560859dcfb9c236746d4bda19122a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20B?= Date: Sat, 15 Oct 2016 12:09:58 +0200 Subject: [PATCH 087/297] Improve LaTeX footnotes (#3022) Allow code-blocks in footnotes for LaTeX PDF output. This is done via using a ``footnote environment``, provided by LaTeX package footnotehyper which replaces old problematic package footnote. No need to ship a custom tabulary anymore. The footnote markers are silently removed from the table of contents and do not end in the PDF bookmarks (the old code in ``sphinx.sty`` copying ``footmisc.sty`` was not satisfactory and has been deleted and replaced by use of better ``\sphinxfootnotemark``.) Footnotes can be used also in captions of literal blocks. --- sphinx/texinputs/footnotehyper-sphinx.sty | 158 ++++++++ sphinx/texinputs/sphinx.sty | 52 +-- sphinx/texinputs/tabulary.sty | 454 ---------------------- sphinx/writers/latex.py | 40 +- tests/roots/test-footnotes/index.rst | 28 +- tests/test_build_latex.py | 168 ++++---- 6 files changed, 319 insertions(+), 581 deletions(-) create mode 100644 sphinx/texinputs/footnotehyper-sphinx.sty delete mode 100644 sphinx/texinputs/tabulary.sty diff --git a/sphinx/texinputs/footnotehyper-sphinx.sty b/sphinx/texinputs/footnotehyper-sphinx.sty new file mode 100644 index 000000000..d0c592710 --- /dev/null +++ b/sphinx/texinputs/footnotehyper-sphinx.sty @@ -0,0 +1,158 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{footnotehyper-sphinx}% + [2016/10/08 v0.9f hyperref aware footnote.sty for sphinx (JFB)] +%% +%% Package: footnotehyper-sphinx +%% Version: based on footnotehyper.sty v0.9f (2016/10/03) +%% as available at http://www.ctan.org/pkg/footnotehyper +%% License: the one applying to Sphinx +%% +%% Differences from footnotehyper v0.9f (2016/10/03): +%% 1. hyperref is assumed in use (with default hyperfootnotes=true), +%% 2. no need to check if footnote.sty was loaded, +%% 3. a special tabulary compatibility layer added, (partial but enough for +%% Sphinx), +%% 4. the \sphinxfootnotemark command is added. Its rôle is to silently remove +%% footnote marks from locations like the tables of contents, or page headers, +%% and to be compatible with hyperref constructions of bookmarks, and survive +%% to \MakeUppercase command or such which may be used to typeset chapter +%% titles for example. +%% +%% Note: with \footnotemark[N]/\footnotetext[N] syntax, hyperref +%% does not insert an hyperlink. This is _not_ improved here. +%% +\DeclareOption*{\PackageWarning{footnotehyper}{Option `\CurrentOption' is unknown}}% +\ProcessOptions\relax +\let\FNH@@makefntext\@makefntext\let\@makefntext\@firstofone +\RequirePackage{footnote} +\let\fnparbox\parbox\let\parbox\fn@parbox\let\@makefntext\FNH@@makefntext +\let\FNH@fn@footnote \footnote % buggy footnote.sty's \footnote +\let\FNH@fn@footnotetext\footnotetext % will be redefined later +\let\footnote \fn@latex@@footnote % meaning of \footnote before footnote.sty +\let\footnotetext\fn@latex@@footnotetext +\def\fn@endnote {\color@endgroup}% +\AtBeginDocument {% + \let\fn@latex@@footnote \footnote % meaning of \footnote at end of preamble + \let\fn@latex@@footnotetext\footnotetext + \let\fn@fntext \FNH@hyper@fntext + \let\spewnotes \FNH@hyper@spewnotes + \let\endsavenotes\spewnotes + \let\fn@endfntext\FNH@fixed@endfntext + \let\footnote \FNH@fixed@footnote + \let\footnotetext\FNH@fixed@footnotetext + \let\endfootnote\fn@endfntext + \let\endfootnotetext\endfootnote +}% +\def\FNH@hyper@fntext {% +%% amsmath compatibility + \ifx\ifmeasuring@\undefined\expandafter\@secondoftwo + \else\expandafter\@firstofone\fi + {\ifmeasuring@\expandafter\@gobbletwo\else\expandafter\@firstofone\fi}% +%% partial tabulary compatibility, [N] must be used, but Sphinx does it + {\ifx\equation$\expandafter\@gobbletwo\fi\FNH@hyper@fntext@i }%$ +}% +\long\def\FNH@hyper@fntext@i #1{\global\setbox\fn@notes\vbox + {\unvbox\fn@notes + \fn@startnote + \@makefntext + {\rule\z@\footnotesep\ignorespaces + \ifHy@nesting\expandafter\ltx@firstoftwo + \else\expandafter\ltx@secondoftwo + \fi + {\expandafter\hyper@@anchor\expandafter{\Hy@footnote@currentHref}{#1}}% + {\Hy@raisedlink + {\expandafter\hyper@@anchor\expandafter{\Hy@footnote@currentHref}% + {\relax}}% + \let\@currentHref\Hy@footnote@currentHref + \let\@currentlabelname\@empty + #1}% + \@finalstrut\strutbox }% + \fn@endnote }% +}% +\def\FNH@hyper@spewnotes {\endgroup + \if@savingnotes\else\ifvoid\fn@notes\else + \begingroup\let\@makefntext\@empty + \let\@finalstrut\@gobble + \let\rule\@gobbletwo + \H@@footnotetext{\unvbox\fn@notes}% + \endgroup\fi\fi +}% +\def\FNH@fixed@endfntext {% + \@finalstrut\strutbox + \fn@postfntext + \fn@endnote + \egroup\FNH@endfntext@next % will decide if link or no link +}% +\def\FNH@endfntext@link {\begingroup + \let\@makefntext\@empty\let\@finalstrut\@gobble\let\rule\@gobbletwo + \@footnotetext {\unvbox\z@}% + \endgroup +}% +\def\FNH@endfntext@nolink {\begingroup + \let\@makefntext\@empty\let\@finalstrut\@gobble + \let\rule\@gobbletwo + \if@savingnotes\expandafter\fn@fntext\else\expandafter\H@@footnotetext\fi + {\unvbox\z@}\endgroup +}% +\def\FNH@fixed@footnote {\ifx\@currenvir\fn@footnote + \expandafter\FNH@footnoteenv\else\expandafter\fn@latex@@footnote\fi }% +\def\FNH@footnoteenv {\@ifnextchar[\FNH@xfootnoteenv%] + {\stepcounter\@mpfn + \protected@xdef\@thefnmark{\thempfn}\@footnotemark + \def\FNH@endfntext@next{\FNH@endfntext@link}\fn@startfntext}}% +\def\FNH@xfootnoteenv [#1]{% + \begingroup + \csname c@\@mpfn\endcsname #1\relax + \unrestored@protected@xdef\@thefnmark{\thempfn}% + \endgroup\@footnotemark\def\FNH@endfntext@next{\FNH@endfntext@link}% + \fn@startfntext}% +\def\FNH@fixed@footnotetext {\ifx\@currenvir\fn@footnotetext + \expandafter\FNH@footnotetextenv\else\expandafter\fn@latex@@footnotetext\fi}% +\def\FNH@footnotetextenv {\@ifnextchar[\FNH@xfootnotetextenv%] + {\protected@xdef\@thefnmark{\thempfn}% + \def\FNH@endfntext@next{\FNH@endfntext@link}\fn@startfntext}}% +\def\FNH@xfootnotetextenv [#1]{% + \begingroup + \csname c@\@mpfn\endcsname #1\relax + \unrestored@protected@xdef\@thefnmark{\thempfn}% + \endgroup\def\FNH@endfntext@next{\FNH@endfntext@nolink}% + \fn@startfntext }% +% Now some checks in case some package has modified \@makefntext. +\AtBeginDocument +{% compatibility with French module of LaTeX babel + \ifx\@makefntextFB\undefined + \expandafter\@gobble\else\expandafter\@firstofone\fi + {\ifFBFrenchFootnotes \let\FNH@@makefntext\@makefntextFB \else + \let\FNH@@makefntext\@makefntextORI\fi}% + \expandafter\FNH@check@a\FNH@@makefntext{1.2!3?4,}\FNH@@@1.2!3?4,\FNH@@@\relax +}% +\long\def\FNH@check@a #11.2!3?4,#2\FNH@@@#3% +{% + \ifx\relax#3\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi + \FNH@bad@footnote@env + {\def\fn@prefntext{#1}\def\fn@postfntext{#2}\FNH@check@b}% +}% +\def\FNH@check@b #1\relax +{% + \expandafter\expandafter\expandafter\FNH@check@c + \expandafter\meaning\expandafter\fn@prefntext + \meaning\fn@postfntext1.2!3?4,\FNH@check@c\relax +}% +\def\FNH@check@c #11.2!3?4,#2#3\relax + {\ifx\FNH@check@c#2\expandafter\@gobble\fi\FNH@bad@footnote@env}% +\def\FNH@bad@footnote@env +{\PackageWarningNoLine{footnotehyper}% + {The footnote environment from package footnote^^J + will be dysfunctional, sorry (not my fault...). You may try to make a bug^^J + report at https://github.com/sphinx-doc/sphinx including the next lines:}% + \typeout{\meaning\@makefntext}% + \let\fn@prefntext\@empty\let\fn@postfntext\@empty +}% +%% \sphinxfootnotemark: usable in section titles and silently removed from TOCs +\def\sphinxfootnotemark [#1]% + {\ifx\thepage\relax\else \protect\footnotemark[#1]\fi}% +\AtBeginDocument + {\pdfstringdefDisableCommands{\def\sphinxfootnotemark [#1]{}}}% +\endinput +%% +%% End of file `footnotehyper-sphinx.sty'. diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index bb2da9f1f..d6e19d53d 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -49,9 +49,13 @@ \fvset{fontsize=\small} % For table captions. \RequirePackage{threeparttable} -% Handle footnotes in tables. -\RequirePackage{footnote} +% For hyperlinked footnotes in tables; also for gathering footnotes from +% topic and warning blocks. Also to allow code-blocks in footnotes. +\RequirePackage{footnotehyper-sphinx} \makesavenoteenv{tabulary} +\makesavenoteenv{tabular} +\makesavenoteenv{threeparttable} +% (longtable is hyperref compatible and needs no special treatment here.) % For the H specifier. Do not \restylefloat{figure}, it breaks Sphinx code % for allowing figures in tables. \RequirePackage{float} @@ -215,6 +219,12 @@ {\py@NormalColor \captionof{literalblock}{\sphinxLiteralBlockLabel #1}\smallskip }% } +\newcommand*\sphinxSetupCodeBlockInFootnote {% + \fvset{fontsize=\footnotesize}\let\caption\sphinxfigcaption + \sphinxverbatimwithminipagetrue % reduces vertical spaces + % we counteract float.sty's \caption which does \@normalsize + \let\normalsize\footnotesize\let\@parboxrestore\relax + \abovecaptionskip \smallskipamount \belowcaptionskip \z@skip} % Inspired and adapted from framed.sty's \CustomFBox with extra handling % of a non separable by pagebreak caption. @@ -474,6 +484,8 @@ % imitate closely the layout from Sphinx <= 1.4.1; the \FrameHeightAdjust % will put top part of frame on this baseline. \def\FrameHeightAdjust {\baselineskip}% + % use package footnote to handle footnotes + \savenotes \trivlist\item\noindent % use a minipage if we are already inside a framed environment \ifspx@inframed\begin{minipage}{\linewidth}\fi @@ -487,9 +499,6 @@ % itemize/enumerate are therein typeset more tightly, we want to keep % that). We copy-paste from LaTeX source code but don't do a real minipage. \@pboxswfalse - % for footnotes, but Sphinx inactivates footnotes in topics - \def\@mpfn{mpfootnote}\def\thempfn{\thempfootnote}\c@mpfootnote\z@ - \let\@footnotetext\@mpfootnotetext \let\@listdepth\@mplistdepth \@mplistdepth\z@ \@minipagerestore \@setminipage @@ -497,14 +506,12 @@ }% {% insert the "endminipage" code \par\unskip - % handle (currently non existing) minipage style footnotes - \ifvoid\@mpfootins\else - \vskip\skip\@mpfootins\normalcolor\footnoterule\unvbox\@mpfootins - \fi \@minipagefalse \endMakeFramed \ifspx@inframed\end{minipage}\fi \endtrivlist + % output the stored footnotes + \spewnotes } @@ -634,6 +641,7 @@ \fboxsep\FrameSep \fboxrule\FrameRule \fcolorbox{spx@notice@bordercolor}{spx@notice@bgcolor}{##1}% \hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth}% + \savenotes % use a minipage if we are already inside a framed environment \ifspx@inframed \noindent\begin{minipage}{\linewidth} @@ -649,22 +657,17 @@ \advance\hsize-\width \@totalleftmargin\z@ \linewidth\hsize % minipage initialization copied from LaTeX source code. \@pboxswfalse - % for footnotes - \def\@mpfn{mpfootnote}\def\thempfn{\thempfootnote}\c@mpfootnote\z@ - \let\@footnotetext\@mpfootnotetext \let\@listdepth\@mplistdepth \@mplistdepth\z@ \@minipagerestore \@setminipage }% } {% \par\unskip - % handles footnotes - \ifvoid\@mpfootins\else - \vskip\skip\@mpfootins\normalcolor\footnoterule\unvbox\@mpfootins - \fi \@minipagefalse \endMakeFramed \ifspx@inframed\end{minipage}\fi + % set footnotes at bottom of page + \spewnotes % arrange for similar spacing below frame as for "light" boxes. \vskip .4\baselineskip }% end of sphinxheavybox environment definition @@ -886,23 +889,6 @@ {\endlist} \fi -% From footmisc.sty: allows footnotes in titles -\let\FN@sf@@footnote\footnote -\def\footnote{\ifx\protect\@typeset@protect - \expandafter\FN@sf@@footnote - \else - \expandafter\FN@sf@gobble@opt - \fi -} -\edef\FN@sf@gobble@opt{\noexpand\protect - \expandafter\noexpand\csname FN@sf@gobble@opt \endcsname} -\expandafter\def\csname FN@sf@gobble@opt \endcsname{% - \@ifnextchar[%] - \FN@sf@gobble@twobracket - \@gobble -} -\def\FN@sf@gobble@twobracket[#1]#2{} - % adjust the margins for footer, % this works with the jsclasses only (Japanese standard document classes) \ifx\@jsc@uplatextrue\undefined\else diff --git a/sphinx/texinputs/tabulary.sty b/sphinx/texinputs/tabulary.sty deleted file mode 100644 index 03e07ec2a..000000000 --- a/sphinx/texinputs/tabulary.sty +++ /dev/null @@ -1,454 +0,0 @@ -%% -%% This is file `tabulary.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% tabulary.dtx (with options: `package') -%% DRAFT VERSION -%% -%% File `tabulary.dtx'. -%% Copyright (C) 1995 1996 2003 2008 David Carlisle -%% This file may be distributed under the terms of the LPPL. -%% See 00readme.txt for details. -%% -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{tabulary} - [2014/06/11 v0.10 tabulary package (DPC) + footnote patch (sphinx)] -\RequirePackage{array} -\catcode`\Z=14 -\DeclareOption{debugshow}{\catcode`\Z=9\relax} -\ProcessOptions -\def\arraybackslash{\let\\=\@arraycr} -\def\@finalstrut#1{% - \unskip\ifhmode\nobreak\fi\vrule\@width\z@\@height\z@\@depth\dp#1} -\newcount\TY@count -\def\tabulary{% - \let\TY@final\tabular - \let\endTY@final\endtabular - \TY@tabular} -\def\TY@tabular#1{% - \edef\TY@{\@currenvir}% - {\ifnum0=`}\fi - \@ovxx\TY@linewidth - \@ovyy\TY@tablewidth - \count@\z@ - \@tempswatrue - \@whilesw\if@tempswa\fi{% - \advance\count@\@ne - \expandafter\ifx\csname TY@F\the\count@\endcsname\relax - \@tempswafalse - \else - \expandafter\let\csname TY@SF\the\count@\expandafter\endcsname - \csname TY@F\the\count@\endcsname - \global\expandafter\let\csname TY@F\the\count@\endcsname\relax - \expandafter\let\csname TY@S\the\count@\expandafter\endcsname - \csname TY@\the\count@\endcsname - \fi}% - \global\TY@count\@ne - \TY@width\xdef{0pt}% - \global\TY@tablewidth\z@ - \global\TY@linewidth#1\relax -Z\message{^^J^^JTable^^J% -Z Target Width: \the\TY@linewidth^^J% -Z \string\tabcolsep: \the\tabcolsep\space -Z \string\arrayrulewidth: \the\arrayrulewidth\space -Z \string\doublerulesep: \the\doublerulesep^^J% -Z \string\tymin: \the\tymin\space -Z \string\tymax: \the\tymax^^J}% - \let\@classz\TY@classz - \let\verb\TX@verb - \toks@{}\TY@get@body} -\let\TY@@mkpream\@mkpream -\def\TY@mkpream{% - \def\@addamp{% - \if@firstamp \@firstampfalse \else - \global\advance\TY@count\@ne - \edef\@preamble{\@preamble &}\fi - \TY@width\xdef{0pt}}% - \def\@acol{% - \TY@subwidth\col@sep - \@addtopreamble{\hskip\col@sep}}% - \let\@arrayrule\TY@arrayrule - \let\@classvi\TY@classvi - \def\@classv{\save@decl - \expandafter\NC@ecs\@nextchar\extracolsep{}\extracolsep\@@@ - \sbox\z@{\d@llarbegin\@nextchar\d@llarend}% - \TY@subwidth{\wd\z@}% - \@addtopreamble{\d@llarbegin\the@toks\the\count@\relax\d@llarend}% - \prepnext@tok}% - \global\let\@mkpream\TY@@mkpream - \TY@@mkpream} -\def\TY@arrayrule{% - \TY@subwidth\arrayrulewidth - \@addtopreamble \vline} -\def\TY@classvi{\ifcase \@lastchclass - \@acol \or - \TY@subwidth\doublerulesep - \@addtopreamble{\hskip \doublerulesep}\or - \@acol \or - \@classvii - \fi} -\def\TY@tab{% - \setbox\z@\hbox\bgroup - \let\[$\let\]$% - \let\equation$\let\endequation$% - \col@sep\tabcolsep - \let\d@llarbegin\begingroup\let\d@llarend\endgroup - \let\@mkpream\TY@mkpream - \def\multicolumn##1##2##3{\multispan##1\relax}% - \CT@start\TY@tabarray} -\def\TY@tabarray{\@ifnextchar[{\TY@array}{\@array[t]}} -\def\TY@array[#1]{\@array[t]} -\def\TY@width#1{% - \expandafter#1\csname TY@\the\TY@count\endcsname} -\def\TY@subwidth#1{% - \TY@width\dimen@ - \advance\dimen@-#1\relax - \TY@width\xdef{\the\dimen@}% - \global\advance\TY@linewidth-#1\relax} -\def\endtabulary{% - \gdef\@halignto{}% - \let\TY@footnote\footnote% - \def\footnote{}% prevent footnotes from doing anything - \expandafter\TY@tab\the\toks@ - \crcr\omit - {\xdef\TY@save@row{}% - \loop - \advance\TY@count\m@ne - \ifnum\TY@count>\z@ - \xdef\TY@save@row{\TY@save@row&\omit}% - \repeat}\TY@save@row - \endarray\global\setbox1=\lastbox\setbox0=\vbox{\unvbox1 - \unskip\global\setbox1=\lastbox}\egroup - \dimen@\TY@linewidth - \divide\dimen@\TY@count - \ifdim\dimen@<\tymin - \TY@warn{tymin too large (\the\tymin), resetting to \the\dimen@}% - \tymin\dimen@ - \fi - \setbox\tw@=\hbox{\unhbox\@ne - \loop -\@tempdima=\lastskip -\ifdim\@tempdima>\z@ -Z \message{ecs=\the\@tempdima^^J}% - \global\advance\TY@linewidth-\@tempdima -\fi - \unskip - \setbox\tw@=\lastbox - \ifhbox\tw@ -Z \message{Col \the\TY@count: Initial=\the\wd\tw@\space}% - \ifdim\wd\tw@>\tymax - \wd\tw@\tymax -Z \message{> max\space}% -Z \else -Z \message{ \@spaces\space}% - \fi - \TY@width\dimen@ -Z \message{\the\dimen@\space}% - \advance\dimen@\wd\tw@ -Z \message{Final=\the\dimen@\space}% - \TY@width\xdef{\the\dimen@}% - \ifdim\dimen@<\tymin -Z \message{< tymin}% - \global\advance\TY@linewidth-\dimen@ - \expandafter\xdef\csname TY@F\the\TY@count\endcsname - {\the\dimen@}% - \else - \expandafter\ifx\csname TY@F\the\TY@count\endcsname\z@ -Z \message{***}% - \global\advance\TY@linewidth-\dimen@ - \expandafter\xdef\csname TY@F\the\TY@count\endcsname - {\the\dimen@}% - \else -Z \message{> tymin}% - \global\advance\TY@tablewidth\dimen@ - \global\expandafter\let\csname TY@F\the\TY@count\endcsname - \maxdimen - \fi\fi - \advance\TY@count\m@ne - \repeat}% - \TY@checkmin - \TY@checkmin - \TY@checkmin - \TY@checkmin - \TY@count\z@ - \let\TY@box\TY@box@v - \let\footnote\TY@footnote % restore footnotes - {\expandafter\TY@final\the\toks@\endTY@final}% - \count@\z@ - \@tempswatrue - \@whilesw\if@tempswa\fi{% - \advance\count@\@ne - \expandafter\ifx\csname TY@SF\the\count@\endcsname\relax - \@tempswafalse - \else - \global\expandafter\let\csname TY@F\the\count@\expandafter\endcsname - \csname TY@SF\the\count@\endcsname - \global\expandafter\let\csname TY@\the\count@\expandafter\endcsname - \csname TY@S\the\count@\endcsname - \fi}% - \TY@linewidth\@ovxx - \TY@tablewidth\@ovyy - \ifnum0=`{\fi}} -\def\TY@checkmin{% - \let\TY@checkmin\relax -\ifdim\TY@tablewidth>\z@ - \Gscale@div\TY@ratio\TY@linewidth\TY@tablewidth - \ifdim\TY@tablewidth <\TY@linewidth - \def\TY@ratio{1}% - \fi -\else - \TY@warn{No suitable columns!}% - \def\TY@ratio{1}% -\fi -\count@\z@ -Z \message{^^JLine Width: \the\TY@linewidth, -Z Natural Width: \the\TY@tablewidth, -Z Ratio: \TY@ratio^^J}% -\@tempdima\z@ -\loop -\ifnum\count@<\TY@count -\advance\count@\@ne - \ifdim\csname TY@F\the\count@\endcsname>\tymin - \dimen@\csname TY@\the\count@\endcsname - \dimen@\TY@ratio\dimen@ - \ifdim\dimen@<\tymin -Z \message{Column \the\count@\space ->}% - \global\expandafter\let\csname TY@F\the\count@\endcsname\tymin - \global\advance\TY@linewidth-\tymin - \global\advance\TY@tablewidth-\csname TY@\the\count@\endcsname - \let\TY@checkmin\TY@@checkmin - \else - \expandafter\xdef\csname TY@F\the\count@\endcsname{\the\dimen@}% - \advance\@tempdima\csname TY@F\the\count@\endcsname - \fi - \fi -Z \dimen@\csname TY@F\the\count@\endcsname\message{\the\dimen@, }% -\repeat -Z \message{^^JTotal:\the\@tempdima^^J}% -} -\let\TY@@checkmin\TY@checkmin -\newdimen\TY@linewidth -\def\tyformat{\everypar{{\nobreak\hskip\z@skip}}} -\newdimen\tymin -\tymin=10pt -\newdimen\tymax -\tymax=2\textwidth -\def\@testpach{\@chclass - \ifnum \@lastchclass=6 \@ne \@chnum \@ne \else - \ifnum \@lastchclass=7 5 \else - \ifnum \@lastchclass=8 \tw@ \else - \ifnum \@lastchclass=9 \thr@@ - \else \z@ - \ifnum \@lastchclass = 10 \else - \edef\@nextchar{\expandafter\string\@nextchar}% - \@chnum - \if \@nextchar c\z@ \else - \if \@nextchar l\@ne \else - \if \@nextchar r\tw@ \else - \if \@nextchar C7 \else - \if \@nextchar L8 \else - \if \@nextchar R9 \else - \if \@nextchar J10 \else - \z@ \@chclass - \if\@nextchar |\@ne \else - \if \@nextchar !6 \else - \if \@nextchar @7 \else - \if \@nextchar <8 \else - \if \@nextchar >9 \else - 10 - \@chnum - \if \@nextchar m\thr@@\else - \if \@nextchar p4 \else - \if \@nextchar b5 \else - \z@ \@chclass \z@ \@preamerr \z@ \fi \fi \fi \fi\fi \fi \fi\fi \fi - \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi} -\def\TY@classz{% - \@classx - \@tempcnta\count@ - \ifx\TY@box\TY@box@v - \global\advance\TY@count\@ne - \fi - \let\centering c% - \let\raggedright\noindent - \let\raggedleft\indent - \let\arraybackslash\relax - \prepnext@tok - \ifnum\@chnum<4 - \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@ - \fi - \ifnum\@chnum=6 - \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@ - \fi - \@addtopreamble{% - \ifcase\@chnum - \hfil \d@llarbegin\insert@column\d@llarend \hfil \or - \kern\z@ - \d@llarbegin \insert@column \d@llarend \hfil \or - \hfil\kern\z@ \d@llarbegin \insert@column \d@llarend \or - $\vcenter\@startpbox{\@nextchar}\insert@column \@endpbox $\or - \vtop \@startpbox{\@nextchar}\insert@column \@endpbox \or - \vbox \@startpbox{\@nextchar}\insert@column \@endpbox \or - \d@llarbegin \insert@column \d@llarend \or% dubious "s" case - \TY@box\centering\or - \TY@box\raggedright\or - \TY@box\raggedleft\or - \TY@box\relax - \fi}\prepnext@tok} -\def\TY@box#1{% - \ifx\centering#1% - \hfil \d@llarbegin\insert@column\d@llarend \hfil \else - \ifx\raggedright#1% - \kern\z@%<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - \d@llarbegin \insert@column \d@llarend \hfil \else - \ifx\raggedleft#1% - \hfil\kern\z@ \d@llarbegin \insert@column \d@llarend \else - \ifx\relax#1% - \d@llarbegin \insert@column \d@llarend - \fi \fi \fi \fi} -\def\TY@box@v#1{% - \vtop \@startpbox{\csname TY@F\the\TY@count\endcsname}% - #1\arraybackslash\tyformat - \insert@column\@endpbox} -\newdimen\TY@tablewidth -\def\Gscale@div#1#2#3{% - \setlength\dimen@{#3}% - \ifdim\dimen@=\z@ - \PackageError{graphics}{Division by 0}\@eha - \dimen@#2% - \fi - \edef\@tempd{\the\dimen@}% - \setlength\dimen@{#2}% - \count@65536\relax - \ifdim\dimen@<\z@ - \dimen@-\dimen@ - \count@-\count@ - \fi - \loop - \ifdim\dimen@<8192\p@ - \dimen@\tw@\dimen@ - \divide\count@\tw@ - \repeat - \dimen@ii=\@tempd\relax - \divide\dimen@ii\count@ - \divide\dimen@\dimen@ii - \edef#1{\strip@pt\dimen@}} -\long\def\TY@get@body#1\end - {\toks@\expandafter{\the\toks@#1}\TY@find@end} -\def\TY@find@end#1{% - \def\@tempa{#1}% - \ifx\@tempa\TY@\def\@tempa{\end{#1}}\expandafter\@tempa - \else\toks@\expandafter - {\the\toks@\end{#1}}\expandafter\TY@get@body\fi} -\def\TY@warn{% - \PackageWarning{tabulary}} -\catcode`\Z=11 -\AtBeginDocument{ -\@ifpackageloaded{colortbl}{% -\expandafter\def\expandafter\@mkpream\expandafter#\expandafter1% - \expandafter{% - \expandafter\let\expandafter\CT@setup\expandafter\relax - \expandafter\let\expandafter\CT@color\expandafter\relax - \expandafter\let\expandafter\CT@do@color\expandafter\relax - \expandafter\let\expandafter\color\expandafter\relax - \expandafter\let\expandafter\CT@column@color\expandafter\relax - \expandafter\let\expandafter\CT@row@color\expandafter\relax - \expandafter\let\expandafter\CT@cell@color\expandafter\relax - \@mkpream{#1}} -\let\TY@@mkpream\@mkpream -\def\TY@classz{% - \@classx - \@tempcnta\count@ - \ifx\TY@box\TY@box@v - \global\advance\TY@count\@ne - \fi - \let\centering c% - \let\raggedright\noindent - \let\raggedleft\indent - \let\arraybackslash\relax - \prepnext@tok -\expandafter\CT@extract\the\toks\@tempcnta\columncolor!\@nil - \ifnum\@chnum<4 - \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@ - \fi - \ifnum\@chnum=6 - \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@ - \fi - \@addtopreamble{% - \setbox\z@\hbox\bgroup\bgroup - \ifcase\@chnum - \hskip\stretch{.5}\kern\z@ - \d@llarbegin\insert@column\d@llarend\hskip\stretch{.5}\or - \kern\z@%<<<<<<<<<<<<<<<<<<<<<<<<<<< - \d@llarbegin \insert@column \d@llarend \hfill \or - \hfill\kern\z@ \d@llarbegin \insert@column \d@llarend \or - $\vcenter\@startpbox{\@nextchar}\insert@column \@endpbox $\or - \vtop \@startpbox{\@nextchar}\insert@column \@endpbox \or - \vbox \@startpbox{\@nextchar}\insert@column \@endpbox \or - \d@llarbegin \insert@column \d@llarend \or% dubious s case - \TY@box\centering\or - \TY@box\raggedright\or - \TY@box\raggedleft\or - \TY@box\relax - \fi - \egroup\egroup -\begingroup - \CT@setup - \CT@column@color - \CT@row@color - \CT@cell@color - \CT@do@color -\endgroup - \@tempdima\ht\z@ - \advance\@tempdima\minrowclearance - \vrule\@height\@tempdima\@width\z@ -\unhbox\z@ -}\prepnext@tok}% - \def\TY@arrayrule{% - \TY@subwidth\arrayrulewidth - \@addtopreamble{{\CT@arc@\vline}}}% - \def\TY@classvi{\ifcase \@lastchclass - \@acol \or - \TY@subwidth\doublerulesep - \ifx\CT@drsc@\relax - \@addtopreamble{\hskip\doublerulesep}% - \else - \@addtopreamble{{\CT@drsc@\vrule\@width\doublerulesep}}% - \fi\or - \@acol \or - \@classvii - \fi}% -}{% -\let\CT@start\relax -} -} -{\uccode`\*=`\ % -\uppercase{\gdef\TX@verb{% - \leavevmode\null\TX@vwarn - {\ifnum0=`}\fi\ttfamily\let\\\ignorespaces - \@ifstar{\let~*\TX@vb}{\TX@vb}}}} -\def\TX@vb#1{\def\@tempa##1#1{\toks@{##1}\edef\@tempa{\the\toks@}% - \expandafter\TX@v\meaning\@tempa\\ \\\ifnum0=`{\fi}}\@tempa!} -\def\TX@v#1!{\afterassignment\TX@vfirst\let\@tempa= } -\begingroup -\catcode`\*=\catcode`\# -\catcode`\#=12 -\gdef\TX@vfirst{% - \if\@tempa#% - \def\@tempb{\TX@v@#}% - \else - \let\@tempb\TX@v@ - \if\@tempa\space~\else\@tempa\fi - \fi - \@tempb} -\gdef\TX@v@*1 *2{% - \TX@v@hash*1##\relax\if*2\\\else~\expandafter\TX@v@\fi*2} -\gdef\TX@v@hash*1##*2{*1\ifx*2\relax\else#\expandafter\TX@v@hash\fi*2} -\endgroup -\def\TX@vwarn{% - \@warning{\noexpand\verb may be unreliable inside tabularx/y}% - \global\let\TX@vwarn\@empty} -\endinput -%% -%% End of file `tabulary.sty'. diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index a47864443..27eabb230 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -961,12 +961,17 @@ class LaTeXTranslator(nodes.NodeVisitor): def visit_collected_footnote(self, node): self.in_footnote += 1 if 'footnotetext' in node: - self.body.append('\\footnotetext[%s]{\sphinxAtStartFootnote\n' % node['number']) + self.body.append('%%\n\\begin{footnotetext}[%s]' + '\\sphinxAtStartFootnote\n' % node['number']) else: - self.body.append('\\footnote[%s]{\sphinxAtStartFootnote\n' % node['number']) + self.body.append('%%\n\\begin{footnote}[%s]' + '\\sphinxAtStartFootnote\n' % node['number']) def depart_collected_footnote(self, node): - self.body.append('}') + if 'footnotetext' in node: + self.body.append('%\n\\end{footnotetext}') + else: + self.body.append('%\n\\end{footnote}') self.in_footnote -= 1 def visit_label(self, node): @@ -1488,6 +1493,7 @@ class LaTeXTranslator(nodes.NodeVisitor): def visit_caption(self, node): self.in_caption += 1 + self.restrict_footnote(node) if self.in_container_literal_block: self.body.append('\\sphinxSetupCaptionForVerbatim{') elif self.in_minipage and isinstance(node.parent, nodes.figure): @@ -1500,6 +1506,7 @@ class LaTeXTranslator(nodes.NodeVisitor): def depart_caption(self, node): self.body.append('}') self.in_caption -= 1 + self.unrestrict_footnote(node) def visit_legend(self, node): self.body.append('{\\small ') @@ -1831,13 +1838,10 @@ class LaTeXTranslator(nodes.NodeVisitor): # if a footnote has been inserted once, it shouldn't be repeated # by the next reference if used: - if self.table or self.in_term or self.in_title: - self.body.append('\\protect\\footnotemark[%s]' % num) - else: - self.body.append('\\footnotemark[%s]' % num) + self.body.append('\\sphinxfootnotemark[%s]' % num) elif self.footnote_restricted: self.footnotestack[-1][num][1] = True - self.body.append('\\protect\\footnotemark[%s]' % num) + self.body.append('\\sphinxfootnotemark[%s]' % num) self.pending_footnotes.append(footnode) else: self.footnotestack[-1][num][1] = True @@ -1848,10 +1852,6 @@ class LaTeXTranslator(nodes.NodeVisitor): pass def visit_literal_block(self, node): - if self.in_footnote: - raise UnsupportedError('%s:%s: literal blocks in footnotes are ' - 'not supported by LaTeX' % - (self.curfilestack[-1], node.line)) if node.rawsource != node.astext(): # most probably a parsed-literal block -- don't highlight self.body.append('\\begin{alltt}\n') @@ -1863,7 +1863,7 @@ class LaTeXTranslator(nodes.NodeVisitor): # suppress with anchor=False \phantomsection insertion ids += self.hypertarget(node['ids'][0], anchor=False) # LaTeX code will insert \phantomsection prior to \label - if ids: + if ids and not self.in_footnote: self.body.append('\n\\def\\sphinxLiteralBlockLabel{' + ids + '}') code = node.astext() lang = self.hlsettingstack[-1][0] @@ -1888,9 +1888,13 @@ class LaTeXTranslator(nodes.NodeVisitor): **highlight_args) # workaround for Unicode issue hlcode = hlcode.replace(u'€', u'@texteuro[]') + if self.in_footnote: + self.body.append('\n\\sphinxSetupCodeBlockInFootnote') + hlcode = hlcode.replace('\\begin{Verbatim}', + '\\begin{sphinxVerbatim}') # if in table raise verbatim flag to avoid "tabulary" environment # and opt for sphinxVerbatimintable to handle caption & long lines - if self.table: + elif self.table: self.table.has_problematic = True self.table.has_verbatim = True hlcode = hlcode.replace('\\begin{Verbatim}', @@ -1900,10 +1904,12 @@ class LaTeXTranslator(nodes.NodeVisitor): '\\begin{sphinxVerbatim}') # get consistent trailer hlcode = hlcode.rstrip()[:-14] # strip \end{Verbatim} - self.body.append('\n' + hlcode + '\\end{sphinxVerbatim%s}\n' % - (self.table and 'intable' or '')) + self.body.append('\n' + hlcode + '\\end{sphinxVerbatim') + if self.table and not self.in_footnote: + self.body.append('intable') + self.body.append('}\n') if ids: - self.body.append('\\let\\sphinxLiteralBlockLabel\empty\n') + self.body.append('\\let\\sphinxLiteralBlockLabel\\empty\n') raise nodes.SkipNode def depart_literal_block(self, node): diff --git a/tests/roots/test-footnotes/index.rst b/tests/roots/test-footnotes/index.rst index 3a8bc25c5..a714f9e22 100644 --- a/tests/roots/test-footnotes/index.rst +++ b/tests/roots/test-footnotes/index.rst @@ -76,15 +76,17 @@ Footnote in term [#]_ .. [#] Foot note in table -.. list-table:: footnote [#]_ in caption of longtable +.. list-table:: footnote [#]_ in caption [#]_ of longtable :widths: 1 1 :header-rows: 1 * - name - desc - * - a - - b - * - a + * - This is a reference to the code-block in the footnote: + :ref:`codeblockinfootnote` + - This is one more footnote with some code in it [#]_. + * - This is a reference to the other code block: + :ref:`codeblockinanotherfootnote` - b * - a - b @@ -148,3 +150,21 @@ Footnote in term [#]_ - b .. [#] Foot note in longtable + +.. [#] Second footnote in caption of longtable + + .. code-block:: python + :caption: I am in a footnote + :name: codeblockinfootnote + + def foo(x,y): + return x+y + +.. [#] Third footnote in longtable + + .. code-block:: python + :caption: I am also in a footnote + :name: codeblockinanotherfootnote + + def bar(x,y): + return x+y diff --git a/tests/test_build_latex.py b/tests/test_build_latex.py index 89a888ab3..a0366f1f1 100644 --- a/tests/test_build_latex.py +++ b/tests/test_build_latex.py @@ -380,22 +380,26 @@ def test_footnote(app, status, warning): print(result) print(status.getvalue()) print(warning.getvalue()) - assert '\\footnote[1]{\sphinxAtStartFootnote\nnumbered\n}' in result - assert '\\footnote[2]{\sphinxAtStartFootnote\nauto numbered\n}' in result - assert '\\footnote[3]{\sphinxAtStartFootnote\nnamed\n}' in result + assert ('\\begin{footnote}[1]\\sphinxAtStartFootnote\nnumbered\n%\n' + '\\end{footnote}') in result + assert ('\\begin{footnote}[2]\\sphinxAtStartFootnote\nauto numbered\n%\n' + '\\end{footnote}') in result + assert '\\begin{footnote}[3]\\sphinxAtStartFootnote\nnamed\n%\n\\end{footnote}' in result assert '{\\hyperref[footnote:bar]{\\sphinxcrossref{{[}bar{]}}}}' in result assert '\\bibitem[bar]{bar}{\\phantomsection\\label{footnote:bar} ' in result assert '\\bibitem[bar]{bar}{\\phantomsection\\label{footnote:bar} \ncite' in result assert '\\bibitem[bar]{bar}{\\phantomsection\\label{footnote:bar} \ncite\n}' in result - assert '\\capstart\\caption{Table caption \\protect\\footnotemark[4]}' in result - assert 'name \\protect\\footnotemark[5]' in result - assert ('\\end{threeparttable}\n\n' - '\\footnotetext[4]{\sphinxAtStartFootnote\nfootnotes in table caption\n}' - '\\footnotetext[5]{\sphinxAtStartFootnote\nfootnotes in table\n}' in result) + assert '\\caption{Table caption \\sphinxfootnotemark[4]' in result + assert 'name \\sphinxfootnotemark[5]' in result + assert ('\\end{threeparttable}\n\n%\n' + '\\begin{footnotetext}[4]\sphinxAtStartFootnote\n' + 'footnotes in table caption\n%\n\\end{footnotetext}%\n' + '\\begin{footnotetext}[5]\sphinxAtStartFootnote\n' + 'footnotes in table\n%\n\\end{footnotetext}') in result @with_app(buildername='latex', testroot='footnotes') -def test_reference_in_caption(app, status, warning): +def test_reference_in_caption_and_codeblock_in_footnote(app, status, warning): app.builder.build_all() result = (app.outdir / 'Python.tex').text(encoding='utf8') print(result) @@ -406,20 +410,27 @@ def test_reference_in_caption(app, status, warning): assert '\\chapter{The section with a reference to {[}AuthorYear{]}}' in result assert '\\caption{The table title with a reference to {[}AuthorYear{]}}' in result assert '\\paragraph{The rubric title with a reference to {[}AuthorYear{]}}' in result - assert ('\\chapter{The section with a reference to \\protect\\footnotemark[4]}\n' + assert ('\\chapter{The section with a reference to \\sphinxfootnotemark[4]}\n' '\\label{index:the-section-with-a-reference-to}' - '\\footnotetext[4]{\sphinxAtStartFootnote\nFootnote in section\n}' in result) + '%\n\\begin{footnotetext}[4]\\sphinxAtStartFootnote\n' + 'Footnote in section\n%\n\\end{footnotetext}') in result assert ('\\caption{This is the figure caption with a footnote to ' - '\\protect\\footnotemark[6].}\label{index:id23}\end{figure}\n' - '\\footnotetext[6]{\sphinxAtStartFootnote\nFootnote in caption\n}')in result - assert ('\\caption{footnote \\protect\\footnotemark[7] ' - 'in caption of normal table}') in result - assert ('\\end{threeparttable}\n\n\\footnotetext[7]{\sphinxAtStartFootnote\n' - 'Foot note in table\n}' in result) - assert ('\\caption{footnote \\protect\\footnotemark[8] in caption of longtable}' - in result) - assert ('\end{longtable}\n\n\\footnotetext[8]{\sphinxAtStartFootnote\n' - 'Foot note in longtable\n}' in result) + '\\sphinxfootnotemark[6].}\label{index:id27}\end{figure}\n' + '%\n\\begin{footnotetext}[6]\\sphinxAtStartFootnote\n' + 'Footnote in caption\n%\n\\end{footnotetext}')in result + assert ('\\caption{footnote \\sphinxfootnotemark[7] ' + 'in caption of normal table}\\label{index:id28}') in result + assert ('\\caption{footnote \\sphinxfootnotemark[8] ' + 'in caption \sphinxfootnotemark[9] of longtable}') in result + assert ('\end{longtable}\n\n%\n\\begin{footnotetext}[8]' + '\sphinxAtStartFootnote\n' + 'Foot note in longtable\n%\n\\end{footnotetext}' in result) + assert ('This is a reference to the code-block in the footnote:\n' + '{\hyperref[index:codeblockinfootnote]{\\sphinxcrossref{\\DUrole' + '{std,std-ref}{I am in a footnote}}}}') in result + assert ('&\nThis is one more footnote with some code in it ' + '\\sphinxfootnotemark[10].\n\\\\') in result + assert '\\begin{sphinxVerbatim}[commandchars=\\\\\\{\\}]' in result @with_app(buildername='latex', testroot='footnotes', @@ -430,29 +441,32 @@ def test_latex_show_urls_is_inline(app, status, warning): print(result) print(status.getvalue()) print(warning.getvalue()) - assert ('Same footnote number \\footnote[1]{\sphinxAtStartFootnote\n' - 'footnote in bar\n} in bar.rst' in result) - assert ('Auto footnote number \\footnote[1]{\sphinxAtStartFootnote\n' - 'footnote in baz\n} in baz.rst' in result) - assert ('\\phantomsection\\label{index:id26}{\\hyperref[index:the\\string-section' + assert ('Same footnote number %\n\\begin{footnote}[1]\\sphinxAtStartFootnote\n' + 'footnote in bar\n%\n\\end{footnote} in bar.rst' in result) + assert ('Auto footnote number %\n\\begin{footnote}[1]\\sphinxAtStartFootnote\n' + 'footnote in baz\n%\n\\end{footnote} in baz.rst' in result) + assert ('\\phantomsection\\label{index:id30}{\\hyperref[index:the\\string-section' '\\string-with\\string-a\\string-reference\\string-to\\string-authoryear]' '{\\sphinxcrossref{The section with a reference to ' '\\phantomsection\\label{index:id1}' '{\\hyperref[index:authoryear]{\\sphinxcrossref{{[}AuthorYear{]}}}}}}}' in result) - assert ('\\phantomsection\\label{index:id27}{\\hyperref[index:the\\string-section' + assert ('\\phantomsection\\label{index:id31}{\\hyperref[index:the\\string-section' '\\string-with\\string-a\\string-reference\\string-to]' '{\\sphinxcrossref{The section with a reference to }}}' in result) - assert 'First footnote: \\footnote[2]{\sphinxAtStartFootnote\nFirst\n}' in result - assert 'Second footnote: \\footnote[1]{\sphinxAtStartFootnote\nSecond\n}' in result + assert ('First footnote: %\n\\begin{footnote}[2]\\sphinxAtStartFootnote\n' + 'First\n%\n\\end{footnote}') in result + assert ('Second footnote: %\n\\begin{footnote}[1]\\sphinxAtStartFootnote\n' + 'Second\n%\n\\end{footnote}') in result assert '\\href{http://sphinx-doc.org/}{Sphinx} (http://sphinx-doc.org/)' in result - assert 'Third footnote: \\footnote[3]{\sphinxAtStartFootnote\nThird\n}' in result + assert ('Third footnote: %\n\\begin{footnote}[3]\\sphinxAtStartFootnote\n' + 'Third\n%\n\\end{footnote}') in result assert ('\\href{http://sphinx-doc.org/~test/}{URL including tilde} ' '(http://sphinx-doc.org/\\textasciitilde{}test/)' in result) assert ('\\item[{\\href{http://sphinx-doc.org/}{URL in term} (http://sphinx-doc.org/)}] ' '\\leavevmode\nDescription' in result) - assert ('\\item[{Footnote in term \\protect\\footnotemark[5]}] ' - '\\leavevmode\\footnotetext[5]{\sphinxAtStartFootnote\n' - 'Footnote in term\n}\nDescription' in result) + assert ('\\item[{Footnote in term \\sphinxfootnotemark[5]}] ' + '\\leavevmode%\n\\begin{footnotetext}[5]\\sphinxAtStartFootnote\n' + 'Footnote in term\n%\n\\end{footnotetext}\nDescription' in result) assert ('\\item[{\\href{http://sphinx-doc.org/}{Term in deflist} ' '(http://sphinx-doc.org/)}] \\leavevmode\nDescription' in result) assert ('\\url{https://github.com/sphinx-doc/sphinx}\n' in result) @@ -468,40 +482,45 @@ def test_latex_show_urls_is_footnote(app, status, warning): print(result) print(status.getvalue()) print(warning.getvalue()) - assert ('Same footnote number \\footnote[1]{\sphinxAtStartFootnote\n' - 'footnote in bar\n} in bar.rst' in result) - assert ('Auto footnote number \\footnote[2]{\sphinxAtStartFootnote\n' - 'footnote in baz\n} in baz.rst' in result) - assert ('\\phantomsection\\label{index:id26}{\\hyperref[index:the\\string-section' + assert ('Same footnote number %\n\\begin{footnote}[1]\\sphinxAtStartFootnote\n' + 'footnote in bar\n%\n\\end{footnote} in bar.rst' in result) + assert ('Auto footnote number %\n\\begin{footnote}[2]\\sphinxAtStartFootnote\n' + 'footnote in baz\n%\n\\end{footnote} in baz.rst' in result) + assert ('\\phantomsection\\label{index:id30}{\\hyperref[index:the\\string-section' '\\string-with\\string-a\\string-reference\\string-to\\string-authoryear]' '{\\sphinxcrossref{The section with a reference ' 'to \\phantomsection\\label{index:id1}' '{\\hyperref[index:authoryear]{\\sphinxcrossref{{[}AuthorYear{]}}}}}}}' in result) - assert ('\\phantomsection\\label{index:id27}{\\hyperref[index:the\\string-section' + assert ('\\phantomsection\\label{index:id31}{\\hyperref[index:the\\string-section' '\\string-with\\string-a\\string-reference\\string-to]' '{\\sphinxcrossref{The section with a reference to }}}' in result) - assert 'First footnote: \\footnote[3]{\sphinxAtStartFootnote\nFirst\n}' in result - assert 'Second footnote: \\footnote[1]{\sphinxAtStartFootnote\nSecond\n}' in result + assert ('First footnote: %\n\\begin{footnote}[3]\\sphinxAtStartFootnote\n' + 'First\n%\n\\end{footnote}') in result + assert ('Second footnote: %\n\\begin{footnote}[1]\\sphinxAtStartFootnote\n' + 'Second\n%\n\\end{footnote}') in result assert ('\\href{http://sphinx-doc.org/}{Sphinx}' - '\\footnote[4]{\sphinxAtStartFootnote\n' - '\\nolinkurl{http://sphinx-doc.org/}\n}' in result) - assert 'Third footnote: \\footnote[6]{\sphinxAtStartFootnote\nThird\n}' in result + '%\n\\begin{footnote}[4]\\sphinxAtStartFootnote\n' + '\\nolinkurl{http://sphinx-doc.org/}\n%\n\\end{footnote}') in result + assert ('Third footnote: %\n\\begin{footnote}[6]\\sphinxAtStartFootnote\n' + 'Third\n%\n\\end{footnote}') in result assert ('\\href{http://sphinx-doc.org/~test/}{URL including tilde}' - '\\footnote[5]{\sphinxAtStartFootnote\n' - '\\nolinkurl{http://sphinx-doc.org/~test/}\n}' in result) - assert ('\\item[{\\href{http://sphinx-doc.org/}{URL in term}\\protect\\footnotemark[8]}] ' - '\\leavevmode\\footnotetext[8]{\sphinxAtStartFootnote\n' - '\\nolinkurl{http://sphinx-doc.org/}\n}\nDescription' in result) - assert ('\\item[{Footnote in term \\protect\\footnotemark[10]}] ' - '\\leavevmode\\footnotetext[10]{\sphinxAtStartFootnote\n' - 'Footnote in term\n}\nDescription' in result) - assert ('\\item[{\\href{http://sphinx-doc.org/}{Term in deflist}\\protect' - '\\footnotemark[9]}] ' - '\\leavevmode\\footnotetext[9]{\sphinxAtStartFootnote\n' - '\\nolinkurl{http://sphinx-doc.org/}\n}\nDescription' in result) + '%\n\\begin{footnote}[5]\\sphinxAtStartFootnote\n' + '\\nolinkurl{http://sphinx-doc.org/~test/}\n%\n\\end{footnote}') in result + assert ('\\item[{\\href{http://sphinx-doc.org/}{URL in term}\\sphinxfootnotemark[8]}] ' + '\\leavevmode%\n\\begin{footnotetext}[8]\\sphinxAtStartFootnote\n' + '\\nolinkurl{http://sphinx-doc.org/}\n%\n' + '\\end{footnotetext}\nDescription') in result + assert ('\\item[{Footnote in term \\sphinxfootnotemark[10]}] ' + '\\leavevmode%\n\\begin{footnotetext}[10]\\sphinxAtStartFootnote\n' + 'Footnote in term\n%\n\\end{footnotetext}\nDescription') in result + assert ('\\item[{\\href{http://sphinx-doc.org/}{Term in deflist}' + '\\sphinxfootnotemark[9]}] ' + '\\leavevmode%\n\\begin{footnotetext}[9]\\sphinxAtStartFootnote\n' + '\\nolinkurl{http://sphinx-doc.org/}\n%\n' + '\\end{footnotetext}\nDescription') in result assert ('\\url{https://github.com/sphinx-doc/sphinx}\n' in result) assert ('\\href{mailto:sphinx-dev@googlegroups.com}' - '{sphinx-dev@googlegroups.com}\n' in result) + '{sphinx-dev@googlegroups.com}\n') in result @with_app(buildername='latex', testroot='footnotes', @@ -512,33 +531,36 @@ def test_latex_show_urls_is_no(app, status, warning): print(result) print(status.getvalue()) print(warning.getvalue()) - assert ('Same footnote number \\footnote[1]{\sphinxAtStartFootnote\n' - 'footnote in bar\n} in bar.rst' in result) - assert ('Auto footnote number \\footnote[1]{\sphinxAtStartFootnote\n' - 'footnote in baz\n} in baz.rst' in result) - assert ('\\phantomsection\\label{index:id26}{\\hyperref[index:the\\string-section' + assert ('Same footnote number %\n\\begin{footnote}[1]\\sphinxAtStartFootnote\n' + 'footnote in bar\n%\n\\end{footnote} in bar.rst') in result + assert ('Auto footnote number %\n\\begin{footnote}[1]\\sphinxAtStartFootnote\n' + 'footnote in baz\n%\n\\end{footnote} in baz.rst') in result + assert ('\\phantomsection\\label{index:id30}{\\hyperref[index:the\\string-section' '\\string-with\\string-a\\string-reference\\string-to\\string-authoryear]' '{\\sphinxcrossref{The section with a reference ' 'to \\phantomsection\\label{index:id1}' - '{\\hyperref[index:authoryear]{\\sphinxcrossref{{[}AuthorYear{]}}}}}}}' in result) - assert ('\\phantomsection\\label{index:id27}{\\hyperref[index:the\\string-section' + '{\\hyperref[index:authoryear]{\\sphinxcrossref{{[}AuthorYear{]}}}}}}}') in result + assert ('\\phantomsection\\label{index:id31}{\\hyperref[index:the\\string-section' '\\string-with\\string-a\\string-reference\\string-to]' '{\\sphinxcrossref{The section with a reference to }}}' in result) - assert 'First footnote: \\footnote[2]{\sphinxAtStartFootnote\nFirst\n}' in result - assert 'Second footnote: \\footnote[1]{\sphinxAtStartFootnote\nSecond\n}' in result + assert ('First footnote: %\n\\begin{footnote}[2]\\sphinxAtStartFootnote\n' + 'First\n%\n\\end{footnote}') in result + assert ('Second footnote: %\n\\begin{footnote}[1]\\sphinxAtStartFootnote\n' + 'Second\n%\n\\end{footnote}') in result assert '\\href{http://sphinx-doc.org/}{Sphinx}' in result - assert 'Third footnote: \\footnote[3]{\sphinxAtStartFootnote\nThird\n}' in result + assert ('Third footnote: %\n\\begin{footnote}[3]\\sphinxAtStartFootnote\n' + 'Third\n%\n\\end{footnote}') in result assert '\\href{http://sphinx-doc.org/~test/}{URL including tilde}' in result assert ('\\item[{\\href{http://sphinx-doc.org/}{URL in term}}] ' - '\\leavevmode\nDescription' in result) - assert ('\\item[{Footnote in term \\protect\\footnotemark[5]}] ' - '\\leavevmode\\footnotetext[5]{\sphinxAtStartFootnote\n' - 'Footnote in term\n}\nDescription' in result) + '\\leavevmode\nDescription') in result + assert ('\\item[{Footnote in term \\sphinxfootnotemark[5]}] ' + '\\leavevmode%\n\\begin{footnotetext}[5]\\sphinxAtStartFootnote\n' + 'Footnote in term\n%\n\\end{footnotetext}\nDescription') in result assert ('\\item[{\\href{http://sphinx-doc.org/}{Term in deflist}}] ' - '\\leavevmode\nDescription' in result) + '\\leavevmode\nDescription') in result assert ('\\url{https://github.com/sphinx-doc/sphinx}\n' in result) assert ('\\href{mailto:sphinx-dev@googlegroups.com}' - '{sphinx-dev@googlegroups.com}\n' in result) + '{sphinx-dev@googlegroups.com}\n') in result @with_app(buildername='latex', testroot='image-in-section') From 40b644b664caa610abd96b42797f1b824d99251c Mon Sep 17 00:00:00 2001 From: jfbu Date: Sat, 15 Oct 2016 12:19:08 +0200 Subject: [PATCH 088/297] Update CHANGES for PR#3022 --- CHANGES | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGES b/CHANGES index 84f3b1f7b..462d22d07 100644 --- a/CHANGES +++ b/CHANGES @@ -11,6 +11,8 @@ Incompatible changes * #2435: Slim down quickstarted conf.py * The ``sphinx.sty`` latex package does not load itself "hyperref", as this is done later in the preamble of the latex output via ``'hyperref'`` key. +* Sphinx does not ship anymore a custom modified LaTeX style file ``tabulary``. + The non-modified package is used. Features added -------------- @@ -25,6 +27,7 @@ Features added * #3028: Add ``{path}`` and ``{basename}`` to the format of ``figure_language_filename`` * new ``'hyperref'`` key in the ``latex_elements`` dictionary (ref #3030) +* #3022: Allow code-blocks in footnotes for LaTeX PDF output Bugs fixed ---------- @@ -46,6 +49,7 @@ Bugs fixed * Fix an issue with ``\pysigline`` in LaTeX style file (ref #3023) * #3038: ``sphinx.ext.math*`` raises TypeError if labels are duplicated * #3031: incompatibility with LaTeX package ``tocloft`` +* #3003: literal blocks in footnotes are not supported by Latex Testing -------- From aad61e814ca7adfd162c262bfdff0f4ef0cf653b Mon Sep 17 00:00:00 2001 From: jfbu Date: Sat, 15 Oct 2016 13:03:18 +0200 Subject: [PATCH 089/297] Fix #2461: re-allow footnotes in topics for latex PDF The issue #2291 which was fixed at 9b958b6d (1.3.6) is now alleviated in another way since PR #3022 (b8e0e93). --- sphinx/writers/latex.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 27eabb230..5ad9b820c 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -146,15 +146,11 @@ class ShowUrlsTransform(object): if node.astext() != uri: index = node.parent.index(node) if show_urls == 'footnote': - if list(traverse_parent(node, nodes.topic)): - # should not expand references in topics - pass - else: - footnote_nodes = self.create_footnote(uri) - for i, fn in enumerate(footnote_nodes): - node.parent.insert(index + i + 1, fn) + footnote_nodes = self.create_footnote(uri) + for i, fn in enumerate(footnote_nodes): + node.parent.insert(index + i + 1, fn) - self.expanded = True + self.expanded = True else: # all other true values (b/w compat) textnode = nodes.Text(" (%s)" % uri) node.parent.insert(index + 1, textnode) From 362ee9d9744f46435259c947429a77763ab57c93 Mon Sep 17 00:00:00 2001 From: jfbu Date: Sat, 15 Oct 2016 21:09:21 +0200 Subject: [PATCH 090/297] Fix make-mode in order to allow build to go through --- sphinx/templates/quickstart/Makefile.new_t | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/sphinx/templates/quickstart/Makefile.new_t b/sphinx/templates/quickstart/Makefile.new_t index f160bc212..8414b4a34 100644 --- a/sphinx/templates/quickstart/Makefile.new_t +++ b/sphinx/templates/quickstart/Makefile.new_t @@ -8,14 +8,13 @@ SPHINXPROJ = {{ project_fn }} SOURCEDIR = {{ rsrcdir }} BUILDDIR = {{ rbuilddir }} -# Has to be explicit, otherwise we don't get "make" without targets right. -help: - @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) +.PHONY: Makefile -# You can add custom targets here. +# Need to intercept "Makefile" from catch-all target. +Makefile: ; # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). -%: +%: Makefile @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) From 16e9049bb3c3f19d74a3e715d86e8c9ee8f1b51b Mon Sep 17 00:00:00 2001 From: jfbu Date: Sat, 15 Oct 2016 22:59:12 +0200 Subject: [PATCH 091/297] No need for an empty recipe for Makefile as it has been set .PHONY --- sphinx/templates/quickstart/Makefile.new_t | 3 --- 1 file changed, 3 deletions(-) diff --git a/sphinx/templates/quickstart/Makefile.new_t b/sphinx/templates/quickstart/Makefile.new_t index 8414b4a34..1da216c10 100644 --- a/sphinx/templates/quickstart/Makefile.new_t +++ b/sphinx/templates/quickstart/Makefile.new_t @@ -10,9 +10,6 @@ BUILDDIR = {{ rbuilddir }} .PHONY: Makefile -# Need to intercept "Makefile" from catch-all target. -Makefile: ; - # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile From 2b865cf90a6e5f0c0cd68e7f9fd097367fc8ac21 Mon Sep 17 00:00:00 2001 From: jfbu Date: Sat, 15 Oct 2016 23:42:00 +0200 Subject: [PATCH 092/297] Make ``make`` synonym to ``make help`` again --- sphinx/templates/quickstart/Makefile.new_t | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sphinx/templates/quickstart/Makefile.new_t b/sphinx/templates/quickstart/Makefile.new_t index 1da216c10..3b693e144 100644 --- a/sphinx/templates/quickstart/Makefile.new_t +++ b/sphinx/templates/quickstart/Makefile.new_t @@ -8,7 +8,10 @@ SPHINXPROJ = {{ project_fn }} SOURCEDIR = {{ rsrcdir }} BUILDDIR = {{ rbuilddir }} -.PHONY: Makefile +help: + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). From 828c96ec10f738819c5f25829b1d05673e06b3cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20B?= Date: Sun, 16 Oct 2016 17:40:19 +0200 Subject: [PATCH 093/297] Fix #3047: spacing before footnote in pdf output is not coherent (#3057) A ``\sphinxBeforeFootnote`` macro is inserted by footnote environment and ``\footnotemark`` command. Its default is to remove the space before the footnote mark. Formerly, footnotes from explicit mark-up were preceded by a space allowing a linebreak, but automatically generated footnotes had no such space. --- doc/latex.rst | 14 ++++++++++++++ sphinx/texinputs/footnotehyper-sphinx.sty | 16 +++++++++++++--- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/doc/latex.rst b/doc/latex.rst index 8d047582d..1716a5af4 100644 --- a/doc/latex.rst +++ b/doc/latex.rst @@ -151,6 +151,20 @@ from package file :file:`sphinx.sty` and class file :file:`sphinxhowto.cls` or displaying source code examples). - the ``\sphinxAtStartFootnote`` is inserted between footnote numbers and their texts, by default it does ``\mbox{ }``. +- the ``\sphinxBeforeFootnote`` command is executed before each footnote, its + default definition is:: + + \newcommand*{\sphinxBeforeFootnote}{\leavevmode\unskip} + + You can ``\renewcommand`` it to do nothing in order to recover the earlier + behaviour of Sphinx, or alternatively add a ``\nobreak\space`` or a + ``\thinspace`` after the ``\unskip`` in the definition to insert some + (non-breakable) space. + + .. versionadded:: 1.5 + formerly, footnotes from explicit mark-up were preceded by a space + allowing a linebreak, but automatically generated footnotes had no such + space. - use ``\sphinxSetHeaderFamily`` to set the font used by headings (default is ``\sffamily\bfseries``). diff --git a/sphinx/texinputs/footnotehyper-sphinx.sty b/sphinx/texinputs/footnotehyper-sphinx.sty index d0c592710..65cb6e8bc 100644 --- a/sphinx/texinputs/footnotehyper-sphinx.sty +++ b/sphinx/texinputs/footnotehyper-sphinx.sty @@ -1,6 +1,6 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{footnotehyper-sphinx}% - [2016/10/08 v0.9f hyperref aware footnote.sty for sphinx (JFB)] + [2016/10/16 v0.9f hyperref aware footnote.sty for sphinx (JFB)] %% %% Package: footnotehyper-sphinx %% Version: based on footnotehyper.sty v0.9f (2016/10/03) @@ -17,6 +17,11 @@ %% and to be compatible with hyperref constructions of bookmarks, and survive %% to \MakeUppercase command or such which may be used to typeset chapter %% titles for example. +%% 5. the \sphinxBeforeFootnote is added: reST syntax implies that a space token +%% is needed before footnote mark-up like [#]_ and it goes to latex file (and +%% a line break can happen before the footnote mark), but for generated +%% footnotes from latex_show_urls = 'footnote' there is no such space. The +%% hook normalizes this, and by default uses no space. %% %% Note: with \footnotemark[N]/\footnotetext[N] syntax, hyperref %% does not insert an hyperlink. This is _not_ improved here. @@ -94,7 +99,8 @@ \if@savingnotes\expandafter\fn@fntext\else\expandafter\H@@footnotetext\fi {\unvbox\z@}\endgroup }% -\def\FNH@fixed@footnote {\ifx\@currenvir\fn@footnote +%% \sphinxBeforeFootnote added 2016/10/16 +\def\FNH@fixed@footnote {\sphinxBeforeFootnote\ifx\@currenvir\fn@footnote \expandafter\FNH@footnoteenv\else\expandafter\fn@latex@@footnote\fi }% \def\FNH@footnoteenv {\@ifnextchar[\FNH@xfootnoteenv%] {\stepcounter\@mpfn @@ -150,9 +156,13 @@ }% %% \sphinxfootnotemark: usable in section titles and silently removed from TOCs \def\sphinxfootnotemark [#1]% - {\ifx\thepage\relax\else \protect\footnotemark[#1]\fi}% + {\ifx\thepage\relax\else \protect\sphinxBeforeFootnote + \protect\footnotemark[#1]\fi}% \AtBeginDocument {\pdfstringdefDisableCommands{\def\sphinxfootnotemark [#1]{}}}% +%% before 1.5, Sphinx left a (breakable) space before user generated footnotes +%% but no space before automatically generated footnotes. +\def\sphinxBeforeFootnote {\leavevmode\unskip}% \endinput %% %% End of file `footnotehyper-sphinx.sty'. From 18c31d52bb1143d76bc0b3168d4d1e0a452ec638 Mon Sep 17 00:00:00 2001 From: jfbu Date: Sun, 16 Oct 2016 17:47:38 +0200 Subject: [PATCH 094/297] Update CHANGES for PR#3057 --- CHANGES | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGES b/CHANGES index 462d22d07..5fb443e4a 100644 --- a/CHANGES +++ b/CHANGES @@ -13,6 +13,8 @@ Incompatible changes is done later in the preamble of the latex output via ``'hyperref'`` key. * Sphinx does not ship anymore a custom modified LaTeX style file ``tabulary``. The non-modified package is used. +* #3057: By default, footnote marks in latex PDF output are not preceded by a + space anymore, ``\sphinxBeforeFootnote`` allows user customization if needed. Features added -------------- @@ -50,6 +52,7 @@ Bugs fixed * #3038: ``sphinx.ext.math*`` raises TypeError if labels are duplicated * #3031: incompatibility with LaTeX package ``tocloft`` * #3003: literal blocks in footnotes are not supported by Latex +* #3047: space before footnote in pdf output is not coherent and allow breaks Testing -------- From 78d96b4abb1ac98efb96e73b79f70375f3496194 Mon Sep 17 00:00:00 2001 From: jfbu Date: Sun, 16 Oct 2016 17:49:23 +0200 Subject: [PATCH 095/297] amend Update CHANGES for PR#3057 --- CHANGES | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 5fb443e4a..cdc428cd0 100644 --- a/CHANGES +++ b/CHANGES @@ -52,7 +52,7 @@ Bugs fixed * #3038: ``sphinx.ext.math*`` raises TypeError if labels are duplicated * #3031: incompatibility with LaTeX package ``tocloft`` * #3003: literal blocks in footnotes are not supported by Latex -* #3047: space before footnote in pdf output is not coherent and allow breaks +* #3047: spacing before footnote in pdf output is not coherent and allows breaks Testing -------- From 53ea1cb2808e90b51f0ed9468740a34c00decc2a Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Mon, 17 Oct 2016 16:06:45 +0900 Subject: [PATCH 096/297] Fix #3045: HTML search index creator should ignore "raw" content if now html --- CHANGES | 1 + sphinx/search/__init__.py | 15 ++++++++------- tests/roots/test-search/index.rst | 10 +++++++++- tests/test_search.py | 10 +++++++++- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/CHANGES b/CHANGES index cdc428cd0..c5c06efb3 100644 --- a/CHANGES +++ b/CHANGES @@ -53,6 +53,7 @@ Bugs fixed * #3031: incompatibility with LaTeX package ``tocloft`` * #3003: literal blocks in footnotes are not supported by Latex * #3047: spacing before footnote in pdf output is not coherent and allows breaks +* #3045: HTML search index creator should ignore "raw" content if now html Testing -------- diff --git a/sphinx/search/__init__.py b/sphinx/search/__init__.py index 09430876b..d3c6c0eba 100644 --- a/sphinx/search/__init__.py +++ b/sphinx/search/__init__.py @@ -196,13 +196,14 @@ class WordCollector(NodeVisitor): if issubclass(nodetype, comment): raise SkipNode if issubclass(nodetype, raw): - # Some people might put content in raw HTML that should be searched, - # so we just amateurishly strip HTML tags and index the remaining - # content - nodetext = re.sub(r'(?is)', '', node.astext()) - nodetext = re.sub(r'(?is)', '', nodetext) - nodetext = re.sub(r'<[^<]+?>', '', nodetext) - self.found_words.extend(self.lang.split(nodetext)) + if 'html' in node.get('format', '').split(): + # Some people might put content in raw HTML that should be searched, + # so we just amateurishly strip HTML tags and index the remaining + # content + nodetext = re.sub(r'(?is)', '', node.astext()) + nodetext = re.sub(r'(?is)', '', nodetext) + nodetext = re.sub(r'<[^<]+?>', '', nodetext) + self.found_words.extend(self.lang.split(nodetext)) raise SkipNode if issubclass(nodetype, Text): self.found_words.extend(self.lang.split(node.astext())) diff --git a/tests/roots/test-search/index.rst b/tests/roots/test-search/index.rst index 21fcdf53c..b593c6cad 100644 --- a/tests/roots/test-search/index.rst +++ b/tests/roots/test-search/index.rst @@ -17,4 +17,12 @@ textinheading .. toctree:: - tocitem \ No newline at end of file + tocitem + +.. raw:: html + + rawword" + +.. raw:: latex + + latex_keyword diff --git a/tests/test_search.py b/tests/test_search.py index a363b30be..d4b8817de 100644 --- a/tests/test_search.py +++ b/tests/test_search.py @@ -114,4 +114,12 @@ def test_term_in_heading_and_section(app, status, warning): # both documents should be a hit in the search index as a title, # respectively text hit assert 'textinhead:1' in searchindex - assert 'textinhead:0' in searchindex \ No newline at end of file + assert 'textinhead:0' in searchindex + + +@with_app(testroot='search') +def test_term_in_raw_directive(app, status, warning): + searchindex = jsload(app.outdir / 'searchindex.js') + assert not is_registered_term(searchindex, 'raw') + assert is_registered_term(searchindex, 'rawword') + assert not is_registered_term(searchindex, 'latex_keyword') From 4411f677cf2ab450007ead16061b9d401a04fc5b Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Mon, 17 Oct 2016 16:17:47 +0900 Subject: [PATCH 097/297] Fix #3058: Using the same 'caption' attribute in multiple 'toctree' directives results in warning / error --- CHANGES | 2 ++ sphinx/directives/other.py | 5 +---- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index e1fd628a4..ea744d89b 100644 --- a/CHANGES +++ b/CHANGES @@ -5,6 +5,8 @@ Bugs fixed ---------- * #2936: Fix doc/Makefile that can't build man because doc/man exists +* #3058: Using the same 'caption' attribute in multiple 'toctree' directives + results in warning / error Release 1.4.8 (released Oct 1, 2016) ==================================== diff --git a/sphinx/directives/other.py b/sphinx/directives/other.py index bab2f9f54..52d3e9453 100644 --- a/sphinx/directives/other.py +++ b/sphinx/directives/other.py @@ -52,9 +52,6 @@ class TocTree(Directive): env = self.state.document.settings.env suffixes = env.config.source_suffix glob = 'glob' in self.options - caption = self.options.get('caption') - if caption: - self.options.setdefault('name', nodes.fully_normalize_name(caption)) ret = [] # (title, ref) pairs, where ref may be a document, or an external link, @@ -113,7 +110,7 @@ class TocTree(Directive): # includefiles only entries that are documents subnode['includefiles'] = includefiles subnode['maxdepth'] = self.options.get('maxdepth', -1) - subnode['caption'] = caption + subnode['caption'] = self.options.get('caption') subnode['glob'] = glob subnode['hidden'] = 'hidden' in self.options subnode['includehidden'] = 'includehidden' in self.options From daee1fc51d0ed0b9a4d4abf2ab7711ba30af9f3a Mon Sep 17 00:00:00 2001 From: jfbu Date: Mon, 17 Oct 2016 09:46:38 +0200 Subject: [PATCH 098/297] Fix config.rst description of ``latex_documents`` docclass element --- doc/config.rst | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/doc/config.rst b/doc/config.rst index b015ade13..cc45cca98 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -1562,11 +1562,13 @@ These options influence LaTeX output. See further :doc:`latex`. * *author*: Author for the LaTeX document. The same LaTeX markup caveat as for *title* applies. Use ``\and`` to separate multiple authors, as in: ``'John \and Sarah'``. - * *documentclass*: Normally, one of ``'manual'`` or ``'howto'`` (provided by - Sphinx). Other document classes can be given, but they must include the - "sphinx" package in order to define Sphinx's custom LaTeX commands. "howto" - documents will not get appendices. Also, howtos will have a simpler title - page. + * *documentclass*: Normally, one of ``'manual'`` or ``'howto'`` (provided + by Sphinx and based on ``'report'``, resp. ``'article'``; Japanese + documents use ``'jsbook'``, resp. ``'jreport'``.) "howto" (non-Japanese) + documents will not get appendices. Also they have a simpler title page. + Other document classes can be given. Independently of the document class, + the "sphinx" package is always loaded in order to define Sphinx's custom + LaTeX commands. * *toctree_only*: Must be ``True`` or ``False``. If true, the *startdoc* document itself is not included in the output, only the documents From e04fe845c7ad90fcf01738d67cca7401c06d0acf Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Mon, 17 Oct 2016 21:09:42 +0900 Subject: [PATCH 099/297] Fix #3039: English stemmer returns wrong word if the word is capitalized --- CHANGES | 1 + sphinx/search/en.py | 2 +- tests/roots/test-search/index.rst | 2 ++ tests/test_search.py | 6 ++++-- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index c5c06efb3..819fbb94f 100644 --- a/CHANGES +++ b/CHANGES @@ -54,6 +54,7 @@ Bugs fixed * #3003: literal blocks in footnotes are not supported by Latex * #3047: spacing before footnote in pdf output is not coherent and allows breaks * #3045: HTML search index creator should ignore "raw" content if now html +* #3039: English stemmer returns wrong word if the word is capitalized Testing -------- diff --git a/sphinx/search/en.py b/sphinx/search/en.py index 39c328760..d5259bed7 100644 --- a/sphinx/search/en.py +++ b/sphinx/search/en.py @@ -242,4 +242,4 @@ class SearchEnglish(SearchLanguage): self.stemmer = Stemmer() def stem(self, word): - return self.stemmer.stem(word) + return self.stemmer.stem(word.lower()) diff --git a/tests/roots/test-search/index.rst b/tests/roots/test-search/index.rst index b593c6cad..1e0dd93de 100644 --- a/tests/roots/test-search/index.rst +++ b/tests/roots/test-search/index.rst @@ -15,6 +15,8 @@ findthisstemmedkey textinheading +International + .. toctree:: tocitem diff --git a/tests/test_search.py b/tests/test_search.py index d4b8817de..fb7d47d6f 100644 --- a/tests/test_search.py +++ b/tests/test_search.py @@ -103,8 +103,10 @@ def test_stemmer_does_not_remove_short_words(app, status, warning): @with_app(testroot='search') def test_stemmer(app, status, warning): - searchindex = (app.outdir / 'searchindex.js').text() - assert 'findthisstemmedkei' in searchindex + searchindex = jsload(app.outdir / 'searchindex.js') + print(searchindex) + assert is_registered_term(searchindex, 'findthisstemmedkei') + assert is_registered_term(searchindex, 'intern') @with_app(testroot='search') From 65e37eefb3c21d4ae3cdbcd7ffe8221f7c2519f8 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Mon, 17 Oct 2016 21:31:10 +0900 Subject: [PATCH 100/297] Bump to 1.5 alpha2 --- CHANGES | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/CHANGES b/CHANGES index 819fbb94f..2462c7d00 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,5 @@ -Release 1.5 alpha2 (in development) -=================================== +Release 1.5 alpha2 (released Oct 17, 2016) +========================================== Incompatible changes -------------------- @@ -61,10 +61,6 @@ Testing * To simplify, sphinx uses external mock package even if unittest.mock exists. -Documentation -------------- - - Release 1.5 alpha1 (released Sep 21, 2016) ========================================== From 9b1b9ce65baf786071a5d37cd6e4e016d5c8155e Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Mon, 17 Oct 2016 21:35:12 +0900 Subject: [PATCH 101/297] Bump version --- CHANGES | 13 +++++++++++++ sphinx/__init__.py | 6 +++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index 2462c7d00..1fa764cdc 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,16 @@ +Release 1.5 alpha3 (in development) +=================================== + +Incompatible changes +-------------------- + +Features added +-------------- + +Bugs fixed +---------- + + Release 1.5 alpha2 (released Oct 17, 2016) ========================================== diff --git a/sphinx/__init__.py b/sphinx/__init__.py index 4b12231d4..59b731d5b 100644 --- a/sphinx/__init__.py +++ b/sphinx/__init__.py @@ -15,13 +15,13 @@ import sys from os import path -__version__ = '1.5a2' -__released__ = '1.5a2' # used when Sphinx builds its own docs +__version__ = '1.5a3' +__released__ = '1.5a3' # used when Sphinx builds its own docs # version info for better programmatic use # possible values for 3rd element: 'alpha', 'beta', 'rc', 'final' # 'final' has 0 as the last element -version_info = (1, 5, 0, 'alpha', 2) +version_info = (1, 5, 0, 'alpha', 3) package_dir = path.abspath(path.dirname(__file__)) From 6438cf54dbc0316ee7d4191eb9719971c62648de Mon Sep 17 00:00:00 2001 From: jfbu Date: Mon, 17 Oct 2016 17:25:40 +0200 Subject: [PATCH 102/297] fix capitalization in config.rst: "Example of configuration file" --- doc/config.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/config.rst b/doc/config.rst index cc45cca98..0ae1c65e4 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -2130,7 +2130,7 @@ Options for the C++ domain .. versionadded:: 1.5 -example of configuration file +Example of configuration file ============================= .. literalinclude:: _static/conf.py.txt From d1c6d3c45bfe5bc9c0cdb2d2de0724512c01d76c Mon Sep 17 00:00:00 2001 From: shimizukawa Date: Wed, 19 Oct 2016 01:00:02 +0900 Subject: [PATCH 103/297] Update CHANGES for refs #2432. --- CHANGES | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES b/CHANGES index 1fa764cdc..468906171 100644 --- a/CHANGES +++ b/CHANGES @@ -10,6 +10,8 @@ Features added Bugs fixed ---------- +* #2432: Fix unwanted * between varargs and keyword only args. Thanks to Alex Grönholm. + Release 1.5 alpha2 (released Oct 17, 2016) ========================================== From 021974ed94a8055cd2d64c6c96b264f2398b9f09 Mon Sep 17 00:00:00 2001 From: shimizukawa Date: Wed, 19 Oct 2016 01:08:07 +0900 Subject: [PATCH 104/297] refs #2432 update for latest master --- tests/test_autodoc.py | 4 ++-- tests/typing_test_data.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_autodoc.py b/tests/test_autodoc.py index 024b71002..d290e050b 100644 --- a/tests/test_autodoc.py +++ b/tests/test_autodoc.py @@ -1025,7 +1025,7 @@ def test_type_hints(): from sphinx.util.inspect import getargspec try: - from typing_test_data import f0, f1, f2, f3, f4, f5, f6, f7, f8, f9 + from typing_test_data import f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10 except (ImportError, SyntaxError): raise SkipTest('Cannot import Python code with function annotations') @@ -1066,4 +1066,4 @@ def test_type_hints(): ' y: typing.Tuple[int, ...]) -> None') # Instance annotations - verify_arg_spec(f9, '(x: CustomAnnotation, y: 123) -> None') + verify_arg_spec(f10, '(x: CustomAnnotation, y: 123) -> None') diff --git a/tests/typing_test_data.py b/tests/typing_test_data.py index 8de28bc8a..beb8deebb 100644 --- a/tests/typing_test_data.py +++ b/tests/typing_test_data.py @@ -56,5 +56,5 @@ class CustomAnnotation: def __repr__(self): return 'CustomAnnotation' -def f9(x: CustomAnnotation(), y: 123) -> None: +def f10(x: CustomAnnotation(), y: 123) -> None: pass From 039c68d8f3d5eedea3fde10bca17e52a56a4c63f Mon Sep 17 00:00:00 2001 From: jfbu Date: Wed, 19 Oct 2016 08:49:47 +0200 Subject: [PATCH 105/297] Fix #3062: Failed to build PDF using 1.5a2 PR #3030 (3e21ef4) moved "hyperref" loading to later but forgot the `\hypersetup` at sphinx.sty#L895 for Japanese documents. --- CHANGES | 3 ++- sphinx/texinputs/sphinx.sty | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index 468906171..2a5a9f010 100644 --- a/CHANGES +++ b/CHANGES @@ -11,7 +11,8 @@ Bugs fixed ---------- * #2432: Fix unwanted * between varargs and keyword only args. Thanks to Alex Grönholm. - +* #3062: Failed to build PDF using 1.5a2 (undefined ``\hypersetup`` for + Japanese documents since PR#3030) Release 1.5 alpha2 (released Oct 17, 2016) ========================================== diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index d6e19d53d..72e4b7576 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -892,7 +892,7 @@ % adjust the margins for footer, % this works with the jsclasses only (Japanese standard document classes) \ifx\@jsc@uplatextrue\undefined\else - \hypersetup{setpagesize=false} + \PassOptionsToPackage{setpagesize=false}{hyperref} \setlength\footskip{2\baselineskip} \addtolength{\textheight}{-2\baselineskip} \fi From 6e5964ac274e2a2638ecdbb8876dfd978f4e09db Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Wed, 19 Oct 2016 19:50:23 +0900 Subject: [PATCH 106/297] Remove intern() calls --- sphinx/application.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/sphinx/application.py b/sphinx/application.py index 29ebd454a..321916c1b 100644 --- a/sphinx/application.py +++ b/sphinx/application.py @@ -45,9 +45,6 @@ from sphinx.util.console import bold, lightgray, darkgray, darkred, darkgreen, \ term_width_line from sphinx.util.i18n import find_catalog_source_files -if hasattr(sys, 'intern'): - intern = sys.intern - # List of all known core events. Maps name to arguments description. events = { 'builder-inited': '', @@ -557,7 +554,6 @@ class Sphinx(object): # event interface def _validate_event(self, event): - event = intern(event) if event not in self._events: raise ExtensionError('Unknown event name: %s' % event) From f8200bdddc4a84cabd656cf0bd9ae185fa703857 Mon Sep 17 00:00:00 2001 From: Michael Leinartas Date: Wed, 19 Oct 2016 16:20:16 -0500 Subject: [PATCH 107/297] Autodoc: Allow mocked module decorators to pass-through --- sphinx/ext/autodoc.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py index 6a1d907fd..a936fdddd 100644 --- a/sphinx/ext/autodoc.py +++ b/sphinx/ext/autodoc.py @@ -93,6 +93,9 @@ class _MockModule(object): self.__all__ = [] def __call__(self, *args, **kwargs): + if args and type(args[0]) in [FunctionType, MethodType]: + # Appears to be a decorator, pass through unchanged + return args[0] return _MockModule() def _append_submodule(self, submod): From aa06495b61d9d1821cef696c576f970a9bd4ea88 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Thu, 20 Oct 2016 11:40:47 +0900 Subject: [PATCH 108/297] Remove unneeded \phantomsection (refs: review comment of #3064) --- sphinx/texinputs/sphinxhowto.cls | 1 - sphinx/texinputs/sphinxmanual.cls | 1 - 2 files changed, 2 deletions(-) diff --git a/sphinx/texinputs/sphinxhowto.cls b/sphinx/texinputs/sphinxhowto.cls index 8bba94935..81c3cf319 100644 --- a/sphinx/texinputs/sphinxhowto.cls +++ b/sphinx/texinputs/sphinxhowto.cls @@ -91,7 +91,6 @@ % For an article document class this environment is a section, % so no page break before it. \newenvironment{sphinxthebibliography}[1]{% - \phantomsection \begin{thebibliography}{\detokenize{#1}}% \addcontentsline{toc}{section}{\bibname}}{\end{thebibliography}} diff --git a/sphinx/texinputs/sphinxmanual.cls b/sphinx/texinputs/sphinxmanual.cls index 88e9ba77a..8db15dd8d 100644 --- a/sphinx/texinputs/sphinxmanual.cls +++ b/sphinx/texinputs/sphinxmanual.cls @@ -109,7 +109,6 @@ % For a report document class this environment is a chapter. \newenvironment{sphinxthebibliography}[1]{% \if@openright\cleardoublepage\else\clearpage\fi - \phantomsection \begin{thebibliography}{\detokenize{#1}}% \addcontentsline{toc}{chapter}{\bibname}}{\end{thebibliography}} From 4c2815bc95b3804c917561902cfeb28679e6a9b9 Mon Sep 17 00:00:00 2001 From: Jakob Lykke Andersen Date: Wed, 12 Oct 2016 22:38:37 +0200 Subject: [PATCH 109/297] Make rendering of multiline signatures better in html. --- CHANGES | 1 + doc/extdev/nodes.rst | 1 + sphinx/addnodes.py | 14 +++++++++++++- sphinx/domains/cpp.py | 19 ++++++++++--------- sphinx/writers/html.py | 12 +++++++++++- sphinx/writers/latex.py | 28 +++++++++++++++++++++------- sphinx/writers/manpage.py | 6 ++++++ sphinx/writers/text.py | 6 ++++++ 8 files changed, 69 insertions(+), 18 deletions(-) diff --git a/CHANGES b/CHANGES index c4ae169ae..375d14422 100644 --- a/CHANGES +++ b/CHANGES @@ -13,6 +13,7 @@ Bugs fixed * #2432: Fix unwanted * between varargs and keyword only args. Thanks to Alex Grönholm. * #3062: Failed to build PDF using 1.5a2 (undefined ``\hypersetup`` for Japanese documents since PR#3030) +* Better rendering of multiline signatures in html. Release 1.5 alpha2 (released Oct 17, 2016) ========================================== diff --git a/doc/extdev/nodes.rst b/doc/extdev/nodes.rst index e67fa3da6..359410e25 100644 --- a/doc/extdev/nodes.rst +++ b/doc/extdev/nodes.rst @@ -10,6 +10,7 @@ Nodes for domain-specific object descriptions .. autoclass:: desc .. autoclass:: desc_signature +.. autoclass:: desc_signature_line .. autoclass:: desc_addname .. autoclass:: desc_type .. autoclass:: desc_returns diff --git a/sphinx/addnodes.py b/sphinx/addnodes.py index 124c9b6e4..9b16f865e 100644 --- a/sphinx/addnodes.py +++ b/sphinx/addnodes.py @@ -76,10 +76,22 @@ class desc_signature(nodes.Part, nodes.Inline, nodes.TextElement): """Node for object signatures. The "term" part of the custom Sphinx definition list. + + As default the signature is a single line signature, + but set ``is_multiline = True`` to describe a multi-line signature. + In that case all child nodes must be ``desc_signature_line`` nodes. """ -# nodes to use within a desc_signature +class desc_signature_line(nodes.Part, nodes.Inline, nodes.TextElement): + """Node for a line in a multi-line object signatures. + + It should only be used in a ``desc_signature`` with ``is_multiline`` set. + Set ``add_permalink = True`` for the line that should get the permalink. + """ + + +# nodes to use within a desc_signature or desc_signature_line class desc_addname(nodes.Part, nodes.Inline, nodes.TextElement): """Node for additional name parts (module name, class name).""" diff --git a/sphinx/domains/cpp.py b/sphinx/domains/cpp.py index 1f7af25d7..6c12d6aca 100644 --- a/sphinx/domains/cpp.py +++ b/sphinx/domains/cpp.py @@ -960,7 +960,7 @@ class ASTTemplateDeclarationPrefix(ASTBase): def describe_signature(self, signode, mode, env, symbol): _verify_description_mode(mode) for t in self.templates: - templateNode = addnodes.desc_signature() + templateNode = addnodes.desc_signature_line() t.describe_signature(templateNode, 'lastIsName', env, symbol) signode += templateNode @@ -2429,17 +2429,19 @@ class ASTDeclaration(ASTBase): def describe_signature(self, signode, mode, env): _verify_description_mode(mode) - # the caller of the domain added a desc_signature node - # let's pop it so we can add templates before that - parentNode = signode.parent - mainDeclNode = signode + # The caller of the domain added a desc_signature node. + # Always enable multiline: + signode['is_multiline'] = True + # Put each line in a desc_signature_line node. + mainDeclNode = addnodes.desc_signature_line() mainDeclNode.sphinx_cpp_tagname = 'declarator' - parentNode.pop() + mainDeclNode['add_permalink'] = True assert self.symbol if self.templatePrefix: - self.templatePrefix.describe_signature(parentNode, mode, env, + self.templatePrefix.describe_signature(signode, mode, env, symbol=self.symbol) + signode += mainDeclNode if self.visibility and self.visibility != "public": mainDeclNode += addnodes.desc_annotation(self.visibility + " ", self.visibility + " ") @@ -2467,7 +2469,6 @@ class ASTDeclaration(ASTBase): assert False self.declaration.describe_signature(mainDeclNode, mode, env, symbol=self.symbol) - parentNode += mainDeclNode class ASTNamespace(ASTBase): @@ -4147,7 +4148,7 @@ class CPPObject(ObjectDescription): continue if id not in self.state.document.ids: signode['ids'].append(id) - signode['first'] = (not self.names) # hmm, what is this abound? + signode['first'] = (not self.names) # hmm, what is this about? self.state.document.note_explicit_target(signode) def parse_definition(self, parser): diff --git a/sphinx/writers/html.py b/sphinx/writers/html.py index 495aaa094..ba2b758d8 100644 --- a/sphinx/writers/html.py +++ b/sphinx/writers/html.py @@ -104,9 +104,19 @@ class HTMLTranslator(BaseTranslator): self.body.append('' % node['ids'][0]) def depart_desc_signature(self, node): - self.add_permalink_ref(node, _('Permalink to this definition')) + if not node.get('is_multiline'): + self.add_permalink_ref(node, _('Permalink to this definition')) self.body.append('\n') + def visit_desc_signature_line(self, node): + pass + + def depart_desc_signature_line(self, node): + if node.get('add_permalink'): + # the permalink info is on the parent desc_signature node + self.add_permalink_ref(node.parent, _('Permalink to this definition')) + self.body.append('
                      ') + def visit_desc_addname(self, node): self.body.append(self.starttag(node, 'code', '', CLASS='descclassname')) diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 27eabb230..b667c0c9a 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -850,12 +850,7 @@ class LaTeXTranslator(nodes.NodeVisitor): def depart_desc(self, node): self.body.append('\n\\end{fulllineitems}\n\n') - def visit_desc_signature(self, node): - if node.parent['objtype'] != 'describe' and node['ids']: - hyper = self.hypertarget(node['ids'][0]) - else: - hyper = '' - self.body.append(hyper) + def _visit_signature_line(self, node): for child in node: if isinstance(child, addnodes.desc_parameterlist): self.body.append(r'\pysiglinewithargsret{') @@ -863,9 +858,28 @@ class LaTeXTranslator(nodes.NodeVisitor): else: self.body.append(r'\pysigline{') - def depart_desc_signature(self, node): + def _depart_signature_line(self, node): self.body.append('}') + def visit_desc_signature(self, node): + if node.parent['objtype'] != 'describe' and node['ids']: + hyper = self.hypertarget(node['ids'][0]) + else: + hyper = '' + self.body.append(hyper) + if not node.get('is_multiline'): + self._visit_signature_line(node) + + def depart_desc_signature(self, node): + if not node.get('is_multiline'): + self._depart_signature_line(node) + + def visit_desc_signature_line(self, node): + self._visit_signature_line(node) + + def depart_desc_signature_line(self, node): + self._depart_signature_line(node) + def visit_desc_addname(self, node): self.body.append(r'\sphinxcode{') self.literal_whitespace += 1 diff --git a/sphinx/writers/manpage.py b/sphinx/writers/manpage.py index 223ed78fd..b9c9bd646 100644 --- a/sphinx/writers/manpage.py +++ b/sphinx/writers/manpage.py @@ -138,6 +138,12 @@ class ManualPageTranslator(BaseTranslator): def depart_desc_signature(self, node): self.depart_term(node) + def visit_desc_signature_line(self, node): + pass + + def depart_desc_signature_line(self, node): + self.body.append(' ') + def visit_desc_addname(self, node): pass diff --git a/sphinx/writers/text.py b/sphinx/writers/text.py index 0c8488efc..7032208ea 100644 --- a/sphinx/writers/text.py +++ b/sphinx/writers/text.py @@ -312,6 +312,12 @@ class TextTranslator(nodes.NodeVisitor): # XXX: wrap signatures in a way that makes sense self.end_state(wrap=False, end=None) + def visit_desc_signature_line(self, node): + pass + + def depart_desc_signature_line(self, node): + self.add_text('\n') + def visit_desc_name(self, node): pass From 411ad987684f49d41eb1d0e4b4390b5b66a7fbdb Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 20 Oct 2016 13:30:24 +0100 Subject: [PATCH 110/297] Allow the '=' character in the -D option of sphinx-build.py --- sphinx/cmdline.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sphinx/cmdline.py b/sphinx/cmdline.py index baa797fff..c4832f1c2 100644 --- a/sphinx/cmdline.py +++ b/sphinx/cmdline.py @@ -204,7 +204,7 @@ def main(argv): confoverrides = {} for val in opts.define: try: - key, val = val.split('=') + key, val = val.split('=', 1) except ValueError: print('Error: -D option argument must be in the form name=value.', file=sys.stderr) From 111b9e623b8a3d1fcda60068a022f5078ea8feae Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Thu, 20 Oct 2016 21:31:08 +0900 Subject: [PATCH 111/297] Update CHANGES for PR#3068 --- CHANGES | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES b/CHANGES index ea744d89b..287750b17 100644 --- a/CHANGES +++ b/CHANGES @@ -7,6 +7,7 @@ Bugs fixed * #2936: Fix doc/Makefile that can't build man because doc/man exists * #3058: Using the same 'caption' attribute in multiple 'toctree' directives results in warning / error +* #3068: Allow the '=' character in the -D option of sphinx-build.py Release 1.4.8 (released Oct 1, 2016) ==================================== From 54dbd3882da0e51f66d26f74b9adafad3ffdde7c Mon Sep 17 00:00:00 2001 From: jfbu Date: Thu, 20 Oct 2016 15:47:38 +0200 Subject: [PATCH 112/297] add advice on use of tabulary (latex output) --- doc/markup/misc.rst | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/doc/markup/misc.rst b/doc/markup/misc.rst index 1f9f446f1..bdfc3346c 100644 --- a/doc/markup/misc.rst +++ b/doc/markup/misc.rst @@ -238,10 +238,19 @@ following directive exists: By default, Sphinx uses a table layout with ``L`` for every column. + .. hint:: + + For columns which are known to be much narrower than the others it is + recommended to use the lowercase specifiers. For more information, check + the ``tabulary`` manual. + .. versionadded:: 0.3 .. warning:: + Tables with more than 30 rows are rendered using ``longtable``, not + ``tabulary``, in order to allow pagebreaks. + Tables that contain list-like elements such as object descriptions, blockquotes or any kind of lists cannot be set out of the box with ``tabulary``. They are therefore set with the standard LaTeX ``tabular`` @@ -253,8 +262,6 @@ following directive exists: literal block are always set with ``tabular``. Also, the verbatim environment used for literal blocks only works in ``p{width}`` columns, which means that by default, Sphinx generates such column specs for such tables. - Use the :rst:dir:`tabularcolumns` directive to get finer control over such - tables. .. rubric:: Footnotes From 7943da940832147f60c6d59c58d693464e77f513 Mon Sep 17 00:00:00 2001 From: Michael Leinartas Date: Fri, 21 Oct 2016 09:53:25 -0500 Subject: [PATCH 113/297] Add tests for mocked modules --- tests/root/autodoc_missing_imports.py | 9 +++++++++ tests/test_autodoc.py | 11 +++++++++++ 2 files changed, 20 insertions(+) diff --git a/tests/root/autodoc_missing_imports.py b/tests/root/autodoc_missing_imports.py index 7a7173452..0901ce8e2 100644 --- a/tests/root/autodoc_missing_imports.py +++ b/tests/root/autodoc_missing_imports.py @@ -5,5 +5,14 @@ import missing_package1.missing_module1 from missing_package2 import missing_module2 from missing_package3.missing_module3 import missing_name +@missing_name +def decoratedFunction(): + """decoratedFunction docstring""" + return None + class TestAutodoc(object): """TestAutodoc docstring.""" + @missing_name + def decoratedMethod(self): + """TestAutodoc::decoratedMethod docstring""" + return None diff --git a/tests/test_autodoc.py b/tests/test_autodoc.py index d290e050b..052c5f573 100644 --- a/tests/test_autodoc.py +++ b/tests/test_autodoc.py @@ -832,6 +832,17 @@ def test_generate(): assert_result_contains(' .. py:method:: CustomDataDescriptor.meth()', 'module', 'test_autodoc') + # test mocked module imports + options.members = ['TestAutodoc'] + options.undoc_members = False + assert_result_contains('.. py:class:: TestAutodoc', + 'module', 'autodoc_missing_imports') + assert_result_contains(' .. py:method:: TestAutodoc.decoratedMethod()', + 'module', 'autodoc_missing_imports') + options.members = ['decoratedFunction'] + assert_result_contains('.. py:function:: decoratedFunction()', + 'module', 'autodoc_missing_imports') + # --- generate fodder ------------ __all__ = ['Class'] From 43cab26ecee74aac666d5ba7a37da474f3982c7c Mon Sep 17 00:00:00 2001 From: Jakub Wilk Date: Sat, 22 Oct 2016 18:12:34 +0200 Subject: [PATCH 114/297] Fix typos --- sphinx/make_mode.py | 2 +- sphinx/templates/quickstart/Makefile_t | 2 +- sphinx/templates/quickstart/make.bat_t | 2 +- tests/root/Makefile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sphinx/make_mode.py b/sphinx/make_mode.py index 3bc8fa2a0..7ed0c83f2 100644 --- a/sphinx/make_mode.py +++ b/sphinx/make_mode.py @@ -34,7 +34,7 @@ BUILDERS = [ ("", "singlehtml", "to make a single large HTML file"), ("", "pickle", "to make pickle files"), ("", "json", "to make JSON files"), - ("", "htmlhelp", "to make HTML files and a HTML help project"), + ("", "htmlhelp", "to make HTML files and an HTML help project"), ("", "qthelp", "to make HTML files and a qthelp project"), ("", "devhelp", "to make HTML files and a Devhelp project"), ("", "epub", "to make an epub"), diff --git a/sphinx/templates/quickstart/Makefile_t b/sphinx/templates/quickstart/Makefile_t index b61c1df7e..5505f23f5 100644 --- a/sphinx/templates/quickstart/Makefile_t +++ b/sphinx/templates/quickstart/Makefile_t @@ -22,7 +22,7 @@ help: @echo " singlehtml to make a single large HTML file" @echo " pickle to make pickle files" @echo " json to make JSON files" - @echo " htmlhelp to make HTML files and a HTML help project" + @echo " htmlhelp to make HTML files and an HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " applehelp to make an Apple Help Book" @echo " devhelp to make HTML files and a Devhelp project" diff --git a/sphinx/templates/quickstart/make.bat_t b/sphinx/templates/quickstart/make.bat_t index 88a8fa9d9..dd9379d25 100644 --- a/sphinx/templates/quickstart/make.bat_t +++ b/sphinx/templates/quickstart/make.bat_t @@ -23,7 +23,7 @@ if "%1" == "help" ( echo. singlehtml to make a single large HTML file echo. pickle to make pickle files echo. json to make JSON files - echo. htmlhelp to make HTML files and a HTML help project + echo. htmlhelp to make HTML files and an HTML help project echo. qthelp to make HTML files and a qthelp project echo. devhelp to make HTML files and a Devhelp project echo. epub to make an epub diff --git a/tests/root/Makefile b/tests/root/Makefile index 7954bc7cb..7d5162fe7 100644 --- a/tests/root/Makefile +++ b/tests/root/Makefile @@ -17,7 +17,7 @@ help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " pickle to make pickle files (usable by e.g. sphinx-web)" - @echo " htmlhelp to make HTML files and a HTML help project" + @echo " htmlhelp to make HTML files and an HTML help project" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview over all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" From 720e155b8308a2c94651595dbd896d74cdfc9867 Mon Sep 17 00:00:00 2001 From: jfbu Date: Sun, 23 Oct 2016 10:45:23 +0200 Subject: [PATCH 115/297] Add a comment to Makefile template for make-mode, update doc/Makefile --- doc/Makefile | 8 +++----- sphinx/templates/quickstart/Makefile.new_t | 4 ++-- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/doc/Makefile b/doc/Makefile index dcd67186d..d0e4e297b 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -1,4 +1,3 @@ -.PHONY: man # Makefile for Sphinx documentation # @@ -9,14 +8,13 @@ SPHINXPROJ = sphinx SOURCEDIR = . BUILDDIR = _build -# Has to be explicit, otherwise we don't get "make" without targets right. +# Put it first so that "make" without argument is like "make help". help: @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) -man: - @$(SPHINXBUILD) -M man "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) +.PHONY: help Makefile # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). -%: +%: Makefile @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/sphinx/templates/quickstart/Makefile.new_t b/sphinx/templates/quickstart/Makefile.new_t index 3b693e144..c7cd62dda 100644 --- a/sphinx/templates/quickstart/Makefile.new_t +++ b/sphinx/templates/quickstart/Makefile.new_t @@ -8,8 +8,9 @@ SPHINXPROJ = {{ project_fn }} SOURCEDIR = {{ rsrcdir }} BUILDDIR = {{ rbuilddir }} +# Put it first so that "make" without argument is like "make help". help: - @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) .PHONY: help Makefile @@ -17,4 +18,3 @@ help: # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) - From 637cb141f9afe89e4f3a710d27739ca9cccc403f Mon Sep 17 00:00:00 2001 From: jfbu Date: Sun, 23 Oct 2016 10:46:10 +0200 Subject: [PATCH 116/297] Update CHANGES for PR#3056 --- CHANGES | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES b/CHANGES index c4ae169ae..f61a5a6eb 100644 --- a/CHANGES +++ b/CHANGES @@ -13,6 +13,7 @@ Bugs fixed * #2432: Fix unwanted * between varargs and keyword only args. Thanks to Alex Grönholm. * #3062: Failed to build PDF using 1.5a2 (undefined ``\hypersetup`` for Japanese documents since PR#3030) +* #3056: Fix make-mode Makefile template (ref #2936) Release 1.5 alpha2 (released Oct 17, 2016) ========================================== From ef73ecefb22aa43a280a728c77eae99925b92818 Mon Sep 17 00:00:00 2001 From: jfbu Date: Sun, 23 Oct 2016 10:53:14 +0200 Subject: [PATCH 117/297] Amend Update CHANGES for PR#3056 (it was already in 1.5a2) --- CHANGES | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index f61a5a6eb..51c9a02eb 100644 --- a/CHANGES +++ b/CHANGES @@ -13,7 +13,6 @@ Bugs fixed * #2432: Fix unwanted * between varargs and keyword only args. Thanks to Alex Grönholm. * #3062: Failed to build PDF using 1.5a2 (undefined ``\hypersetup`` for Japanese documents since PR#3030) -* #3056: Fix make-mode Makefile template (ref #2936) Release 1.5 alpha2 (released Oct 17, 2016) ========================================== @@ -72,6 +71,7 @@ Bugs fixed * #3047: spacing before footnote in pdf output is not coherent and allows breaks * #3045: HTML search index creator should ignore "raw" content if now html * #3039: English stemmer returns wrong word if the word is capitalized +* Fix make-mode Makefile template (ref #3056, #2936) Testing -------- From 8aa66fda809112baf7f2ebac2fb49d6d587f9201 Mon Sep 17 00:00:00 2001 From: jfbu Date: Sun, 23 Oct 2016 11:25:05 +0200 Subject: [PATCH 118/297] Let "make help" provide better info for latexpdf target --- sphinx/make_mode.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sphinx/make_mode.py b/sphinx/make_mode.py index 3bc8fa2a0..2289ac79c 100644 --- a/sphinx/make_mode.py +++ b/sphinx/make_mode.py @@ -39,7 +39,7 @@ BUILDERS = [ ("", "devhelp", "to make HTML files and a Devhelp project"), ("", "epub", "to make an epub"), ("", "latex", "to make LaTeX files, you can set PAPER=a4 or PAPER=letter"), - ("posix", "latexpdf", "to make LaTeX files and run them through pdflatex"), + ("posix", "latexpdf", "to make LaTeX and PDF files (default pdflatex)"), ("posix", "latexpdfja", "to make LaTeX files and run them through platex/dvipdfmx"), ("", "text", "to make text files"), ("", "man", "to make manual pages"), From d0dbd60d94d825d4c92c3e42e2ea0cf49b5b0f70 Mon Sep 17 00:00:00 2001 From: jfbu Date: Sun, 23 Oct 2016 15:08:51 +0200 Subject: [PATCH 119/297] Addition and alphabetical order fix in AUTHORS --- AUTHORS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/AUTHORS b/AUTHORS index 864ec2788..8aceb6937 100644 --- a/AUTHORS +++ b/AUTHORS @@ -20,6 +20,7 @@ Other contributors, listed alphabetically, are: * Jakob Lykke Andersen -- Rewritten C++ domain * Henrique Bastos -- SVG support for graphviz extension * Daniel Bültmann -- todo extension +* Jean-François Burnol -- contributions to LaTeX support * Etienne Desautels -- apidoc module * Michael Droettboom -- inheritance_diagram extension * Charles Duffy -- original graphviz extension @@ -44,6 +45,7 @@ Other contributors, listed alphabetically, are: * Glenn Matthews -- python domain signature improvements * Roland Meister -- epub builder * Ezio Melotti -- collapsible sidebar JavaScript +* Bruce Mitchener -- Minor epub improvement * Daniel Neuhäuser -- JavaScript domain, Python 3 support (GSOC) * Christopher Perkins -- autosummary integration * Benjamin Peterson -- unittests @@ -65,7 +67,6 @@ Other contributors, listed alphabetically, are: * Michael Wilson -- Intersphinx HTTP basic auth support * Joel Wurtz -- cellspanning support in LaTeX * Hong Xu -- svg support in imgmath extension and various bug fixes -* Bruce Mitchener -- Minor epub improvement Many thanks for all contributions! From 41609f15b8cd9f1449787b51921135922d272885 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20B?= Date: Mon, 24 Oct 2016 15:58:20 +0200 Subject: [PATCH 120/297] Fix #3086: revert 1.5a2 change to latex bibliographic entries key widths (#3087) --- sphinx/texinputs/sphinx.sty | 2 +- sphinx/texinputs/sphinxhowto.cls | 2 +- sphinx/texinputs/sphinxmanual.cls | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index 72e4b7576..86a30e700 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -907,7 +907,7 @@ \renewenvironment{sphinxthebibliography}[1] {\cleardoublepage\phantomsection - \begin{thebibliography}{\detokenize{#1}}} + \begin{thebibliography}{1}} {\end{thebibliography}} \fi diff --git a/sphinx/texinputs/sphinxhowto.cls b/sphinx/texinputs/sphinxhowto.cls index 81c3cf319..6980f10a1 100644 --- a/sphinx/texinputs/sphinxhowto.cls +++ b/sphinx/texinputs/sphinxhowto.cls @@ -91,7 +91,7 @@ % For an article document class this environment is a section, % so no page break before it. \newenvironment{sphinxthebibliography}[1]{% - \begin{thebibliography}{\detokenize{#1}}% + \begin{thebibliography}{1}% \addcontentsline{toc}{section}{\bibname}}{\end{thebibliography}} diff --git a/sphinx/texinputs/sphinxmanual.cls b/sphinx/texinputs/sphinxmanual.cls index 8db15dd8d..2c313ed19 100644 --- a/sphinx/texinputs/sphinxmanual.cls +++ b/sphinx/texinputs/sphinxmanual.cls @@ -109,7 +109,7 @@ % For a report document class this environment is a chapter. \newenvironment{sphinxthebibliography}[1]{% \if@openright\cleardoublepage\else\clearpage\fi - \begin{thebibliography}{\detokenize{#1}}% + \begin{thebibliography}{1}% \addcontentsline{toc}{chapter}{\bibname}}{\end{thebibliography}} % Same for the indices. From 1ced210d74ee8e2e4b533a2bee26de5f1d4e78b1 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Wed, 19 Oct 2016 12:21:32 +0900 Subject: [PATCH 121/297] latex: Introduce ADDITIONAL_SETTINGS to support default settings for each LaTeX engine --- sphinx/writers/latex.py | 121 +++++++++++++++++++++------------------- 1 file changed, 63 insertions(+), 58 deletions(-) diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index b667c0c9a..d01d9bcab 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -45,6 +45,67 @@ DEFAULT_TEMPLATE = 'latex/content.tex_t' URI_SCHEMES = ('mailto:', 'http:', 'https:', 'ftp:') SECNUMDEPTH = 3 +DEFAULT_SETTINGS = { + 'papersize': 'letterpaper', + 'pointsize': '10pt', + 'pxunit': '49336sp', + 'classoptions': '', + 'extraclassoptions': '', + 'passoptionstopackages': '', + 'geometry': '\\usepackage[margin=1in,marginparwidth=0.5in]' + '{geometry}', + 'inputenc': '', + 'utf8extra': ('\\ifdefined\\DeclareUnicodeCharacter\n' + ' \\DeclareUnicodeCharacter{00A0}{\\nobreakspace}\n' + '\\fi'), + 'cmappkg': '\\usepackage{cmap}', + 'fontenc': '\\usepackage[T1]{fontenc}', + 'amsmath': '\\usepackage{amsmath,amssymb,amstext}', + 'babel': '\\usepackage{babel}', + 'fontpkg': '\\usepackage{times}', + 'fncychap': '\\usepackage[Bjarne]{fncychap}', + 'longtable': '\\usepackage{longtable}', + 'hyperref': ('% Include hyperref last.\n' + '\\usepackage[colorlinks,breaklinks,%\n' + ' ' + 'linkcolor=InnerLinkColor,filecolor=OuterLinkColor,%\n' + ' ' + 'menucolor=OuterLinkColor,urlcolor=OuterLinkColor,%\n' + ' ' + 'citecolor=InnerLinkColor]{hyperref}\n' + '% Fix anchor placement for figures with captions.\n' + '\\usepackage{hypcap}% it must be loaded after hyperref.\n' + '% Set up styles of URL: it should be placed after hyperref.\n' + '\\urlstyle{same}'), + 'usepackages': '', + 'numfig_format': '', + 'contentsname': '', + 'preamble': '', + 'title': '', + 'date': '', + 'release': '', + 'author': '', + 'logo': '', + 'releasename': 'Release', + 'makeindex': '\\makeindex', + 'shorthandoff': '', + 'maketitle': '\\maketitle', + 'tableofcontents': '\\sphinxtableofcontents', + 'postamble': '', + 'printindex': '\\printindex', + 'transition': '\n\n\\bigskip\\hrule{}\\bigskip\n\n', + 'figure_align': 'htbp', + 'tocdepth': '', + 'secnumdepth': '', + 'pageautorefname': '', +} + +ADDITIONAL_SETTINGS = { + 'pdflatex': { + 'inputenc': '\\usepackage[utf8]{inputenc}', + }, +} + class collected_footnote(nodes.footnote): """Footnotes that are collected are assigned this class.""" @@ -258,61 +319,6 @@ class LaTeXTranslator(nodes.NodeVisitor): ignore_missing_images = False - default_elements = { - 'papersize': 'letterpaper', - 'pointsize': '10pt', - 'pxunit': '49336sp', - 'classoptions': '', - 'extraclassoptions': '', - 'passoptionstopackages': '', - 'geometry': '\\usepackage[margin=1in,marginparwidth=0.5in]' - '{geometry}', - 'inputenc': '', - 'utf8extra': ('\\ifdefined\\DeclareUnicodeCharacter\n' - ' \\DeclareUnicodeCharacter{00A0}{\\nobreakspace}\n' - '\\fi'), - 'cmappkg': '\\usepackage{cmap}', - 'fontenc': '\\usepackage[T1]{fontenc}', - 'amsmath': '\\usepackage{amsmath,amssymb,amstext}', - 'babel': '\\usepackage{babel}', - 'fontpkg': '\\usepackage{times}', - 'fncychap': '\\usepackage[Bjarne]{fncychap}', - 'longtable': '\\usepackage{longtable}', - 'hyperref': ('% Include hyperref last.\n' - '\\usepackage[colorlinks,breaklinks,%\n' - ' ' - 'linkcolor=InnerLinkColor,filecolor=OuterLinkColor,%\n' - ' ' - 'menucolor=OuterLinkColor,urlcolor=OuterLinkColor,%\n' - ' ' - 'citecolor=InnerLinkColor]{hyperref}\n' - '% Fix anchor placement for figures with captions.\n' - '\\usepackage{hypcap}% it must be loaded after hyperref.\n' - '% Set up styles of URL: it should be placed after hyperref.\n' - '\\urlstyle{same}'), - 'usepackages': '', - 'numfig_format': '', - 'contentsname': '', - 'preamble': '', - 'title': '', - 'date': '', - 'release': '', - 'author': '', - 'logo': '', - 'releasename': 'Release', - 'makeindex': '\\makeindex', - 'shorthandoff': '', - 'maketitle': '\\maketitle', - 'tableofcontents': '\\sphinxtableofcontents', - 'postamble': '', - 'printindex': '\\printindex', - 'transition': '\n\n\\bigskip\\hrule{}\\bigskip\n\n', - 'figure_align': 'htbp', - 'tocdepth': '', - 'secnumdepth': '', - 'pageautorefname': '', - } - # sphinx specific document classes docclasses = ('howto', 'manual') @@ -350,7 +356,8 @@ class LaTeXTranslator(nodes.NodeVisitor): self.top_sectionlevel = 1 # sort out some elements - self.elements = self.default_elements.copy() + self.elements = DEFAULT_SETTINGS.copy() + self.elements.update(ADDITIONAL_SETTINGS.get(builder.config.latex_engine, {})) self.elements.update({ 'wrapperclass': self.format_docclass(document.settings.docclass), # if empty, the title is set to the first section title @@ -371,8 +378,6 @@ class LaTeXTranslator(nodes.NodeVisitor): else: docclass = builder.config.latex_docclass.get('manual', 'report') self.elements['docclass'] = docclass - if builder.config.latex_engine == 'pdflatex': - self.elements['inputenc'] = '\\usepackage[utf8]{inputenc}' if builder.config.today: self.elements['date'] = builder.config.today else: From d322e443a84fa2c1a720002d70c7ab65a3b3a008 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Wed, 19 Oct 2016 21:28:02 +0900 Subject: [PATCH 122/297] Travis CI: Install lmodern to build xetex documents --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 9623c65f1..5f035b73b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,6 +25,7 @@ addons: - texlive-fonts-recommended - texlive-fonts-extra - texlive-xetex + - lmodern install: - pip install -U pip setuptools - pip install docutils==$DOCUTILS From a79ea0fa95a731a856eb463b6d0e2321923a5099 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Wed, 19 Oct 2016 20:16:47 +0900 Subject: [PATCH 123/297] A better default settings for XeLaTeX --- sphinx/writers/latex.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index d01d9bcab..4693a71e4 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -102,7 +102,13 @@ DEFAULT_SETTINGS = { ADDITIONAL_SETTINGS = { 'pdflatex': { - 'inputenc': '\\usepackage[utf8]{inputenc}', + 'inputenc': '\\usepackage[utf8]{inputenc}', + }, + 'xelatex': { + 'babel': '', # disable babel + 'inputenc': '\\usepackage{polyglossia}', + 'fontenc': '\\usepackage{fontspec}', + 'fontpkg': '', }, } From 0ad54208d391552c3e0ee59990d4622cb7f3e90e Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Tue, 25 Oct 2016 14:25:18 +0900 Subject: [PATCH 124/297] Revirt aa06495b61d9d1821cef696c576f970a9bd4ea88: Remove unneeded \phantomsection (refs: review comment of #3064) --- sphinx/texinputs/sphinxhowto.cls | 4 ++++ sphinx/texinputs/sphinxmanual.cls | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/sphinx/texinputs/sphinxhowto.cls b/sphinx/texinputs/sphinxhowto.cls index 6980f10a1..80c563a92 100644 --- a/sphinx/texinputs/sphinxhowto.cls +++ b/sphinx/texinputs/sphinxhowto.cls @@ -90,7 +90,11 @@ % Contents. % For an article document class this environment is a section, % so no page break before it. +% +% Note: \phantomsection is required for TeXLive 2009 +% http://tex.stackexchange.com/questions/44088/when-do-i-need-to-invoke-phantomsection#comment166081_44091 \newenvironment{sphinxthebibliography}[1]{% + \phantomsection \begin{thebibliography}{1}% \addcontentsline{toc}{section}{\bibname}}{\end{thebibliography}} diff --git a/sphinx/texinputs/sphinxmanual.cls b/sphinx/texinputs/sphinxmanual.cls index 2c313ed19..3a200a060 100644 --- a/sphinx/texinputs/sphinxmanual.cls +++ b/sphinx/texinputs/sphinxmanual.cls @@ -107,8 +107,12 @@ % Fix the bibliography environment to add an entry to the Table of % Contents. % For a report document class this environment is a chapter. +% +% Note: \phantomsection is required for TeXLive 2009 +% http://tex.stackexchange.com/questions/44088/when-do-i-need-to-invoke-phantomsection#comment166081_44091 \newenvironment{sphinxthebibliography}[1]{% \if@openright\cleardoublepage\else\clearpage\fi + \phantomsection \begin{thebibliography}{1}% \addcontentsline{toc}{chapter}{\bibname}}{\end{thebibliography}} From 68de92042f44df5b455cf4759272d2aae8b6ecc5 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Wed, 19 Oct 2016 23:36:47 +0900 Subject: [PATCH 125/297] latex: Use \refname if \bibname not defined in sphinxhowto.cls --- sphinx/texinputs/sphinxhowto.cls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sphinx/texinputs/sphinxhowto.cls b/sphinx/texinputs/sphinxhowto.cls index 6980f10a1..42c44d29e 100644 --- a/sphinx/texinputs/sphinxhowto.cls +++ b/sphinx/texinputs/sphinxhowto.cls @@ -92,7 +92,7 @@ % so no page break before it. \newenvironment{sphinxthebibliography}[1]{% \begin{thebibliography}{1}% - \addcontentsline{toc}{section}{\bibname}}{\end{thebibliography}} + \addcontentsline{toc}{section}{\ifdefined\refname\refname\else\ifdefined\bibname\bibname\fi\fi}}{\end{thebibliography}} % Same for the indices. From 5af1713d604f54b1aaf9e35f9c0fb4433b0f6e7a Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Thu, 20 Oct 2016 00:35:20 +0900 Subject: [PATCH 126/297] latex: Disable babel if polyglossia loaded --- sphinx/templates/latex/content.tex_t | 2 +- sphinx/writers/latex.py | 49 ++++++++++++++++------------ 2 files changed, 29 insertions(+), 22 deletions(-) diff --git a/sphinx/templates/latex/content.tex_t b/sphinx/templates/latex/content.tex_t index 1e0028503..97b71a704 100644 --- a/sphinx/templates/latex/content.tex_t +++ b/sphinx/templates/latex/content.tex_t @@ -12,7 +12,7 @@ <%= cmappkg %> <%= fontenc %> <%= amsmath %> -<%= babel %> +<%= multilingual %> <%= fontpkg %> <%= fncychap %> <%= longtable %> diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 4693a71e4..4ec08cea6 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -61,7 +61,9 @@ DEFAULT_SETTINGS = { 'cmappkg': '\\usepackage{cmap}', 'fontenc': '\\usepackage[T1]{fontenc}', 'amsmath': '\\usepackage{amsmath,amssymb,amstext}', + 'multilingual': '', 'babel': '\\usepackage{babel}', + 'polyglossia': '', 'fontpkg': '\\usepackage{times}', 'fncychap': '\\usepackage[Bjarne]{fncychap}', 'longtable': '\\usepackage{longtable}', @@ -105,8 +107,7 @@ ADDITIONAL_SETTINGS = { 'inputenc': '\\usepackage[utf8]{inputenc}', }, 'xelatex': { - 'babel': '', # disable babel - 'inputenc': '\\usepackage{polyglossia}', + 'polyglossia': '\\usepackage{polyglossia}', 'fontenc': '\\usepackage{fontspec}', 'fontpkg': '', }, @@ -393,28 +394,34 @@ class LaTeXTranslator(nodes.NodeVisitor): # no need for \\noindent here, used in flushright self.elements['logo'] = '\\sphinxincludegraphics{%s}\\par' % \ path.basename(builder.config.latex_logo) - # setup babel + # setup multilingual package self.babel = ExtBabel(builder.config.language) - self.elements['classoptions'] += ',' + self.babel.get_language() - if builder.config.language: - if not self.babel.is_supported_language(): - self.builder.warn('no Babel option known for language %r' % - builder.config.language) - self.elements['shorthandoff'] = self.babel.get_shorthandoff() - self.elements['fncychap'] = '\\usepackage[Sonny]{fncychap}' + if self.elements['polyglossia']: + self.elements['babel'] = '' # disable babel forcely + self.elements['multilingual'] = self.elements['polyglossia'] + elif self.elements['babel']: + self.elements['multilingual'] = self.elements['babel'] + self.elements['classoptions'] += ',' + self.babel.get_language() + if builder.config.language: + if not self.babel.is_supported_language(): + self.builder.warn('no Babel option known for language %r' % + builder.config.language) + self.elements['shorthandoff'] = self.babel.get_shorthandoff() + self.elements['fncychap'] = '\\usepackage[Sonny]{fncychap}' - # Times fonts don't work with Cyrillic languages - if self.babel.uses_cyrillic(): - self.elements['fontpkg'] = '' + # Times fonts don't work with Cyrillic languages + if self.babel.uses_cyrillic(): + self.elements['fontpkg'] = '' - # pTeX (Japanese TeX) for support - if builder.config.language == 'ja': - # use dvipdfmx as default class option in Japanese - self.elements['classoptions'] = ',dvipdfmx' - # disable babel which has not publishing quality in Japanese - self.elements['babel'] = '' - # disable fncychap in Japanese documents - self.elements['fncychap'] = '' + # pTeX (Japanese TeX) for support + if builder.config.language == 'ja': + # use dvipdfmx as default class option in Japanese + self.elements['classoptions'] = ',dvipdfmx' + # disable babel which has not publishing quality in Japanese + self.elements['babel'] = '' + self.elements['multilingual'] = '' + # disable fncychap in Japanese documents + self.elements['fncychap'] = '' if getattr(builder, 'usepackages', None): def declare_package(packagename, options=None): if options: From 8122f0641548ee476420d53c136d2d267567361d Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Thu, 20 Oct 2016 02:24:58 +0900 Subject: [PATCH 127/297] Update CHANGES --- CHANGES | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES b/CHANGES index d599988cf..66d346d6f 100644 --- a/CHANGES +++ b/CHANGES @@ -7,6 +7,8 @@ Incompatible changes Features added -------------- +* #2513: A better default settings for XeLaTeX + Bugs fixed ---------- From 24dd7852f47a44fe5f2d554841873105bef82064 Mon Sep 17 00:00:00 2001 From: jfbu Date: Wed, 19 Oct 2016 23:56:55 +0200 Subject: [PATCH 128/297] Fix #3019: (xetex) let Unicode "no-break space" act like LaTeX ``~`` --- sphinx/writers/latex.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 4ec08cea6..09de2349c 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -56,7 +56,7 @@ DEFAULT_SETTINGS = { '{geometry}', 'inputenc': '', 'utf8extra': ('\\ifdefined\\DeclareUnicodeCharacter\n' - ' \\DeclareUnicodeCharacter{00A0}{\\nobreakspace}\n' + ' \\DeclareUnicodeCharacter{00A0}{\\leavevmode\\nobreak\\ }\n' '\\fi'), 'cmappkg': '\\usepackage{cmap}', 'fontenc': '\\usepackage[T1]{fontenc}', @@ -107,6 +107,8 @@ ADDITIONAL_SETTINGS = { 'inputenc': '\\usepackage[utf8]{inputenc}', }, 'xelatex': { + 'utf8extra': ('\\catcode`^^^^00a0\\active\\protected\\def^^^^00a0' + '{\\leavevmode\\nobreak\\ }'), 'polyglossia': '\\usepackage{polyglossia}', 'fontenc': '\\usepackage{fontspec}', 'fontpkg': '', From 69d3480ef768715d1313da569c388abe7805c327 Mon Sep 17 00:00:00 2001 From: jfbu Date: Tue, 25 Oct 2016 22:30:40 +0200 Subject: [PATCH 129/297] Fix again hyperref duplicate destination warnings The method at 4e88bfe worked only for page 1. This moves to ``\maketitle`` the whole control. --- sphinx/texinputs/sphinxmanual.cls | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/sphinx/texinputs/sphinxmanual.cls b/sphinx/texinputs/sphinxmanual.cls index 3a200a060..a56a2bf20 100644 --- a/sphinx/texinputs/sphinxmanual.cls +++ b/sphinx/texinputs/sphinxmanual.cls @@ -40,8 +40,10 @@ % ``Bjarne'' style a bit better. % \renewcommand{\maketitle}{% + \let\spx@tempa\relax + \ifHy@pageanchor\def\spx@tempa{\Hy@pageanchortrue}\fi + \hypersetup{pageanchor=false}% avoid duplicate destination warnings \begin{titlepage}% - \hypersetup{pageanchor=false}% avoid duplicate destination page.1 warning \let\footnotesize\small \let\footnoterule\relax \noindent\rule{\textwidth}{1pt}\ifsphinxpdfoutput\newline\null\fi\par @@ -81,11 +83,11 @@ \setcounter{footnote}{0}% \let\thanks\relax\let\maketitle\relax %\gdef\@thanks{}\gdef\@author{}\gdef\@title{} + \if@openright\cleardoublepage\else\clearpage\fi + \spx@tempa } \newcommand{\sphinxtableofcontents}{% - % before resetting page counter, let's do the right thing. - \if@openright\cleardoublepage\else\clearpage\fi \pagenumbering{roman}% \pagestyle{plain}% \begingroup From 47bae165134e0f517c624e948b3e807119795530 Mon Sep 17 00:00:00 2001 From: Philip Molloy Date: Tue, 25 Oct 2016 17:03:56 -0400 Subject: [PATCH 130/297] Fix indentation in conf.py --- doc/_static/conf.py.txt | 24 ++++++++++++------------ sphinx/templates/quickstart/conf.py_t | 24 ++++++++++++------------ 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/doc/_static/conf.py.txt b/doc/_static/conf.py.txt index 73714879f..ad90366b2 100644 --- a/doc/_static/conf.py.txt +++ b/doc/_static/conf.py.txt @@ -238,21 +238,21 @@ htmlhelp_basename = 'testdoc' # -- Options for LaTeX output --------------------------------------------- latex_elements = { - # The paper size ('letterpaper' or 'a4paper'). - # - # 'papersize': 'letterpaper', + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', - # The font size ('10pt', '11pt' or '12pt'). - # - # 'pointsize': '10pt', + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', - # Additional stuff for the LaTeX preamble. - # - # 'preamble': '', + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', - # Latex figure (float) alignment - # - # 'figure_align': 'htbp', + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', } # Grouping the document tree into LaTeX files. List of tuples diff --git a/sphinx/templates/quickstart/conf.py_t b/sphinx/templates/quickstart/conf.py_t index 4b7b34315..60a8f5cdc 100644 --- a/sphinx/templates/quickstart/conf.py_t +++ b/sphinx/templates/quickstart/conf.py_t @@ -117,21 +117,21 @@ htmlhelp_basename = '{{ project_fn }}doc' # -- Options for LaTeX output --------------------------------------------- latex_elements = { - # The paper size ('letterpaper' or 'a4paper'). - # - # 'papersize': 'letterpaper', + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', - # The font size ('10pt', '11pt' or '12pt'). - # - # 'pointsize': '10pt', + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', - # Additional stuff for the LaTeX preamble. - # - # 'preamble': '', + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', - # Latex figure (float) alignment - # - # 'figure_align': 'htbp', + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', } # Grouping the document tree into LaTeX files. List of tuples From a2672ce11b2c7a4896e2bf725443bb28eb5f8c7f Mon Sep 17 00:00:00 2001 From: jfbu Date: Wed, 26 Oct 2016 10:10:13 +0200 Subject: [PATCH 131/297] streamline latex comments in sphinx.sty --- sphinx/texinputs/sphinx.sty | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index 86a30e700..ed857e9ce 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -13,8 +13,8 @@ \ProcessOptions\relax % this is the \ltx@ifundefined of ltxcmds.sty, which is loaded by -% hyperref.sty, but we need it before, and initial ltxcmds.sty -% as in TL2009/Debian had wrong definition. +% hyperref.sty, but we need it before, and the first release of +% ltxcmds.sty as in TL2009/Debian has wrong definition. \newcommand{\spx@ifundefined}[1]{% \ifcsname #1\endcsname \expandafter\ifx\csname #1\endcsname\relax @@ -77,12 +77,7 @@ \definecolor{VerbatimColor}{rgb}{1,1,1} \definecolor{VerbatimBorderColor}{rgb}{0,0,0} -% Uncomment these two lines to ignore the paper size and make the page -% size more like a typical published manual. -%\renewcommand{\paperheight}{9in} -%\renewcommand{\paperwidth}{8.5in} % typical squarish manual -%\renewcommand{\paperwidth}{7in} % O'Reilly ``Programmming Python'' - +% FIXME: the reasons might be obsolete (better color drivers now?) % use pdfoutput for pTeX and dvipdfmx % when pTeX (\kanjiskip is defined), set pdfoutput to evade \include{pdfcolor} \ifx\kanjiskip\undefined\else @@ -171,9 +166,13 @@ % Support large numbered footnotes in minipage (cf. admonitions) \def\thempfootnote{\arabic{mpfootnote}} -% Preparations for sphinxVerbatim environment, which is a wrapper of fancyvrb -% Verbatim with framing allowing pagebreaks, with border and background colors -% and possibly also a top caption, non separable by pagebreak. +% Code-blocks + +% Based on use of "fancyvrb.sty"'s Verbatim. +% - with framing allowing page breaks ("framed.sty") +% - with breaking of long lines (exploits Pygments mark-up), +% - with possibly of a top caption, non-separable by pagebreak. +% - and usable inside tables or footnotes ("footnotehyper-sphinx"). % For maintaining compatibility with Sphinx < 1.5, we define and use these % when (unmodified) Verbatim will be needed. But Sphinx >= 1.5 does not modify @@ -261,7 +260,7 @@ % For linebreaks inside Verbatim environment from package fancyvrb. \newbox\sphinxcontinuationbox \newbox\sphinxvisiblespacebox -% These are user customizable e.g. from latex_elements's preamble key. +% Customize this via 'preamble' key if desired. % Use of \textvisiblespace for compatibility with XeTeX/LuaTeX/fontspec. \newcommand*\sphinxvisiblespace {\textcolor{red}{\textvisiblespace}} \newcommand*\sphinxcontinuationsymbol {\textcolor{red}{\llap{\tiny$\m@th\hookrightarrow$}}} @@ -432,6 +431,10 @@ \begin{sphinxVerbatim}} {\end{sphinxVerbatim}} +% Topic boxes + +% Again based on use of "framed.sty", this allows breakable framed boxes. + % define macro to frame contents and add shadow on right and bottom % use public names for customizable lengths \newlength\sphinxshadowsep \setlength\sphinxshadowsep {5pt} @@ -789,7 +792,6 @@ % Tell TeX about pathological hyphenation cases: \hyphenation{Base-HTTP-Re-quest-Hand-ler} - % The following is stuff copied from docutils' latex writer. % \newcommand{\optionlistlabel}[1]{\normalfont\bfseries #1 \hfill}% \bf deprecated @@ -891,6 +893,7 @@ % adjust the margins for footer, % this works with the jsclasses only (Japanese standard document classes) +% FIXME: rather, pass options to "geometry". \ifx\@jsc@uplatextrue\undefined\else \PassOptionsToPackage{setpagesize=false}{hyperref} \setlength\footskip{2\baselineskip} @@ -921,6 +924,7 @@ \fi % for captions of literal blocks +% with `\theH...` macros for hyperref \newcounter{literalblock} \spx@ifundefined{c@chapter} {\@addtoreset{literalblock}{section} From 3af9353b38fb739e043f59b1ce781158edbe140e Mon Sep 17 00:00:00 2001 From: jfbu Date: Tue, 25 Oct 2016 19:28:07 +0200 Subject: [PATCH 132/297] Fix #777: (part II) LaTeX output "too deeply nested" The standard classes have a severe cap on maximal nesting of list-like environments (a total of six levels, and four for each of enumerate and itemize). This commit defines a new key ``'maxlistdepth'``. _Only_ if it is set (i.e. non-empty) will sphinx.sty do some hack to lift the LaTeX limitations and extend the maximal list depth to the desired value. --- doc/config.rst | 18 +++++++ sphinx/templates/latex/content.tex_t | 2 +- sphinx/texinputs/sphinx.sty | 78 +++++++++++++++++++++++++++- sphinx/writers/latex.py | 15 +++--- 4 files changed, 105 insertions(+), 8 deletions(-) diff --git a/doc/config.rst b/doc/config.rst index 0ae1c65e4..b9a78020e 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -1742,6 +1742,24 @@ These options influence LaTeX output. See further :doc:`latex`. * Keys that don't need be overridden unless in special cases are: + ``'maxlistdepth'`` + For example, setting it to ``'10'`` (as a string) will allow up to 10 + nested levels of list or quote environments, either numbered or not. + The default is to leave this key empty. LaTeX then allows only a + maximum of 6 nested levels, and among them at most 4 for numbered and + 4 for itemized lists. + + .. attention:: + + - This setting may likely be incompatible with LaTeX packages + modifying lists, or special document classes. + + - The LaTeX package "enumitem" provides its own commands for + extending the maximal list depth. If this package is added to the + preamble, its commands should be used and ``'maxlistdepth'`` + left to an empty string. + + .. versionadded:: 1.5 ``'inputenc'`` "inputenc" package inclusion, defaults to ``'\\usepackage[utf8]{inputenc}'`` when using pdflatex. diff --git a/sphinx/templates/latex/content.tex_t b/sphinx/templates/latex/content.tex_t index 97b71a704..87792e2ce 100644 --- a/sphinx/templates/latex/content.tex_t +++ b/sphinx/templates/latex/content.tex_t @@ -1,6 +1,6 @@ %% Generated by Sphinx. \def\sphinxdocclass{<%= docclass %>} -<%= keepoldnames %> +<%= passoptionstosphinx %> \documentclass[<%= papersize %>,<%= pointsize %><%= classoptions %>]{<%= wrapperclass %>} \ifdefined\pdfpxdimen \let\sphinxpxdimen\pdfpxdimen\else\newdimen\sphinxpxdimen diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index ed857e9ce..29947c848 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -7,9 +7,22 @@ \NeedsTeXFormat{LaTeX2e}[1995/12/01] \ProvidesPackage{sphinx}[2016/10/12 v1.5 LaTeX package (Sphinx markup)] + +% Handle package options \newif\ifsphinxKeepOldNames \sphinxKeepOldNamestrue \DeclareOption{dontkeepoldnames}{\sphinxKeepOldNamesfalse} -\DeclareOption*{\PackageWarning{sphinx}{Unknown option `\CurrentOption'}} +\newcommand*\sphinxMaxListDepth{0} +\def\spx@tempa {0} +\long\def\spx@tempb #1maxlistdepth=#2\UnDeFiNed #3\@nil + {\def\spx@tempa {#2}} +\DeclareOption*{% + \expandafter\spx@tempb\CurrentOption\UnDeFiNed maxlistdepth=0\UnDeFiNed\@nil + \ifnum\spx@tempa=\z@ + \PackageWarning{sphinx}{Unknown option `\CurrentOption'}% + \else + \PackageInfo{sphinx}{Maximal list depth will be set at \spx@tempa}% + \let\sphinxMaxListDepth \spx@tempa + \fi } \ProcessOptions\relax % this is the \ltx@ifundefined of ltxcmds.sty, which is loaded by @@ -1005,3 +1018,66 @@ \providecommand*{\sphinxtableofcontents}{\tableofcontents} \providecommand*{\sphinxthebibliography}{\thebibliography} \providecommand*{\sphinxtheindex}{\theindex} + +% remove LaTeX's cap on nesting depth. This is a hack, intrinsically +% fragile, but it works with the standard classes. It is executed only +% if 'maxlistdepth' key from latex_elements is used. + +\def\spx@toodeep@hack{\fi\iffalse} + +\ifnum\sphinxMaxListDepth=\z@\expandafter\@gobbletwo\fi +\AtBeginDocument{% + \let\spx@toodeepORI\@toodeep + \def\@toodeep{% + \ifnum\@listdepth>\sphinxMaxListDepth\relax + \expandafter\spx@toodeepORI + \else + \expandafter\spx@toodeep@hack + \fi}% +% define all missing \@list... macros + \count@\@ne + \loop + \spx@ifundefined{@list\romannumeral\the\count@} + {\iffalse}{\iftrue\advance\count@\@ne}% + \repeat + \loop + \ifnum\count@>\sphinxMaxListDepth\relax\else + \expandafter\let + \csname @list\romannumeral\the\count@\expandafter\endcsname + \csname @list\romannumeral\the\numexpr\count@-\@ne\endcsname + \advance\count@\@ne + \repeat +% define all missing enum... counters and \labelenum... macros and \p@enum.. + \count@\@ne + \loop + \spx@ifundefined{c@enum\romannumeral\the\count@} + {\iffalse}{\iftrue\advance\count@\@ne}% + \repeat + \loop + \ifnum\count@>\sphinxMaxListDepth\relax\else + \newcounter{enum\romannumeral\the\count@}% + \expandafter\def + \csname labelenum\romannumeral\the\count@\expandafter\endcsname + \expandafter + {\csname theenum\romannumeral\the\numexpr\count@\endcsname.}% + \expandafter\def + \csname p@enum\romannumeral\the\count@\expandafter\endcsname + \expandafter + {\csname p@enum\romannumeral\the\numexpr\count@-\@ne\expandafter + \endcsname\csname theenum\romannumeral\the\numexpr\count@-\@ne\endcsname.}% + \advance\count@\@ne + \repeat +% define all missing labelitem... macros + \count@\@ne + \loop + \spx@ifundefined{labelitem\romannumeral\the\count@} + {\iffalse}{\iftrue\advance\count@\@ne}% + \repeat + \loop + \ifnum\count@>\sphinxMaxListDepth\relax\else + \expandafter\let + \csname labelitem\romannumeral\the\count@\expandafter\endcsname + \csname labelitem\romannumeral\the\numexpr\count@-\@ne\endcsname + \advance\count@\@ne + \repeat + } diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 4ec08cea6..73925791a 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -51,6 +51,7 @@ DEFAULT_SETTINGS = { 'pxunit': '49336sp', 'classoptions': '', 'extraclassoptions': '', + 'maxlistdepth': '', 'passoptionstopackages': '', 'geometry': '\\usepackage[margin=1in,marginparwidth=0.5in]' '{geometry}', @@ -374,12 +375,9 @@ class LaTeXTranslator(nodes.NodeVisitor): 'releasename': _('Release'), 'indexname': _('Index'), }) - # set-up boolean for sphinx.sty - if builder.config.latex_keep_old_macro_names: - self.elements['keepoldnames'] = '' - else: - self.elements['keepoldnames'] = ('\\PassOptionsToPackage' - '{dontkeepoldnames}{sphinx}') + sphinxpkgoptions = '' + if not builder.config.latex_keep_old_macro_names: + sphinxpkgoptions = 'dontkeepoldnames' if document.settings.docclass == 'howto': docclass = builder.config.latex_docclass.get('howto', 'article') else: @@ -453,6 +451,11 @@ class LaTeXTranslator(nodes.NodeVisitor): # allow the user to override them all self.check_latex_elements() self.elements.update(builder.config.latex_elements) + if self.elements['maxlistdepth']: + sphinxpkgoptions += ',maxlistdepth=%s' % self.elements['maxlistdepth'] + if sphinxpkgoptions: + self.elements['passoptionstosphinx'] = \ + '\\PassOptionsToPackage{%s}{sphinx}' % sphinxpkgoptions if self.elements['extraclassoptions']: self.elements['classoptions'] += ',' + \ self.elements['extraclassoptions'] From 4470e7d565b81f125bf6ed73b44b8a24ca1fd56f Mon Sep 17 00:00:00 2001 From: jfbu Date: Wed, 26 Oct 2016 12:06:05 +0200 Subject: [PATCH 133/297] use "kvoptions" to handle sphinx latex package options will facilitate adding options in the future, with a "key=value" syntax. --- sphinx/texinputs/sphinx.sty | 42 ++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index 29947c848..0dc54f88a 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -6,24 +6,15 @@ % \NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesPackage{sphinx}[2016/10/12 v1.5 LaTeX package (Sphinx markup)] +\ProvidesPackage{sphinx}[2016/10/26 v1.5 LaTeX package (Sphinx markup)] -% Handle package options -\newif\ifsphinxKeepOldNames \sphinxKeepOldNamestrue -\DeclareOption{dontkeepoldnames}{\sphinxKeepOldNamesfalse} -\newcommand*\sphinxMaxListDepth{0} -\def\spx@tempa {0} -\long\def\spx@tempb #1maxlistdepth=#2\UnDeFiNed #3\@nil - {\def\spx@tempa {#2}} -\DeclareOption*{% - \expandafter\spx@tempb\CurrentOption\UnDeFiNed maxlistdepth=0\UnDeFiNed\@nil - \ifnum\spx@tempa=\z@ - \PackageWarning{sphinx}{Unknown option `\CurrentOption'}% - \else - \PackageInfo{sphinx}{Maximal list depth will be set at \spx@tempa}% - \let\sphinxMaxListDepth \spx@tempa - \fi } -\ProcessOptions\relax +% Handle package options via "kvoptions" (later loaded by hyperref anyhow) +\RequirePackage{kvoptions} +\SetupKeyvalOptions{prefix=spx@opt@} % use \spx@opt@ prefix +\DeclareBoolOption{dontkeepoldnames} % \ifspx@opt@dontkeepoldnames = \iffalse +\DeclareStringOption[0]{maxlistdepth}% \newcommand*\spx@opt@maxlistdepth{0} +\DeclareDefaultOption{\@unknownoptionerror} +\ProcessKeyvalOptions* % this is the \ltx@ifundefined of ltxcmds.sty, which is loaded by % hyperref.sty, but we need it before, and the first release of @@ -975,7 +966,7 @@ \spx@originalcaption } % by default, also define macros with the no-prefix names -\ifsphinxKeepOldNames +\ifspx@opt@dontkeepoldnames\else \typeout{** (sphinx) defining (legacy) text style macros without \string\sphinx\space prefix} \typeout{** if clashes with packages, set latex_keep_old_macro_names=False in conf.py} @@ -1021,15 +1012,18 @@ % remove LaTeX's cap on nesting depth. This is a hack, intrinsically % fragile, but it works with the standard classes. It is executed only -% if 'maxlistdepth' key from latex_elements is used. +% if 'maxlistdepth' key from latex_elements is used. +% this hack assumes \@toodeep always immediately followed by \else +% its effect is to force use the \else branch \def\spx@toodeep@hack{\fi\iffalse} -\ifnum\sphinxMaxListDepth=\z@\expandafter\@gobbletwo\fi +% default is to change nothing +\ifnum\spx@opt@maxlistdepth=\z@\expandafter\@gobbletwo\fi \AtBeginDocument{% \let\spx@toodeepORI\@toodeep \def\@toodeep{% - \ifnum\@listdepth>\sphinxMaxListDepth\relax + \ifnum\@listdepth>\spx@opt@maxlistdepth\relax \expandafter\spx@toodeepORI \else \expandafter\spx@toodeep@hack @@ -1041,7 +1035,7 @@ {\iffalse}{\iftrue\advance\count@\@ne}% \repeat \loop - \ifnum\count@>\sphinxMaxListDepth\relax\else + \ifnum\count@>\spx@opt@maxlistdepth\relax\else \expandafter\let \csname @list\romannumeral\the\count@\expandafter\endcsname \csname @list\romannumeral\the\numexpr\count@-\@ne\endcsname @@ -1054,7 +1048,7 @@ {\iffalse}{\iftrue\advance\count@\@ne}% \repeat \loop - \ifnum\count@>\sphinxMaxListDepth\relax\else + \ifnum\count@>\spx@opt@maxlistdepth\relax\else \newcounter{enum\romannumeral\the\count@}% \expandafter\def \csname labelenum\romannumeral\the\count@\expandafter\endcsname @@ -1074,7 +1068,7 @@ {\iffalse}{\iftrue\advance\count@\@ne}% \repeat \loop - \ifnum\count@>\sphinxMaxListDepth\relax\else + \ifnum\count@>\spx@opt@maxlistdepth\relax\else \expandafter\let \csname labelitem\romannumeral\the\count@\expandafter\endcsname \csname labelitem\romannumeral\the\numexpr\count@-\@ne\endcsname From 787fffd25f403704a926347ea3a9433c66f111b8 Mon Sep 17 00:00:00 2001 From: jfbu Date: Wed, 26 Oct 2016 19:07:44 +0200 Subject: [PATCH 134/297] fix test of current listdepth which was too permissive by one unit --- sphinx/texinputs/sphinx.sty | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index 0dc54f88a..6fbfcbaac 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -1011,11 +1011,11 @@ \providecommand*{\sphinxtheindex}{\theindex} % remove LaTeX's cap on nesting depth. This is a hack, intrinsically -% fragile, but it works with the standard classes. It is executed only -% if 'maxlistdepth' key from latex_elements is used. +% fragile, which works with the standard classes: it assumes \@toodeep +% is always used in "true" branches: "\if ... \@toodeep .. \else .. \fi." +% It is executed only if 'maxlistdepth' key from latex_elements is used. -% this hack assumes \@toodeep always immediately followed by \else -% its effect is to force use the \else branch +% The effect of this is to force use the "false" branch (if there is one) \def\spx@toodeep@hack{\fi\iffalse} % default is to change nothing @@ -1023,10 +1023,10 @@ \AtBeginDocument{% \let\spx@toodeepORI\@toodeep \def\@toodeep{% - \ifnum\@listdepth>\spx@opt@maxlistdepth\relax - \expandafter\spx@toodeepORI - \else + \ifnum\@listdepth<\spx@opt@maxlistdepth\relax \expandafter\spx@toodeep@hack + \else + \expandafter\spx@toodeepORI \fi}% % define all missing \@list... macros \count@\@ne From a3cf7185f1576b03ac874c03c06f22eab75131a5 Mon Sep 17 00:00:00 2001 From: jfbu Date: Wed, 26 Oct 2016 22:56:58 +0200 Subject: [PATCH 135/297] fix mark-up in doc/config.rst --- doc/config.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/config.rst b/doc/config.rst index 0ae1c65e4..8f5e972d5 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -1539,10 +1539,10 @@ These options influence LaTeX output. See further :doc:`latex`. The LaTeX engine to build the docs. The setting can have the following values: - * pdflatex -- PDFLaTeX (default) - * xelatex -- XeLaTeX - * lualatex -- LuaLaTeX - * platex -- pLaTeX (default if `language` is 'ja') + * ``'pdflatex'`` -- PDFLaTeX (default) + * ``'xelatex'`` -- XeLaTeX + * ``'lualatex'`` -- LuaLaTeX + * ``'platex'`` -- pLaTeX (default if :confval:`language` is ``'ja'``) .. confval:: latex_documents From e59ab1538df2fe080c1b7720d12916854d98914b Mon Sep 17 00:00:00 2001 From: jfbu Date: Wed, 26 Oct 2016 23:16:15 +0200 Subject: [PATCH 136/297] fix typos and mark-up in doc/config.rst --- doc/config.rst | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/config.rst b/doc/config.rst index 8f5e972d5..dab5e6c63 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -288,7 +288,8 @@ General configuration .. note:: - LaTeX builder always assign numbers whether this option is enabled or not. + The LaTeX builder always assigns numbers whether this option is enabled or + not. .. versionadded:: 1.3 @@ -1823,8 +1824,8 @@ These options influence LaTeX output. See further :doc:`latex`. .. versionchanged:: 1.5 - In Japanese docs(`language` is ``ja``), ``'jreport'`` is used for - ``'howto'`` and ``'jsbooks'`` is used for ``'manual'`` by default. + In Japanese docs (:confval:`language` is ``'ja'``), by default + ``'jreport'`` is used for ``'howto'`` and ``'jsbook'`` for ``'manual'``. .. confval:: latex_additional_files From 183a2ca75a22931911ec51046d4c0b55efd821f4 Mon Sep 17 00:00:00 2001 From: jfbu Date: Wed, 26 Oct 2016 23:49:49 +0200 Subject: [PATCH 137/297] Fix label placement in doc/config.rst (caused extra white line) --- doc/config.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/config.rst b/doc/config.rst index dab5e6c63..927c258dd 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -40,7 +40,7 @@ Important points to note: delete them from the namespace with ``del`` if appropriate. Modules are removed automatically, so you don't need to ``del`` your imports after use. -.. _conf-tags: + .. _conf-tags: * There is a special object named ``tags`` available in the config file. It can be used to query and change the tags (see :ref:`tags`). Use From 4e2bdf6671a6ee6e8a41514994decc203fb73ede Mon Sep 17 00:00:00 2001 From: jfbu Date: Thu, 27 Oct 2016 09:23:40 +0200 Subject: [PATCH 138/297] ignore ``'maxlistdepth'`` if package "enumitem" in use --- doc/config.rst | 22 ++++++++++------------ sphinx/texinputs/sphinx.sty | 21 ++++++++++++++------- 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/doc/config.rst b/doc/config.rst index b9a78020e..7afdbb940 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -1743,21 +1743,19 @@ These options influence LaTeX output. See further :doc:`latex`. * Keys that don't need be overridden unless in special cases are: ``'maxlistdepth'`` - For example, setting it to ``'10'`` (as a string) will allow up to 10 - nested levels of list or quote environments, either numbered or not. - The default is to leave this key empty. LaTeX then allows only a - maximum of 6 nested levels, and among them at most 4 for numbered and - 4 for itemized lists. + LaTeX allows by default at most 6 levels for nesting list and + quote-like environments, with at most 4 enumerated lists, and 4 bullet + lists. Setting this key for example to ``'10'`` (as a string) will + allow up to 10 nested levels (of all sorts). Leaving it to the empty + string means to obey the LaTeX default. - .. attention:: + .. warning:: - - This setting may likely be incompatible with LaTeX packages - modifying lists, or special document classes. + - Using this key may prove incompatible with some LaTeX packages + or special document classes which do their own list customization. - - The LaTeX package "enumitem" provides its own commands for - extending the maximal list depth. If this package is added to the - preamble, its commands should be used and ``'maxlistdepth'`` - left to an empty string. + - The key setting is silently *ignored* in presence of "enumitem". + Use then rather the dedicated commands of this LaTeX package. .. versionadded:: 1.5 ``'inputenc'`` diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index 6fbfcbaac..1ff11fe89 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -1010,17 +1010,17 @@ \providecommand*{\sphinxthebibliography}{\thebibliography} \providecommand*{\sphinxtheindex}{\theindex} -% remove LaTeX's cap on nesting depth. This is a hack, intrinsically -% fragile, which works with the standard classes: it assumes \@toodeep -% is always used in "true" branches: "\if ... \@toodeep .. \else .. \fi." -% It is executed only if 'maxlistdepth' key from latex_elements is used. +% remove LaTeX's cap on nesting depth if 'maxlistdepth' key used. +% This is a hack, which works with the standard classes: it assumes \@toodeep +% is always used in "true" branches: "\if ... \@toodeep \else .. \fi." -% The effect of this is to force use the "false" branch (if there is one) +% will force use the "false" branch (if there is one) \def\spx@toodeep@hack{\fi\iffalse} -% default is to change nothing +% do nothing if 'maxlistdepth' key not used or if package enumitem loaded. \ifnum\spx@opt@maxlistdepth=\z@\expandafter\@gobbletwo\fi \AtBeginDocument{% +\@ifpackageloaded{enumitem}{\remove@to@nnil}{}% \let\spx@toodeepORI\@toodeep \def\@toodeep{% \ifnum\@listdepth<\spx@opt@maxlistdepth\relax @@ -1039,6 +1039,11 @@ \expandafter\let \csname @list\romannumeral\the\count@\expandafter\endcsname \csname @list\romannumeral\the\numexpr\count@-\@ne\endcsname + % higher \leftmargin... needed to fix issue with babel-french (v2.6--...) + \spx@ifundefined{leftmargin\romannumeral\the\count@} + {\expandafter\let + \csname leftmargin\romannumeral\the\count@\expandafter\endcsname + \csname leftmargin\romannumeral\the\numexpr\count@-\@ne\endcsname}{}% \advance\count@\@ne \repeat % define all missing enum... counters and \labelenum... macros and \p@enum.. @@ -1074,4 +1079,6 @@ \csname labelitem\romannumeral\the\numexpr\count@-\@ne\endcsname \advance\count@\@ne \repeat - } + \PackageInfo{sphinx}{maximal list depth extended to \spx@opt@maxlistdepth}% +\@gobble\@nnil +} From 7a96becca13c362314ea74e62ae3c663bef2fe67 Mon Sep 17 00:00:00 2001 From: jfbu Date: Thu, 27 Oct 2016 10:02:53 +0200 Subject: [PATCH 139/297] Update CHANGES for PR#3096 --- CHANGES | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES b/CHANGES index 66d346d6f..eef72873f 100644 --- a/CHANGES +++ b/CHANGES @@ -8,6 +8,7 @@ Features added -------------- * #2513: A better default settings for XeLaTeX +* #3096: ``'maxlistdepth'`` key to work around LaTeX list limitations Bugs fixed ---------- @@ -16,6 +17,7 @@ Bugs fixed * #3062: Failed to build PDF using 1.5a2 (undefined ``\hypersetup`` for Japanese documents since PR#3030) * Better rendering of multiline signatures in html. +* #777: LaTeX output "too deeply nested" (ref #3096) Release 1.5 alpha2 (released Oct 17, 2016) ========================================== From 5142d17e413ce06ffdd2c32250efca458f3803a8 Mon Sep 17 00:00:00 2001 From: jfbu Date: Thu, 27 Oct 2016 10:08:26 +0200 Subject: [PATCH 140/297] fix mark-up in AUTHORS (funny effect of ``T.``) --- AUTHORS | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AUTHORS b/AUTHORS index 8aceb6937..24897985e 100644 --- a/AUTHORS +++ b/AUTHORS @@ -20,7 +20,7 @@ Other contributors, listed alphabetically, are: * Jakob Lykke Andersen -- Rewritten C++ domain * Henrique Bastos -- SVG support for graphviz extension * Daniel Bültmann -- todo extension -* Jean-François Burnol -- contributions to LaTeX support +* Jean-François Burnol -- LaTeX improvements * Etienne Desautels -- apidoc module * Michael Droettboom -- inheritance_diagram extension * Charles Duffy -- original graphviz extension @@ -49,7 +49,7 @@ Other contributors, listed alphabetically, are: * Daniel Neuhäuser -- JavaScript domain, Python 3 support (GSOC) * Christopher Perkins -- autosummary integration * Benjamin Peterson -- unittests -* T. Powers -- HTML output improvements +* \T. Powers -- HTML output improvements * Jeppe Pihl -- literalinclude improvements * Rob Ruana -- napoleon extension * Stefan Seefeld -- toctree improvements From 4d3f5b3c1cf6955d5ec50aeb1c7668fb56c590c8 Mon Sep 17 00:00:00 2001 From: jfbu Date: Thu, 27 Oct 2016 11:43:20 +0200 Subject: [PATCH 141/297] update style files checklist for latex tests --- tests/test_build_latex.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/test_build_latex.py b/tests/test_build_latex.py index a0366f1f1..c52a8c596 100644 --- a/tests/test_build_latex.py +++ b/tests/test_build_latex.py @@ -27,9 +27,9 @@ from test_build_html import ENV_WARNINGS LATEX_ENGINES = ['pdflatex', 'lualatex', 'xelatex'] DOCCLASSES = ['howto', 'manual'] -STYLEFILES = ['article.sty', 'fancyhdr.sty', 'titlesec.sty', 'amsmath.sty', - 'framed.sty', 'color.sty', 'fancyvrb.sty', 'fncychap.sty', - 'threeparttable.sty', 'geometry.sty'] +STYLEFILES = ['article.cls', 'fancyhdr.sty', 'titlesec.sty', 'amsmath.sty', + 'framed.sty', 'color.sty', 'fancyvrb.sty', 'threeparttable.sty', + 'fncychap.sty', 'geometry.sty', 'kvoptions.sty', 'hyperref.sty'] LATEX_WARNINGS = ENV_WARNINGS + """\ %(root)s/index.rst:\\d+: WARNING: unknown option: &option @@ -61,7 +61,7 @@ def kpsetest(*filenames): def test_latex(): if kpsetest(*STYLEFILES) is False: - raise SkipTest('not running latex, the required styles doesn\'t seem to be installed') + raise SkipTest('not running latex, the required styles do not seem to be installed') for engine, docclass in product(LATEX_ENGINES, DOCCLASSES): yield build_latex_doc, engine, docclass From 22765990f0acf7d4d7a6c535a526a8d16cdf185d Mon Sep 17 00:00:00 2001 From: Darragh Bailey Date: Wed, 23 Mar 2016 16:38:46 +0000 Subject: [PATCH 142/297] Allow skipping anchor checking by regex To avoid needing to turn off anchor checking across the entire documentation allow skipping based on matching the anchor against a regex. Some sites/pages use JavaScript to perform anchor assignment in a webpage, which would require rendering the page to determine whether the anchor exists. Allow fine grain control of whether the anchor is checked based on pattern matching, until such stage as the retrieved URLs can be passed through an engine for deeper checking on the HTML doctree. --- doc/config.rst | 11 +++++++++++ sphinx/builders/linkcheck.py | 14 ++++++++++---- tests/roots/test-linkcheck/links.txt | 7 +++++++ tests/test_build_linkcheck.py | 19 ++++++++++++++++--- 4 files changed, 44 insertions(+), 7 deletions(-) diff --git a/doc/config.rst b/doc/config.rst index 0ae1c65e4..93e29fc42 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -2083,6 +2083,17 @@ Options for the linkcheck builder .. versionadded:: 1.2 +.. confval:: linkcheck_anchors_ignore + + A list of regular expressions that match URIs that should skip checking + the validity of anchors in links. This allows skipping entire sites, where + anchors are used to control dynamic pages, or just specific anchors within + a page, where javascript is used to add anchors dynamically, or use the + fragment as part of to trigger an internal REST request. Default is + ``["/#!"]``. + + .. versionadded:: 1.5 + Options for the XML builder --------------------------- diff --git a/sphinx/builders/linkcheck.py b/sphinx/builders/linkcheck.py index e53cabb62..f49f4f9a3 100644 --- a/sphinx/builders/linkcheck.py +++ b/sphinx/builders/linkcheck.py @@ -82,6 +82,8 @@ class CheckExternalLinksBuilder(Builder): def init(self): self.to_ignore = [re.compile(x) for x in self.app.config.linkcheck_ignore] + self.anchors_ignore = [re.compile(x) + for x in self.app.config.linkcheck_anchors_ignore] self.good = set() self.broken = {} self.redirected = {} @@ -112,6 +114,10 @@ class CheckExternalLinksBuilder(Builder): # split off anchor if '#' in uri: req_url, anchor = uri.split('#', 1) + for rex in self.anchors_ignore: + if rex.match(anchor): + anchor = None + break else: req_url = uri anchor = None @@ -123,11 +129,8 @@ class CheckExternalLinksBuilder(Builder): req_url = encode_uri(req_url) try: - if anchor and self.app.config.linkcheck_anchors and \ - not anchor.startswith('!'): + if anchor and self.app.config.linkcheck_anchors: # Read the whole document and see if #anchor exists - # (Anchors starting with ! are ignored since they are - # commonly used for dynamic pages) response = requests.get(req_url, stream=True, headers=self.headers, **kwargs) found = check_anchor(response, unquote(anchor)) @@ -294,3 +297,6 @@ def setup(app): app.add_config_value('linkcheck_timeout', None, None, [int]) app.add_config_value('linkcheck_workers', 5, None) app.add_config_value('linkcheck_anchors', True, None) + # Anchors starting with ! are ignored since they are + # commonly used for dynamic pages + app.add_config_value('linkcheck_anchors_ignore', ["^!"], None) diff --git a/tests/roots/test-linkcheck/links.txt b/tests/roots/test-linkcheck/links.txt index c3ec7235e..ef3607970 100644 --- a/tests/roots/test-linkcheck/links.txt +++ b/tests/roots/test-linkcheck/links.txt @@ -2,3 +2,10 @@ This is from CPython documentation. * Also, if there is a `default namespace `__, that full URI gets prepended to all of the non-prefixed tags. * The `SSMEDIAN `_ function in the Gnome Gnumeric spreadsheet. + + +Some additional anchors to exercise ignore code + +* `Example Bar invalid `_ +* `Example Bar invalid `_ tests that default ignore anchor of #! does not need to be prefixed with / +* `Example Bar invalid `_ diff --git a/tests/test_build_linkcheck.py b/tests/test_build_linkcheck.py index 700642901..1d75135af 100644 --- a/tests/test_build_linkcheck.py +++ b/tests/test_build_linkcheck.py @@ -14,12 +14,25 @@ from util import with_app @with_app('linkcheck', testroot='linkcheck', freshenv=True) -def test_all(app, status, warning): +def test_defaults(app, status, warning): app.builder.build_all() assert (app.outdir / 'output.txt').exists() content = (app.outdir / 'output.txt').text() - # expect all ok - assert not content + print(content) + # looking for #top should fail + assert "Anchor 'top' not found" in content + assert len(content.splitlines()) == 1 + +@with_app('linkcheck', testroot='linkcheck', freshenv=True, + confoverrides={'linkcheck_anchors_ignore': ["^!", "^top$"]}) +def test_anchors_ignored(app, status, warning): + app.builder.build_all() + + assert (app.outdir / 'output.txt').exists() + content = (app.outdir / 'output.txt').text() + + # expect all ok when excluding #top + assert not content From a5bdf1fdae99869e3e0e6beab532d62b1df19a3e Mon Sep 17 00:00:00 2001 From: shimizukawa Date: Fri, 28 Oct 2016 00:00:22 +0900 Subject: [PATCH 143/297] Closes #3060: autodoc supports documentation for attributes of Enum class. Now autodoc render just the value of Enum attributes instead of Enum attribute representation. --- CHANGES | 2 ++ sphinx/ext/autodoc.py | 4 +++- sphinx/util/inspect.py | 12 ++++++++++++ tests/test_autodoc.py | 33 +++++++++++++++++++++++++++++++++ 4 files changed, 50 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index eef72873f..31ddad9c5 100644 --- a/CHANGES +++ b/CHANGES @@ -9,6 +9,8 @@ Features added * #2513: A better default settings for XeLaTeX * #3096: ``'maxlistdepth'`` key to work around LaTeX list limitations +* #3060: autodoc supports documentation for attributes of Enum class. Now autodoc render + just the value of Enum attributes instead of Enum attribute representation. Bugs fixed ---------- diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py index 6a1d907fd..890f65646 100644 --- a/sphinx/ext/autodoc.py +++ b/sphinx/ext/autodoc.py @@ -31,7 +31,7 @@ from sphinx.application import ExtensionError from sphinx.util.nodes import nested_parse_with_titles from sphinx.util.compat import Directive from sphinx.util.inspect import getargspec, isdescriptor, safe_getmembers, \ - safe_getattr, object_description, is_builtin_class_method + safe_getattr, object_description, is_builtin_class_method, isenumattribute from sphinx.util.docstrings import prepare_docstring try: @@ -1478,6 +1478,8 @@ class AttributeDocumenter(DocstringStripSignatureMixin, ClassLevelDocumenter): def import_object(self): ret = ClassLevelDocumenter.import_object(self) + if isenumattribute(self.object): + self.object = self.object.value if isdescriptor(self.object) and \ not isinstance(self.object, self.method_types): self._datadescriptor = True diff --git a/sphinx/util/inspect.py b/sphinx/util/inspect.py index 91c955e10..147d43592 100644 --- a/sphinx/util/inspect.py +++ b/sphinx/util/inspect.py @@ -94,6 +94,18 @@ else: # 2.7 pass return inspect.ArgSpec(args, varargs, varkw, func_defaults) +try: + import enum +except ImportError: + enum = None + + +def isenumattribute(x): + """Check if the object is attribute of enum.""" + if enum is None: + return False + return isinstance(x, enum.Enum) + def isdescriptor(x): """Check if the object is some kind of descriptor.""" diff --git a/tests/test_autodoc.py b/tests/test_autodoc.py index d290e050b..68e15bbed 100644 --- a/tests/test_autodoc.py +++ b/tests/test_autodoc.py @@ -14,6 +14,7 @@ from util import TestApp, Struct, raises, SkipTest # NOQA from nose.tools import with_setup, eq_ +import enum from six import StringIO from docutils.statemachine import ViewList @@ -825,6 +826,26 @@ def test_generate(): del directive.env.temp_data['autodoc:module'] del directive.env.ref_context['py:module'] + # test members with enum attributes + directive.env.ref_context['py:module'] = 'test_autodoc' + options.inherited_members = False + options.undoc_members = False + options.members = ALL + assert_processes([ + ('class', 'test_autodoc.EnumCls'), + ('attribute', 'test_autodoc.EnumCls.val1'), + ('attribute', 'test_autodoc.EnumCls.val2'), + ('attribute', 'test_autodoc.EnumCls.val3'), + ], 'class', 'EnumCls') + assert_result_contains( + ' :annotation: = 12', 'attribute', 'EnumCls.val1') + assert_result_contains( + ' :annotation: = 23', 'attribute', 'EnumCls.val2') + assert_result_contains( + ' :annotation: = 34', 'attribute', 'EnumCls.val3') + del directive.env.temp_data['autodoc:class'] + del directive.env.temp_data['autodoc:module'] + # test descriptor class documentation options.members = ['CustomDataDescriptor'] assert_result_contains('.. py:class:: CustomDataDescriptor(doc)', @@ -1020,6 +1041,18 @@ class InstAttCls(object): """Docstring for instance attribute InstAttCls.ia2.""" +class EnumCls(enum.Enum): + """ + this is enum class + """ + + #: doc for val1 + val1 = 12 + val2 = 23 #: doc for val2 + val3 = 34 + """doc for val3""" + + def test_type_hints(): from sphinx.ext.autodoc import formatargspec from sphinx.util.inspect import getargspec From fb8bb072cbc891cb24c26538da7ec8c5457a8067 Mon Sep 17 00:00:00 2001 From: jfbu Date: Thu, 27 Oct 2016 20:24:33 +0200 Subject: [PATCH 144/297] ``'sphinxpackageoptions'`` for key=value styling of Sphinx LaTeX --- doc/config.rst | 8 +- doc/latex.rst | 244 +++++++++++++++++----- sphinx/templates/latex/content.tex_t | 3 +- sphinx/texinputs/footnotehyper-sphinx.sty | 28 +-- sphinx/texinputs/sphinx.sty | 232 +++++++++++++------- sphinx/writers/latex.py | 14 +- 6 files changed, 360 insertions(+), 169 deletions(-) diff --git a/doc/config.rst b/doc/config.rst index 737f01379..c34f71db1 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -1694,9 +1694,15 @@ These options influence LaTeX output. See further :doc:`latex`. example ``100px=1in``, one can use ``'0.01in'`` but it is more precise to use ``'47363sp'``. To obtain ``72px=1in``, use ``'1bp'``. + .. versionadded:: 1.5 + ``'sphinxpackageoptions'`` + A comma separated list of ``key=value`` package options for the Sphinx + LaTeX style, default empty. See :doc:`latex`. + .. versionadded:: 1.5 ``'passoptionstopackages'`` - "PassOptionsToPackage" call, default empty. + A string which will be positioned early in the preamble, designed to + contain ``\\PassOptionsToPackage{options}{foo}`` commands. Default empty. .. versionadded:: 1.4 ``'geometry'`` diff --git a/doc/latex.rst b/doc/latex.rst index 1716a5af4..555b04483 100644 --- a/doc/latex.rst +++ b/doc/latex.rst @@ -41,27 +41,197 @@ preamble of relevant ``\renewcommand``, ``\renewenvironment``, ``\setlength``, or ``\definecolor`` commands. The ``'preamble'`` key of :confval:`latex_elements` will serve for inserting these commands. If they are numerous, it may prove more convenient to assemble them into a specialized -file :file:`mycustomizedmacros.tex` and then use:: +file :file:`mystyle.tex` and then use:: - 'preamble': '\\makeatletter\\input{mycustomizedmacros.tex}\\makeatother', + 'preamble': '\\makeatletter\\input{mystyle.tex}\\makeatother', -More advanced LaTeX users will set up a style file -:file:`mycustomizedmacros.sty`, which can then be loaded via:: +or, better, to set up a style file +:file:`mystyle.sty` which can then be loaded via:: - 'preamble': '\\usepackage{mycustomizedmacros}', + 'preamble': '\\usepackage{mystyle}', The :ref:`build configuration file ` file for the project needs to have its variable :confval:`latex_additional_files` appropriately configured, for example:: - latex_additional_files = ["mycustomizedmacros.sty"] + latex_additional_files = ["mystyle.sty"] Such *LaTeX Sphinx theme* files could possibly be contributed in the future by advanced users for wider use. -Let us list here some examples of macros, lengths, colors, which are inherited -from package file :file:`sphinx.sty` and class file :file:`sphinxhowto.cls` or -:file:`sphinxmanual.cls`, and can be customized. +The ``'sphinxpackageoptions'`` key to :confval:`latex_elements` provides a +more convenient interface to various style parameters. It is a comma separated +string of ``key=value`` instructions:: + + key1=value1,key2=value2, ... + +which will be passed as the optional parameter to the Sphinx LaTeX style \file:: + + \usepackage[]{sphinx} + +It is possible to modify later the options (even midway in the +document using a ``.. raw:: latex`` directive) via use of the command +``\sphinxsetup{}``, with the same option ``key=value`` syntax. + +.. versionadded:: 1.5 + +Here is the current list: + +``verbatimwithframe`` + default ``true``. Boolean to use or not frames around + :rst:dir:`code-block`\ s and literal includes. Setting it to ``false`` + does not deactivate use of package "framed", because it is still in use + for the optional background colour (see below). + + .. attention:: + + LaTeX wants *lowercase* ``=true`` or ``=false`` here. + +``verbatimwrapslines`` + default ``true``. Tells whether long lines in :rst:dir:`code-block`\ s + should be wrapped. It is theoretically possible to customize this even + more and decide at which characters a line-break can occur and whether + before or after, but this is accessible currently only by re-defining some + macros with complicated LaTeX syntax from :file:`sphinx.sty`. + +``TitleColor`` + default ``{rgb}{0.126,0.263,0.361}``. The colour for titles (as configured + via use of package "titlesec".) It must obey the syntax of the + ``\definecolor`` command. Check the documentation of packages ``color`` or + ``xcolor``. + +``InnerLinkColor`` + default ``{rgb}{0.208,0.374,0.486}``. A colour passed to ``hyperref`` as + value of ``linkcolor`` and ``citecolor``. + +``OuterLinkColor`` + default ``{rgb}{0.216,0.439,0.388}``. A colour passed to ``hyperref`` as + value of ``filecolor``, ``menucolor``, and ``urlcolor``. + +``VerbatimColor`` + default ``{rgb}{1,1,1}``. The background colour for + :rst:dir:`code-block`\ s. The default is white. + +``VerbatimBorderColor`` + default ``{rgb}{0,0,0}``. The frame color, defaults to black. + +``verbatimsep`` + default ``\fboxsep``. The separation between code lines and the frame. + +``verbatimborder`` + default ``\fboxrule``. The width of the frame around + :rst:dir:`code-block`\ s. + +``shadowsep`` + default ``5pt``. The separation between contents and frame for + :dudir:`contents` and :dudir:`topic` boxes. + +``shadowsize`` + default ``4pt``. The width of the lateral "shadow" to the right. + +``shadowrule`` + default ``\fboxrule``. The width of the frame around :dudir:`topic` boxes. + +``notebordercolor`` + default ``{rgb}{0,0,0}``. The colour for the two horizontal rules used by + Sphinx in LaTeX for styling a + :dudir:`note` admonition. Defaults to black. + +``hintbordercolor`` + default ``{rgb}{0,0,0}``. id. + +``importantbordercolor`` + default ``{rgb}{0,0,0}``. id. + +``tipbordercolor`` + default ``{rgb}{0,0,0}``. id. + +``noteborder`` + default ``0.5pt``. The width of the two horizontal rules. + +``hintborder`` + default ``0.5pt``. id. + +``importantborder`` + default ``0.5pt``. id. + +``tipborder`` + default ``0.5pt``. id. + +``warningbordercolor`` + default ``{rgb}{0,0,0}``. The colour of the frame for :dudir:`warning` type + admonitions. Defaults to black. + +``cautionbordercolor`` + default ``{rgb}{0,0,0}``. id. + +``attentionbordercolor`` + default ``{rgb}{0,0,0}``. id. + +``dangerbordercolor`` + default ``{rgb}{0,0,0}``. id. + +``errorbordercolor`` + default ``{rgb}{0,0,0}``. id. + +``warningbgcolor`` + default ``{rgb}{1,1,1}``. The background colour for :dudir:`warning` type + admonition, defaults to white. + +``cautionbgcolor`` + default ``{rgb}{1,1,1}``. id. + +``attentionbgcolor`` + default ``{rgb}{1,1,1}``. id. + +``dangerbgcolor`` + default ``{rgb}{1,1,1}``. id. + +``errorbgcolor`` + default ``{rgb}{1,1,1}``. id. + +``warningborder`` + default ``1pt``. The width of the frame. + +``cautionborder`` + default ``1pt``. id. + +``attentionborder`` + default ``1pt``. id. + +``dangerborder`` + default ``1pt``. id. + +``errorborder`` + default ``1pt``. id. + +``AtStartFootnote`` + default ``\\mbox{ }``. LaTeX macros inserted at the start of the footnote + text at bottom of page, after the footnote number. + +``BeforeFootnote`` + default ``\\leavevmode\\unskip``. LaTeX macros inserted before the footnote + mark. The default removes possible space before it. + + It can be set to empty (``BeforeFootnote={},``) to recover the earlier + behaviour of Sphinx, or alternatively contain a ``\\nobreak\\space`` or a + ``\\thinspace`` after the ``\\unskip`` to insert some chosen + (non-breakable) space. + + .. versionadded:: 1.5 + formerly, footnotes from explicit mark-up were + preceded by a space (hence a linebreak there was possible), but + automatically generated footnotes had no such space. + +``HeaderFamily`` + default ``\\sffamily\\bfseries``. Sets the font used by headings. + +In the future, possibly more keys will be made available. As seen above, they +may even be used for LaTeX commands. + +Let us now list some macros from the package file +:file:`sphinx.sty` and class file :file:`sphinxhowto.cls` or +:file:`sphinxmanual.cls`, which can be entirely redefined, if desired. - text styling commands (they have one argument): ``\sphinx`` with ```` being one of ``strong``, ``bfcode``, ``email``, ``tablecontinued``, @@ -84,38 +254,22 @@ from package file :file:`sphinx.sty` and class file :file:`sphinxhowto.cls` or .. versionadded:: 1.5 the new macros are wrappers of the formerly hard-coded ``\texttt``, - ``\emph``, ... The default definitions can be found near the end of + ``\emph``, ... The default definitions can be found in :file:`sphinx.sty`. -- parameters for paragraph level environments: with ```` one of - :dudir:`warning`, :dudir:`caution`, :dudir:`attention`, - :dudir:`danger`, :dudir:`error`, the colours - *sphinxbordercolor* and *sphinxbgcolor* can be - re-defined using ``\definecolor`` command. The - ``\sphinxborder`` is a command (not a LaTeX length) which - specifies the thickness of the frame (default ``1pt``) and can be - ``\renewcommand`` 'd. The same applies with ```` one of - :dudir:`note`, :dudir:`hint`, :dudir:`important`, :dudir:`tip`, but - the background colour is not implemented by the default environments - and the top and bottom rule thickness default is ``0.5pt``. - - .. versionchanged:: 1.5 - customizability of the parameters for each type of admonition. -- paragraph level environments: for each admonition as in the previous item, the +- paragraph level environments: for each admonition type ````, the used environment is named ``sphinx``. They may be ``\renewenvironment`` 'd individually, and must then be defined with one argument (it is the heading of the notice, for example ``Warning:`` for :dudir:`warning` directive, if English is the document language). Their default definitions use either the *sphinxheavybox* (for the first listed directives) or the *sphinxlightbox* environments, configured to use the parameters (colours, border thickness) - specific to each type, as mentioned in the previous item. + specific to each type, which can be set via ``'sphinxpackageoptions'`` string. .. versionchanged:: 1.5 use of public environment names, separate customizability of the parameters. - the :dudir:`contents` directive (with ``:local:`` option) and the :dudir:`topic` directive are implemented by environment ``sphinxShadowBox``. - Its default definition obeys three LaTeX lengths (not commands) as parameters: - ``\sphinxshadowsep`` (distance from contents), ``\sphinxshadowsize`` (width of - lateral shadow), ``\sphinxshadowrule`` (thickness of the frame). + See above for the three dimensions associated with it. .. versionchanged:: 1.5 use of public names for the three lengths. The environment itself was @@ -124,8 +278,7 @@ from package file :file:`sphinx.sty` and class file :file:`sphinxhowto.cls` or implemented using ``sphinxVerbatim`` environment which is a wrapper of ``Verbatim`` environment from package ``fancyvrb.sty``. It adds the handling of the top caption and the wrapping of long lines, and a frame which allows - pagebreaks. The LaTeX lengths (not commands) ``\sphinxverbatimsep`` and - ``\sphinxverbatimborder`` customize the framing. Inside tables the used + pagebreaks. Inside tables the used environment is ``sphinxVerbatimintable`` (it does not draw a frame, but allows a caption). @@ -134,9 +287,10 @@ from package file :file:`sphinx.sty` and class file :file:`sphinxhowto.cls` or which is the one of ``OriginalVerbatim`` too), and custom one is called ``sphinxVerbatim``. Also, earlier version of Sphinx used ``OriginalVerbatim`` inside tables (captions were lost, long code lines - were not wrapped), they now use ``sphinxVerbatimintable``. + were not wrapped), it now uses there ``sphinxVerbatimintable``. .. versionadded:: 1.5 - the two customizable lengths, the ``sphinxVerbatimintable``. + the two customizable lengths, the ``sphinxVerbatimintable``, the boolean + toggles described above. - by default the Sphinx style file ``sphinx.sty`` includes the command ``\fvset{fontsize=\small}`` as part of its configuration of ``fancyvrb.sty``. The user may override this for example via @@ -145,30 +299,6 @@ from package file :file:`sphinx.sty` and class file :file:`sphinxhowto.cls` or .. versionadded:: 1.5 formerly, the use of ``\small`` for code listings was not customizable. -- miscellaneous colours: *InnerLinkColor*, *OuterLinkColor* (used in - ``hyperref`` options), *TitleColor* (used for titles via ``titlesec``), - *VerbatimColor* (background colour) and *VerbatimBorderColor* (used for - displaying source code examples). -- the ``\sphinxAtStartFootnote`` is inserted between footnote numbers and their - texts, by default it does ``\mbox{ }``. -- the ``\sphinxBeforeFootnote`` command is executed before each footnote, its - default definition is:: - - \newcommand*{\sphinxBeforeFootnote}{\leavevmode\unskip} - - You can ``\renewcommand`` it to do nothing in order to recover the earlier - behaviour of Sphinx, or alternatively add a ``\nobreak\space`` or a - ``\thinspace`` after the ``\unskip`` in the definition to insert some - (non-breakable) space. - - .. versionadded:: 1.5 - formerly, footnotes from explicit mark-up were preceded by a space - allowing a linebreak, but automatically generated footnotes had no such - space. -- use ``\sphinxSetHeaderFamily`` to set the font used by headings - (default is ``\sffamily\bfseries``). - - .. versionadded:: 1.5 - the section, subsection, ... headings are set using *titlesec*'s ``\titleformat`` command. Check :file:`sphinx.sty` for the definitions. - for the ``'sphinxmanual'`` class (corresponding to the fifth element of diff --git a/sphinx/templates/latex/content.tex_t b/sphinx/templates/latex/content.tex_t index 87792e2ce..f63fac6d1 100644 --- a/sphinx/templates/latex/content.tex_t +++ b/sphinx/templates/latex/content.tex_t @@ -1,6 +1,5 @@ %% Generated by Sphinx. \def\sphinxdocclass{<%= docclass %>} -<%= passoptionstosphinx %> \documentclass[<%= papersize %>,<%= pointsize %><%= classoptions %>]{<%= wrapperclass %>} \ifdefined\pdfpxdimen \let\sphinxpxdimen\pdfpxdimen\else\newdimen\sphinxpxdimen @@ -16,7 +15,7 @@ <%= fontpkg %> <%= fncychap %> <%= longtable %> -\usepackage{sphinx} +\usepackage[<%= sphinxpackageoptions %>]{sphinx} \usepackage{multirow} \usepackage{eqparbox} <%= usepackages %> diff --git a/sphinx/texinputs/footnotehyper-sphinx.sty b/sphinx/texinputs/footnotehyper-sphinx.sty index 65cb6e8bc..a714f211d 100644 --- a/sphinx/texinputs/footnotehyper-sphinx.sty +++ b/sphinx/texinputs/footnotehyper-sphinx.sty @@ -1,6 +1,6 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{footnotehyper-sphinx}% - [2016/10/16 v0.9f hyperref aware footnote.sty for sphinx (JFB)] + [2016/10/27 v0.9f hyperref aware footnote.sty for sphinx (JFB)] %% %% Package: footnotehyper-sphinx %% Version: based on footnotehyper.sty v0.9f (2016/10/03) @@ -12,17 +12,7 @@ %% 2. no need to check if footnote.sty was loaded, %% 3. a special tabulary compatibility layer added, (partial but enough for %% Sphinx), -%% 4. the \sphinxfootnotemark command is added. Its rôle is to silently remove -%% footnote marks from locations like the tables of contents, or page headers, -%% and to be compatible with hyperref constructions of bookmarks, and survive -%% to \MakeUppercase command or such which may be used to typeset chapter -%% titles for example. -%% 5. the \sphinxBeforeFootnote is added: reST syntax implies that a space token -%% is needed before footnote mark-up like [#]_ and it goes to latex file (and -%% a line break can happen before the footnote mark), but for generated -%% footnotes from latex_show_urls = 'footnote' there is no such space. The -%% hook normalizes this, and by default uses no space. -%% +%% 4. \sphinxfootnotemark, and use of \spx@opt@BeforeFootnote from sphinx.sty. %% Note: with \footnotemark[N]/\footnotetext[N] syntax, hyperref %% does not insert an hyperlink. This is _not_ improved here. %% @@ -99,8 +89,8 @@ \if@savingnotes\expandafter\fn@fntext\else\expandafter\H@@footnotetext\fi {\unvbox\z@}\endgroup }% -%% \sphinxBeforeFootnote added 2016/10/16 -\def\FNH@fixed@footnote {\sphinxBeforeFootnote\ifx\@currenvir\fn@footnote +%% \spx@opt@BeforeFootnote is defined in sphinx.sty +\def\FNH@fixed@footnote {\spx@opt@BeforeFootnote\ifx\@currenvir\fn@footnote \expandafter\FNH@footnoteenv\else\expandafter\fn@latex@@footnote\fi }% \def\FNH@footnoteenv {\@ifnextchar[\FNH@xfootnoteenv%] {\stepcounter\@mpfn @@ -154,15 +144,13 @@ \typeout{\meaning\@makefntext}% \let\fn@prefntext\@empty\let\fn@postfntext\@empty }% -%% \sphinxfootnotemark: usable in section titles and silently removed from TOCs +%% \sphinxfootnotemark: usable in section titles and silently removed from +%% TOCs. \def\sphinxfootnotemark [#1]% - {\ifx\thepage\relax\else \protect\sphinxBeforeFootnote + {\ifx\thepage\relax\else \protect\spx@opt@BeforeFootnote \protect\footnotemark[#1]\fi}% -\AtBeginDocument +\AtBeginDocument % let hyperref less complain {\pdfstringdefDisableCommands{\def\sphinxfootnotemark [#1]{}}}% -%% before 1.5, Sphinx left a (breakable) space before user generated footnotes -%% but no space before automatically generated footnotes. -\def\sphinxBeforeFootnote {\leavevmode\unskip}% \endinput %% %% End of file `footnotehyper-sphinx.sty'. diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index 1ff11fe89..ce4088e91 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -6,15 +6,122 @@ % \NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesPackage{sphinx}[2016/10/26 v1.5 LaTeX package (Sphinx markup)] +\ProvidesPackage{sphinx}[2016/10/27 v1.5 LaTeX package (Sphinx markup)] % Handle package options via "kvoptions" (later loaded by hyperref anyhow) \RequirePackage{kvoptions} \SetupKeyvalOptions{prefix=spx@opt@} % use \spx@opt@ prefix + \DeclareBoolOption{dontkeepoldnames} % \ifspx@opt@dontkeepoldnames = \iffalse \DeclareStringOption[0]{maxlistdepth}% \newcommand*\spx@opt@maxlistdepth{0} + +% colour values must be given in format accepted by color's \definecolor +\DeclareStringOption[{rgb}{0.126,0.263,0.361}]{TitleColor} +% for hyperref +\DeclareStringOption[{rgb}{0.208,0.374,0.486}]{InnerLinkColor} +\DeclareStringOption[{rgb}{0.216,0.439,0.388}]{OuterLinkColor} +% code-blocks and literal includes +\DeclareStringOption[{rgb}{1,1,1}]{VerbatimColor} +\DeclareStringOption[{rgb}{0,0,0}]{VerbatimBorderColor} +\DeclareStringOption[\fboxsep]{verbatimsep} +\DeclareStringOption[\fboxrule]{verbatimborder} +\DeclareBoolOption[true]{verbatimwithframe} +\DeclareBoolOption[true]{verbatimwrapslines} +% topic boxes +\DeclareStringOption[5pt]{shadowsep} +\DeclareStringOption[4pt]{shadowsize} +\DeclareStringOption[\fboxrule]{shadowrule} +% admonition boxes, "light" style +\DeclareStringOption[{rgb}{0,0,0}]{notebordercolor} +\DeclareStringOption[{rgb}{0,0,0}]{hintbordercolor} +\DeclareStringOption[{rgb}{0,0,0}]{importantbordercolor} +\DeclareStringOption[{rgb}{0,0,0}]{tipbordercolor} +\DeclareStringOption[0.5pt]{noteborder} +\DeclareStringOption[0.5pt]{hintborder} +\DeclareStringOption[0.5pt]{importantborder} +\DeclareStringOption[0.5pt]{tipborder} +% admonition boxes, "heavy" style +\DeclareStringOption[{rgb}{0,0,0}]{warningbordercolor} +\DeclareStringOption[{rgb}{0,0,0}]{cautionbordercolor} +\DeclareStringOption[{rgb}{0,0,0}]{attentionbordercolor} +\DeclareStringOption[{rgb}{0,0,0}]{dangerbordercolor} +\DeclareStringOption[{rgb}{0,0,0}]{errorbordercolor} +\DeclareStringOption[{rgb}{1,1,1}]{warningbgcolor} +\DeclareStringOption[{rgb}{1,1,1}]{cautionbgcolor} +\DeclareStringOption[{rgb}{1,1,1}]{attentionbgcolor} +\DeclareStringOption[{rgb}{1,1,1}]{dangerbgcolor} +\DeclareStringOption[{rgb}{1,1,1}]{errorbgcolor} +\DeclareStringOption[1pt]{warningborder} +\DeclareStringOption[1pt]{cautionborder} +\DeclareStringOption[1pt]{attentionborder} +\DeclareStringOption[1pt]{dangerborder} +\DeclareStringOption[1pt]{errorborder} + +% Footnotes +\DeclareStringOption[\mbox{ }]{AtStartFootnote} +% we need a public macro name for direct use in latex file +\newcommand*{\sphinxAtStartFootnote}{\spx@opt@AtStartFootnote} +% no such need for this one, used inside other macros +\DeclareStringOption[\leavevmode\unskip]{BeforeFootnote} + +% some font styling. +\DeclareStringOption[\sffamily\bfseries]{HeaderFamily} \DeclareDefaultOption{\@unknownoptionerror} \ProcessKeyvalOptions* +% don't allow use of maxlistdepth via \sphinxsetup. +\DisableKeyvalOption{sphinx}{maxlistdepth} + +% We declare the \dimen registers here. Those are customizable via options. +\newdimen\sphinxverbatimsep +\newdimen\sphinxverbatimborder +\newdimen\sphinxshadowsep +\newdimen\sphinxshadowsize +\newdimen\sphinxshadowrule +% This one is dynamical, don't set it. +\newdimen\spx@notice@border +% Other dimensions are customizable by options and declare macros. + +\newcommand*\sphinx@setup +{% + \sphinxverbatimsep \dimexpr\spx@opt@verbatimsep \relax + \sphinxverbatimborder\dimexpr\spx@opt@verbatimborder\relax + \sphinxshadowsep \dimexpr\spx@opt@shadowsep \relax + \sphinxshadowsize \dimexpr\spx@opt@shadowsize \relax + \sphinxshadowrule \dimexpr\spx@opt@shadowrule \relax + % they will be embedded in \dimexpr ... \relax at time of use + \let\sphinxnoteborder \spx@opt@noteborder + \let\sphinxhintborder \spx@opt@hintborder + \let\sphinximportantborder\spx@opt@importantborder + \let\sphinxtipborder \spx@opt@tipborder + \let\sphinxwarningborder \spx@opt@warningborder + \let\sphinxcautionborder \spx@opt@cautionborder + \let\sphinxattentionborder\spx@opt@attentionborder + \let\sphinxdangerborder \spx@opt@dangerborder + \let\sphinxerrorborder \spx@opt@errorborder + % first execution of \sphinx@setup will be after having loaded color/xcolor + \def\@tempa ##1##2##3{\edef\@tempb{\noexpand##1{##2}##3}\@tempb}% + \@tempa\definecolor{TitleColor} \spx@opt@TitleColor + \@tempa\definecolor{InnerLinkColor} \spx@opt@InnerLinkColor + \@tempa\definecolor{OuterLinkColor} \spx@opt@OuterLinkColor + \@tempa\definecolor{VerbatimColor} \spx@opt@VerbatimColor + \@tempa\definecolor{VerbatimBorderColor} \spx@opt@VerbatimBorderColor + \@tempa\definecolor{sphinxnotebordercolor} \spx@opt@notebordercolor + \@tempa\definecolor{sphinxhintbordercolor} \spx@opt@hintbordercolor + \@tempa\definecolor{sphinximportantbordercolor}\spx@opt@importantbordercolor + \@tempa\definecolor{sphinxtipbordercolor} \spx@opt@tipbordercolor + \@tempa\definecolor{sphinxwarningbordercolor} \spx@opt@warningbordercolor + \@tempa\definecolor{sphinxcautionbordercolor} \spx@opt@cautionbordercolor + \@tempa\definecolor{sphinxattentionbordercolor}\spx@opt@attentionbordercolor + \@tempa\definecolor{sphinxdangerbordercolor} \spx@opt@dangerbordercolor + \@tempa\definecolor{sphinxerrorbordercolor} \spx@opt@errorbordercolor + \@tempa\definecolor{sphinxwarningbgcolor} \spx@opt@warningbgcolor + \@tempa\definecolor{sphinxcautionbgcolor} \spx@opt@cautionbgcolor + \@tempa\definecolor{sphinxattentionbgcolor} \spx@opt@attentionbgcolor + \@tempa\definecolor{sphinxdangerbgcolor} \spx@opt@dangerbgcolor + \@tempa\definecolor{sphinxerrorbgcolor} \spx@opt@errorbgcolor +} +% additional user interface: options can be changed midway in a document! +\newcommand\sphinxsetup[1]{\setkeys{sphinx}{#1}\sphinx@setup} % this is the \ltx@ifundefined of ltxcmds.sty, which is loaded by % hyperref.sty, but we need it before, and the first release of @@ -72,14 +179,8 @@ % Display "real" single quotes in literal blocks. \RequirePackage{upquote} -% Redefine these colors to your liking in the preamble. -\definecolor{TitleColor}{rgb}{0.126,0.263,0.361} -\definecolor{InnerLinkColor}{rgb}{0.208,0.374,0.486} -\definecolor{OuterLinkColor}{rgb}{0.216,0.439,0.388} -% Redefine these colors to something if you want to have colored -% background and border for code examples. -\definecolor{VerbatimColor}{rgb}{1,1,1} -\definecolor{VerbatimBorderColor}{rgb}{0,0,0} +% Initialize style parameters +\sphinx@setup % FIXME: the reasons might be obsolete (better color drivers now?) % use pdfoutput for pTeX and dvipdfmx @@ -117,8 +218,7 @@ \pagestyle{empty} % start this way % Use this to set the font family for headers and other decor: -\newcommand{\py@HeaderFamily}{\sffamily\bfseries} -\newcommand{\sphinxSetHeaderFamily}[1]{\renewcommand{\py@HeaderFamily}{#1}} +\newcommand{\py@HeaderFamily}{\spx@opt@HeaderFamily} % Redefine the 'normal' header/footer style when using "fancyhdr" package: \spx@ifundefined{fancyhf}{}{ @@ -147,7 +247,7 @@ } % Some custom font markup commands. -% *** the macros without \sphinx prefix are still defined at bottom of file *** +% *** the macros without \sphinx prefix are still defined near end of file *** \newcommand{\sphinxstrong}[1]{{\textbf{#1}}} % to obtain straight quotes we execute \@noligs as patched by upquote, the % macro must be robust in case it is used in captions e.g., and \scantokens is @@ -165,9 +265,9 @@ \newcommand{\sphinxcrossref}[1]{\emph{#1}} \newcommand{\sphinxtermref}[1]{\emph{#1}} -% miscellaneous related to footnotes -\newcommand*{\sphinxAtStartFootnote}{\mbox{ }} -% Support large numbered footnotes in minipage (cf. admonitions) +% Support large numbered footnotes in minipage +% But now obsolete due to systematic use of \savenotes/\spewnotes +% when minipages are in use in the various macro definitions next. \def\thempfootnote{\arabic{mpfootnote}} % Code-blocks @@ -185,10 +285,6 @@ \let\endOriginalVerbatim\endVerbatim \newif\ifspx@inframed % flag set if we are already in a framed environment -\newdimen\sphinxverbatimsep \sphinxverbatimsep \fboxsep % default 3pt -\newdimen\sphinxverbatimborder\sphinxverbatimborder\fboxrule % default 0.4pt -\newif\ifsphinxverbatimwithframe \sphinxverbatimwithframetrue -\newif\ifsphinxverbatimwrapslines \sphinxverbatimwrapslinestrue % if forced use of minipage encapsulation is needed (e.g. table cells) \newif\ifsphinxverbatimwithminipage \sphinxverbatimwithminipagefalse \newcommand\spx@colorbox [2]{% @@ -266,6 +362,7 @@ \newbox\sphinxvisiblespacebox % Customize this via 'preamble' key if desired. % Use of \textvisiblespace for compatibility with XeTeX/LuaTeX/fontspec. +% FIXME: convert this to package options \newcommand*\sphinxvisiblespace {\textcolor{red}{\textvisiblespace}} \newcommand*\sphinxcontinuationsymbol {\textcolor{red}{\llap{\tiny$\m@th\hookrightarrow$}}} \newcommand*\sphinxcontinuationindent {3ex } @@ -276,6 +373,7 @@ % {, <, #, %, $, ' and ": go to next line. % _, }, ^, &, >, - and ~: stay at end of broken line. % Use of \textquotesingle for straight quote. +% FIXME: convert this to package options \newcommand*\sphinxbreaksbeforelist {% \do\PYGZob\{\do\PYGZlt\<\do\PYGZsh\#\do\PYGZpc\%% {, <, #, %, \do\PYGZdl\$\do\PYGZdq\"% $, " @@ -342,7 +440,7 @@ \fi \fboxsep\sphinxverbatimsep \fboxrule\sphinxverbatimborder % setting borderwidth to zero is simplest for no-frame effect with same pagebreaks - \ifsphinxverbatimwithframe\else\fboxrule\z@\fi + \ifspx@opt@verbatimwithframe\else\fboxrule\z@\fi % Customize framed.sty \MakeFramed to glue caption to literal block % via \spx@fcolorbox, will use \spx@VerbatimFBox which inserts title \def\FrameCommand {\spx@colorbox\spx@fcolorbox }% @@ -350,7 +448,7 @@ % for mid pages and last page portion of (long) split frame: \def\MidFrameCommand{\spx@colorbox\fcolorbox }% \let\LastFrameCommand\MidFrameCommand - \ifsphinxverbatimwrapslines + \ifspx@opt@verbatimwrapslines % fancyvrb's Verbatim puts each input line in (unbreakable) horizontal boxes. % This customization wraps each line from the input in a \vtop, thus % allowing it to wrap and display on two or more lines in the latex output. @@ -405,7 +503,7 @@ % For grid placement from \strut's in \FancyVerbFormatLine \lineskip\z@skip % active comma should not be overwritten by \@noligs - \ifsphinxverbatimwrapslines + \ifspx@opt@verbatimwrapslines \let\verbatim@nolig@list \sphinx@verbatim@nolig@list \fi % will fetch its optional arguments if any @@ -418,14 +516,14 @@ \endtrivlist } \newenvironment {sphinxVerbatimNoFrame} - {\sphinxverbatimwithframefalse + {\spx@opt@verbatimwithframefalse % needed for fancyvrb as literal code will end in \end{sphinxVerbatimNoFrame} \def\sphinxVerbatimEnvironment{\gdef\FV@EnvironName{sphinxVerbatimNoFrame}}% \begin{sphinxVerbatim}} {\end{sphinxVerbatim}} \newenvironment {sphinxVerbatimintable} {% don't use a frame if in a table cell - \sphinxverbatimwithframefalse + \spx@opt@verbatimwithframefalse \sphinxverbatimwithminipagetrue % counteract longtable redefinition of caption \let\caption\sphinxfigcaption @@ -438,15 +536,6 @@ % Topic boxes % Again based on use of "framed.sty", this allows breakable framed boxes. - -% define macro to frame contents and add shadow on right and bottom -% use public names for customizable lengths -\newlength\sphinxshadowsep \setlength\sphinxshadowsep {5pt} -\newlength\sphinxshadowsize \setlength\sphinxshadowsize {4pt} -\newlength\sphinxshadowrule -% this uses \fboxrule value at loading time of sphinx.sty (0.4pt normally) -\setlength\sphinxshadowrule {\fboxrule} - \long\def\spx@ShadowFBox#1{% \leavevmode\begingroup % first we frame the box #1 @@ -546,13 +635,13 @@ % {fulllineitems} is the main environment for object descriptions. % \newcommand{\py@itemnewline}[1]{% - \@tempdima\linewidth% + \@tempdima\linewidth \advance\@tempdima \leftmargin\makebox[\@tempdima][l]{#1}% } \newenvironment{fulllineitems}{ - \begin{list}{}{\labelwidth \leftmargin \labelsep 0pt - \rightmargin 0pt \topsep -\parskip \partopsep \parskip + \begin{list}{}{\labelwidth \leftmargin \labelsep \z@ + \rightmargin \z@ \topsep -\parskip \partopsep \parskip \itemsep -\parsep \let\makelabel=\py@itemnewline} }{\end{list}} @@ -573,14 +662,14 @@ % Production lists % -\newenvironment{productionlist}{ +\newenvironment{productionlist}{% % \def\sphinxoptional##1{{\Large[}##1{\Large]}} - \def\production##1##2{\\\sphinxcode{##1}&::=&\sphinxcode{##2}} - \def\productioncont##1{\\& &\sphinxcode{##1}} + \def\production##1##2{\\\sphinxcode{##1}&::=&\sphinxcode{##2}}% + \def\productioncont##1{\\& &\sphinxcode{##1}}% \parindent=2em \indent - \setlength{\LTpre}{0pt} - \setlength{\LTpost}{0pt} + \setlength{\LTpre}{0pt}% + \setlength{\LTpost}{0pt}% \begin{longtable}[l]{lcl} }{% \end{longtable} @@ -589,6 +678,7 @@ % Notices / Admonitions % Some are quite plain +% the spx@notice@bordercolor etc are set in the sphinxadmonition environment \newenvironment{sphinxlightbox}{% \par\allowbreak \noindent{\color{spx@notice@bordercolor}% @@ -614,25 +704,16 @@ {\begin{sphinxlightbox}\sphinxstrong{#1} }{\end{sphinxlightbox}} \newenvironment{sphinxtip}[1] {\begin{sphinxlightbox}\sphinxstrong{#1} }{\end{sphinxlightbox}} -% or user may just customize the bordercolor and the border width -% re-use \definecolor if change needed, and \renewcommand for rule width -\definecolor{sphinxnotebordercolor}{rgb}{0,0,0} -\definecolor{sphinxhintbordercolor}{rgb}{0,0,0} -\definecolor{sphinximportantbordercolor}{rgb}{0,0,0} -\definecolor{sphinxtipbordercolor}{rgb}{0,0,0} -\newcommand{\sphinxnoteborder}{0.5pt} -\newcommand{\sphinxhintborder}{0.5pt} -\newcommand{\sphinximportantborder}{0.5pt} -\newcommand{\sphinxtipborder}{0.5pt} +% or just use the package options % these are needed for common handling by notice environment of lightbox % and heavybox but they are currently not used by lightbox environment +% and there is consequently no corresponding package option \definecolor{sphinxnotebgcolor}{rgb}{1,1,1} \definecolor{sphinxhintbgcolor}{rgb}{1,1,1} \definecolor{sphinximportantbgcolor}{rgb}{1,1,1} \definecolor{sphinxtipbgcolor}{rgb}{1,1,1} % Others get more distinction -\newdimen\spx@notice@border % Code adapted from framed.sty's "snugshade" environment. % Nesting works (inner frames do not allow page breaks). \newenvironment{sphinxheavybox}{\par @@ -689,22 +770,7 @@ {\begin{sphinxheavybox}\sphinxstrong{#1} }{\end{sphinxheavybox}} \newenvironment{sphinxerror}[1] {\begin{sphinxheavybox}\sphinxstrong{#1} }{\end{sphinxheavybox}} -% or just re-do \definecolor for colours, \renewcommand for frame width -\definecolor{sphinxwarningbordercolor}{rgb}{0,0,0} -\definecolor{sphinxcautionbordercolor}{rgb}{0,0,0} -\definecolor{sphinxattentionbordercolor}{rgb}{0,0,0} -\definecolor{sphinxdangerbordercolor}{rgb}{0,0,0} -\definecolor{sphinxerrorbordercolor}{rgb}{0,0,0} -\definecolor{sphinxwarningbgcolor}{rgb}{1,1,1} -\definecolor{sphinxcautionbgcolor}{rgb}{1,1,1} -\definecolor{sphinxattentionbgcolor}{rgb}{1,1,1} -\definecolor{sphinxdangerbgcolor}{rgb}{1,1,1} -\definecolor{sphinxerrorbgcolor}{rgb}{1,1,1} -\newcommand{\sphinxwarningborder}{1pt} -\newcommand{\sphinxcautionborder}{1pt} -\newcommand{\sphinxattentionborder}{1pt} -\newcommand{\sphinxdangerborder}{1pt} -\newcommand{\sphinxerrorborder}{1pt} +% or just use package options % the \colorlet of xcolor (if at all loaded) is overkill for our use case \newcommand{\sphinxcolorlet}[2] @@ -721,7 +787,7 @@ % set parameters of heavybox/lightbox \sphinxcolorlet{spx@notice@bordercolor}{sphinx#1bordercolor}% \sphinxcolorlet{spx@notice@bgcolor}{sphinx#1bgcolor}% - \setlength\spx@notice@border {\dimexpr\csname sphinx#1border\endcsname\relax}% + \spx@notice@border \dimexpr\csname sphinx#1border\endcsname\relax % start specific environment, passing the heading as argument \begin{sphinx#1}{#2}} % in end part, need to go around a LaTeX's "feature" @@ -778,9 +844,9 @@ % Redefine description environment so that it is usable inside fulllineitems. % \renewcommand{\description}{% - \list{}{\labelwidth\z@% - \itemindent-\leftmargin% - \labelsep5pt% + \list{}{\labelwidth\z@ + \itemindent-\leftmargin + \labelsep5pt\relax \let\makelabel=\descriptionlabel}} % Definition lists; requested by AMK for HOWTO documents. Probably useful @@ -788,7 +854,7 @@ % \newenvironment{definitions}{% \begin{description}% - \def\term##1{\item[{##1}]\mbox{}\\*[0mm]} + \def\term##1{\item[{##1}]\mbox{}\\*[0mm]}% }{% \end{description}% } @@ -816,7 +882,7 @@ {\setlength{\partopsep}{\parskip} \addtolength{\partopsep}{\baselineskip} \topsep0pt\itemsep0.15\baselineskip\parsep0pt - \leftmargin#1} + \leftmargin#1\relax} \raggedright} {\end{list}} @@ -862,19 +928,26 @@ \fi \fi +% These options can be overriden inside 'hyperref' key +% or by later use of \hypersetup. +\PassOptionsToPackage{colorlinks,breaklinks,% + linkcolor=InnerLinkColor,filecolor=OuterLinkColor,% + menucolor=OuterLinkColor,urlcolor=OuterLinkColor,% + citecolor=InnerLinkColor}{hyperref} + % From docutils.writers.latex2e % inline markup (custom roles) % \DUrole{#1}{#2} tries \DUrole#1{#2} \providecommand*{\DUrole}[2]{% - \ifcsname DUrole#1\endcsname% + \ifcsname DUrole#1\endcsname \csname DUrole#1\endcsname{#2}% \else% backwards compatibility: try \docutilsrole#1{#2} - \ifcsname docutilsrole#1\endcsname% + \ifcsname docutilsrole#1\endcsname \csname docutilsrole#1\endcsname{#2}% - \else% + \else #2% - \fi% - \fi% + \fi + \fi } \providecommand*{\DUprovidelength}[2]{% @@ -987,6 +1060,7 @@ \fi % additional customizable styling +% FIXME: convert this to package options ? \newcommand*{\sphinxstyleindexentry}{\texttt} \newcommand{\sphinxstyleindexextra}[1]{ \emph{(#1)}} \newcommand*{\sphinxstyleindexpageref}{, \pageref} diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 73925791a..4ffafc66e 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -52,6 +52,7 @@ DEFAULT_SETTINGS = { 'classoptions': '', 'extraclassoptions': '', 'maxlistdepth': '', + 'sphinxpackageoptions': '', 'passoptionstopackages': '', 'geometry': '\\usepackage[margin=1in,marginparwidth=0.5in]' '{geometry}', @@ -69,13 +70,7 @@ DEFAULT_SETTINGS = { 'fncychap': '\\usepackage[Bjarne]{fncychap}', 'longtable': '\\usepackage{longtable}', 'hyperref': ('% Include hyperref last.\n' - '\\usepackage[colorlinks,breaklinks,%\n' - ' ' - 'linkcolor=InnerLinkColor,filecolor=OuterLinkColor,%\n' - ' ' - 'menucolor=OuterLinkColor,urlcolor=OuterLinkColor,%\n' - ' ' - 'citecolor=InnerLinkColor]{hyperref}\n' + '\\usepackage{hyperref}\n' '% Fix anchor placement for figures with captions.\n' '\\usepackage{hypcap}% it must be loaded after hyperref.\n' '% Set up styles of URL: it should be placed after hyperref.\n' @@ -377,7 +372,7 @@ class LaTeXTranslator(nodes.NodeVisitor): }) sphinxpkgoptions = '' if not builder.config.latex_keep_old_macro_names: - sphinxpkgoptions = 'dontkeepoldnames' + sphinxpkgoptions = ',dontkeepoldnames' if document.settings.docclass == 'howto': docclass = builder.config.latex_docclass.get('howto', 'article') else: @@ -454,8 +449,7 @@ class LaTeXTranslator(nodes.NodeVisitor): if self.elements['maxlistdepth']: sphinxpkgoptions += ',maxlistdepth=%s' % self.elements['maxlistdepth'] if sphinxpkgoptions: - self.elements['passoptionstosphinx'] = \ - '\\PassOptionsToPackage{%s}{sphinx}' % sphinxpkgoptions + self.elements['sphinxpackageoptions'] += sphinxpkgoptions if self.elements['extraclassoptions']: self.elements['classoptions'] += ',' + \ self.elements['extraclassoptions'] From 67a785c2ab612047a0c6bdf2534fa65610bc577f Mon Sep 17 00:00:00 2001 From: jfbu Date: Fri, 28 Oct 2016 17:01:14 +0200 Subject: [PATCH 145/297] use less macros for dimension parameters in LaTeX styling --- sphinx/texinputs/sphinx.sty | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index ce4088e91..ee186e211 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -77,10 +77,11 @@ \newdimen\sphinxshadowsep \newdimen\sphinxshadowsize \newdimen\sphinxshadowrule -% This one is dynamical, don't set it. +% Other dimensions are set by the options and kept as \spx@opt@ prefix macros +% They are assigned to \spx@notice@border at time of use (sphinxadmonition) \newdimen\spx@notice@border -% Other dimensions are customizable by options and declare macros. +% The \sphinx@setup execution is delayed to after having loaded color/xcolor \newcommand*\sphinx@setup {% \sphinxverbatimsep \dimexpr\spx@opt@verbatimsep \relax @@ -88,17 +89,6 @@ \sphinxshadowsep \dimexpr\spx@opt@shadowsep \relax \sphinxshadowsize \dimexpr\spx@opt@shadowsize \relax \sphinxshadowrule \dimexpr\spx@opt@shadowrule \relax - % they will be embedded in \dimexpr ... \relax at time of use - \let\sphinxnoteborder \spx@opt@noteborder - \let\sphinxhintborder \spx@opt@hintborder - \let\sphinximportantborder\spx@opt@importantborder - \let\sphinxtipborder \spx@opt@tipborder - \let\sphinxwarningborder \spx@opt@warningborder - \let\sphinxcautionborder \spx@opt@cautionborder - \let\sphinxattentionborder\spx@opt@attentionborder - \let\sphinxdangerborder \spx@opt@dangerborder - \let\sphinxerrorborder \spx@opt@errorborder - % first execution of \sphinx@setup will be after having loaded color/xcolor \def\@tempa ##1##2##3{\edef\@tempb{\noexpand##1{##2}##3}\@tempb}% \@tempa\definecolor{TitleColor} \spx@opt@TitleColor \@tempa\definecolor{InnerLinkColor} \spx@opt@InnerLinkColor @@ -787,7 +777,7 @@ % set parameters of heavybox/lightbox \sphinxcolorlet{spx@notice@bordercolor}{sphinx#1bordercolor}% \sphinxcolorlet{spx@notice@bgcolor}{sphinx#1bgcolor}% - \spx@notice@border \dimexpr\csname sphinx#1border\endcsname\relax + \spx@notice@border \dimexpr\csname spx@opt@#1border\endcsname\relax % start specific environment, passing the heading as argument \begin{sphinx#1}{#2}} % in end part, need to go around a LaTeX's "feature" From b6695ad7fc8d0b78cbb40530c368c9b68f63bea4 Mon Sep 17 00:00:00 2001 From: jfbu Date: Fri, 28 Oct 2016 21:45:44 +0200 Subject: [PATCH 146/297] use 'sphinxpackageoptions' as argument to ``\sphinxsetup`` Indeed, LaTeX's handling of package options is not robust when options contain LaTeX macros; thus we pass all the user customization to ``\sphinxsetup``, not as package options to "sphinx.sty". Also, make parameters for long code line breaking (ref #2343, 1.4.2) accessible as sub-keys of 'sphinxpackageoptions'. The space reserved for the continuation character has been modified for coherence and compatibility with use in footnotes. In fact it did not use the correct font for the dimension computation. The documentation explains how to recover former value. --- doc/latex.rst | 84 ++++++++++++++++++++-------- sphinx/templates/latex/content.tex_t | 3 +- sphinx/texinputs/sphinx.sty | 26 ++++----- sphinx/writers/latex.py | 12 ++-- 4 files changed, 80 insertions(+), 45 deletions(-) diff --git a/doc/latex.rst b/doc/latex.rst index 555b04483..df2e26ac0 100644 --- a/doc/latex.rst +++ b/doc/latex.rst @@ -11,8 +11,12 @@ LaTeX customization The *latex* target does not benefit from pre-prepared themes like the *html* target does (see :doc:`theming`). -Basic customization is available from ``conf.py`` via usage of the -:ref:`latex-options` as described in :doc:`config`. For example:: +Basic customization +------------------- + +It is available from ``conf.py`` via usage of the +:ref:`latex-options` as described in :doc:`config` (backslashes must be doubled +in Python string literals to reach latex.) For example:: # inside conf.py latex_engine = 'xelatex' @@ -56,36 +60,46 @@ configured, for example:: latex_additional_files = ["mystyle.sty"] -Such *LaTeX Sphinx theme* files could possibly be contributed in the -future by advanced users for wider use. +The Sphinx LaTeX style package options +-------------------------------------- The ``'sphinxpackageoptions'`` key to :confval:`latex_elements` provides a more convenient interface to various style parameters. It is a comma separated -string of ``key=value`` instructions:: +string of ``key=value`` instructions (if a key is repeated, it is its last +occurence which counts):: key1=value1,key2=value2, ... -which will be passed as the optional parameter to the Sphinx LaTeX style \file:: +which will be used as argument to the ``\sphinxsetup`` command:: - \usepackage[]{sphinx} - -It is possible to modify later the options (even midway in the -document using a ``.. raw:: latex`` directive) via use of the command -``\sphinxsetup{}``, with the same option ``key=value`` syntax. + \usepackage{sphinx} + \sphinxsetup{key1=value1,key2=value2,...} .. versionadded:: 1.5 -Here is the current list: +.. note:: + + Almost all options described next could be positioned as :file:`sphinx.sty` + package options. But when the key value contains some LaTeX code there are + issues with LaTeX's processing and the use of ``\sphinxsetup`` is mandatory. + +.. hint:: + + It is possible to use again ``\sphinxsetup`` in the preamble, via the + ``'preamble'`` key, or even in the body of the document, via the + :rst:dir:`raw` directive. + +Here is the list of currently available keys with their default values. ``verbatimwithframe`` - default ``true``. Boolean to use or not frames around - :rst:dir:`code-block`\ s and literal includes. Setting it to ``false`` - does not deactivate use of package "framed", because it is still in use - for the optional background colour (see below). + default ``true``. Boolean to specify if :rst:dir:`code-block`\ s and literal + includes are framed. Setting it to ``false`` does not deactivate use of + package "framed", because it is still in use for the optional background + colour (see below). .. attention:: - LaTeX wants *lowercase* ``=true`` or ``=false`` here. + LaTeX requires ``=true`` or ``=false`` in *lowercase*. ``verbatimwrapslines`` default ``true``. Tells whether long lines in :rst:dir:`code-block`\ s @@ -94,6 +108,32 @@ Here is the current list: before or after, but this is accessible currently only by re-defining some macros with complicated LaTeX syntax from :file:`sphinx.sty`. +``verbatimvisiblespace`` + default ``\\textcolor{red}{\\textvisiblespace}``. When a long code line is + split, space characters located at end of the line before the break are + displayed using this code. + +``verbatimcontinued`` + default + ``\\makebox[2\\fontcharwd\\font`\\x][r]{\\textcolor{red}{\\tiny$\\hookrightarrow$}}``. + This is printed at start of continuation lines. This rather formidable + expression has the effect of reserving twice the width of a typical + character in the current font and uses there a small red hook symbol pointing + to the right. + + .. versionchanged:: 1.5 + The breaking of long code lines was introduced at 1.4.2. The space + reserved to the continuation symbol (but not the symbol itself) was + changed at 1.5 to obey the current font characteristics (this was needed + as Sphinx 1.5 LaTeX allows code-blocks in footnotes which use a smaller + font size). + + .. hint:: + + To recover exact same indent as earlier the + ``\\normalfont\\normalsize\\makebox[3ex][r]{...}`` specification + should be used. + ``TitleColor`` default ``{rgb}{0.126,0.263,0.361}``. The colour for titles (as configured via use of package "titlesec".) It must obey the syntax of the @@ -229,6 +269,9 @@ Here is the current list: In the future, possibly more keys will be made available. As seen above, they may even be used for LaTeX commands. +The LaTeX environments defined by Sphinx +---------------------------------------- + Let us now list some macros from the package file :file:`sphinx.sty` and class file :file:`sphinxhowto.cls` or :file:`sphinxmanual.cls`, which can be entirely redefined, if desired. @@ -326,13 +369,6 @@ Let us now list some macros from the package file .. versionchanged:: 1.5 formerly, the original environments were modified by Sphinx. -.. note:: - - It is impossible to revert or prevent the loading of a package that results - from a ``\usepackage`` executed from inside the :file:`sphinx.sty` style - file. Sphinx aims at loading as few packages as are really needed for its - default design. - .. hint:: As an experimental feature, Sphinx can use user-defined template file for diff --git a/sphinx/templates/latex/content.tex_t b/sphinx/templates/latex/content.tex_t index f63fac6d1..ae642119e 100644 --- a/sphinx/templates/latex/content.tex_t +++ b/sphinx/templates/latex/content.tex_t @@ -15,7 +15,8 @@ <%= fontpkg %> <%= fncychap %> <%= longtable %> -\usepackage[<%= sphinxpackageoptions %>]{sphinx} +\usepackage<%= sphinxpkgoptions %>{sphinx} +\sphinxsetup{<%= sphinxpackageoptions %>} \usepackage{multirow} \usepackage{eqparbox} <%= usepackages %> diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index ee186e211..9a21383e6 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -27,6 +27,11 @@ \DeclareStringOption[\fboxrule]{verbatimborder} \DeclareBoolOption[true]{verbatimwithframe} \DeclareBoolOption[true]{verbatimwrapslines} +% \textvisiblespace for compatibility with fontspec+XeTeX/LuaTeX +\DeclareStringOption[\textcolor{red}{\textvisiblespace}]{verbatimvisiblespace} +\DeclareStringOption % must use braces to hide the brackets + [{\makebox[2\fontcharwd\font`\x][r]{\textcolor{red}{\tiny$\m@th\hookrightarrow$}}}]% + {verbatimcontinued} % topic boxes \DeclareStringOption[5pt]{shadowsep} \DeclareStringOption[4pt]{shadowsize} @@ -56,16 +61,15 @@ \DeclareStringOption[1pt]{attentionborder} \DeclareStringOption[1pt]{dangerborder} \DeclareStringOption[1pt]{errorborder} - % Footnotes \DeclareStringOption[\mbox{ }]{AtStartFootnote} % we need a public macro name for direct use in latex file \newcommand*{\sphinxAtStartFootnote}{\spx@opt@AtStartFootnote} % no such need for this one, used inside other macros \DeclareStringOption[\leavevmode\unskip]{BeforeFootnote} - % some font styling. \DeclareStringOption[\sffamily\bfseries]{HeaderFamily} + \DeclareDefaultOption{\@unknownoptionerror} \ProcessKeyvalOptions* % don't allow use of maxlistdepth via \sphinxsetup. @@ -81,7 +85,6 @@ % They are assigned to \spx@notice@border at time of use (sphinxadmonition) \newdimen\spx@notice@border -% The \sphinx@setup execution is delayed to after having loaded color/xcolor \newcommand*\sphinx@setup {% \sphinxverbatimsep \dimexpr\spx@opt@verbatimsep \relax @@ -111,6 +114,7 @@ \@tempa\definecolor{sphinxerrorbgcolor} \spx@opt@errorbgcolor } % additional user interface: options can be changed midway in a document! +% the command will be executed only after package has finished loading. \newcommand\sphinxsetup[1]{\setkeys{sphinx}{#1}\sphinx@setup} % this is the \ltx@ifundefined of ltxcmds.sty, which is loaded by @@ -169,9 +173,6 @@ % Display "real" single quotes in literal blocks. \RequirePackage{upquote} -% Initialize style parameters -\sphinx@setup - % FIXME: the reasons might be obsolete (better color drivers now?) % use pdfoutput for pTeX and dvipdfmx % when pTeX (\kanjiskip is defined), set pdfoutput to evade \include{pdfcolor} @@ -350,13 +351,7 @@ % For linebreaks inside Verbatim environment from package fancyvrb. \newbox\sphinxcontinuationbox \newbox\sphinxvisiblespacebox -% Customize this via 'preamble' key if desired. -% Use of \textvisiblespace for compatibility with XeTeX/LuaTeX/fontspec. -% FIXME: convert this to package options -\newcommand*\sphinxvisiblespace {\textcolor{red}{\textvisiblespace}} -\newcommand*\sphinxcontinuationsymbol {\textcolor{red}{\llap{\tiny$\m@th\hookrightarrow$}}} -\newcommand*\sphinxcontinuationindent {3ex } -\newcommand*\sphinxafterbreak {\kern\sphinxcontinuationindent\copy\sphinxcontinuationbox} +\newcommand*\sphinxafterbreak {\copy\sphinxcontinuationbox} % Take advantage of the already applied Pygments mark-up to insert % potential linebreaks for TeX processing. @@ -447,8 +442,9 @@ % to achieve this without extensive rewrite of fancyvrb. % - The (not used in sphinx) obeytabs option to Verbatim is % broken by this change (showtabs and tabspace work). - \sbox\sphinxcontinuationbox {\sphinxcontinuationsymbol}% - \sbox\sphinxvisiblespacebox {\FV@SetupFont\sphinxvisiblespace}% + \expandafter\def\expandafter\FV@SetupFont\expandafter + {\FV@SetupFont\sbox\sphinxcontinuationbox {\spx@opt@verbatimcontinued}% + \sbox\sphinxvisiblespacebox {\spx@opt@verbatimvisiblespace}}% \def\FancyVerbFormatLine ##1{\hsize\linewidth \vtop{\raggedright\hyphenpenalty\z@\exhyphenpenalty\z@ \doublehyphendemerits\z@\finalhyphendemerits\z@ diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 4ffafc66e..9f29e466e 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -52,6 +52,7 @@ DEFAULT_SETTINGS = { 'classoptions': '', 'extraclassoptions': '', 'maxlistdepth': '', + 'sphinxpkgoptions': '', 'sphinxpackageoptions': '', 'passoptionstopackages': '', 'geometry': '\\usepackage[margin=1in,marginparwidth=0.5in]' @@ -370,9 +371,8 @@ class LaTeXTranslator(nodes.NodeVisitor): 'releasename': _('Release'), 'indexname': _('Index'), }) - sphinxpkgoptions = '' if not builder.config.latex_keep_old_macro_names: - sphinxpkgoptions = ',dontkeepoldnames' + self.elements['sphinxpkgoptions'] = 'dontkeepoldnames' if document.settings.docclass == 'howto': docclass = builder.config.latex_docclass.get('howto', 'article') else: @@ -447,9 +447,11 @@ class LaTeXTranslator(nodes.NodeVisitor): self.check_latex_elements() self.elements.update(builder.config.latex_elements) if self.elements['maxlistdepth']: - sphinxpkgoptions += ',maxlistdepth=%s' % self.elements['maxlistdepth'] - if sphinxpkgoptions: - self.elements['sphinxpackageoptions'] += sphinxpkgoptions + self.elements['sphinxpkgoptions'] += (',maxlistdepth=%s' % + self.elements['maxlistdepth']) + if self.elements['sphinxpkgoptions']: + self.elements['sphinxpkgoptions'] = ('[%s]' % + self.elements['sphinxpkgoptions']) if self.elements['extraclassoptions']: self.elements['classoptions'] += ',' + \ self.elements['extraclassoptions'] From ed87e531bd1c407d47e0e7f2bb219b41568a744c Mon Sep 17 00:00:00 2001 From: Timotheus Kampik Date: Fri, 28 Oct 2016 23:37:50 +0200 Subject: [PATCH 147/297] use pushd and popd to enable bat build from different dir #2215 (now with correct line endings) --- sphinx/templates/quickstart/make.bat.new_t | 4 +++- sphinx/templates/quickstart/make.bat_t | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/sphinx/templates/quickstart/make.bat.new_t b/sphinx/templates/quickstart/make.bat.new_t index 4ed82305c..49c117458 100644 --- a/sphinx/templates/quickstart/make.bat.new_t +++ b/sphinx/templates/quickstart/make.bat.new_t @@ -1,5 +1,7 @@ @ECHO OFF +pushd %~dp0 + REM Command file for Sphinx documentation if "%SPHINXBUILD%" == "" ( @@ -31,4 +33,4 @@ goto end %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% :end - +popd diff --git a/sphinx/templates/quickstart/make.bat_t b/sphinx/templates/quickstart/make.bat_t index 88a8fa9d9..b19cfe9a8 100644 --- a/sphinx/templates/quickstart/make.bat_t +++ b/sphinx/templates/quickstart/make.bat_t @@ -2,6 +2,8 @@ REM Command file for Sphinx documentation +pushd %~dp0 + if "%SPHINXBUILD%" == "" ( set SPHINXBUILD=sphinx-build ) @@ -279,4 +281,4 @@ if "%1" == "dummy" ( ) :end - +popd From 528b6c374c9ca3ba6f80817a3253e1207f286ef6 Mon Sep 17 00:00:00 2001 From: jfbu Date: Sat, 29 Oct 2016 14:03:12 +0200 Subject: [PATCH 148/297] refactor the handling of latex options previously, modifying a single option via ``\sphinxsetup`` redeclared all dimensions and colours, even if they had not changed. --- doc/latex.rst | 74 ++++---- sphinx/templates/latex/content.tex_t | 2 +- sphinx/texinputs/sphinx.sty | 245 +++++++++++++-------------- sphinx/writers/latex.py | 11 +- 4 files changed, 173 insertions(+), 159 deletions(-) diff --git a/doc/latex.rst b/doc/latex.rst index df2e26ac0..0f49b66dc 100644 --- a/doc/latex.rst +++ b/doc/latex.rst @@ -63,14 +63,18 @@ configured, for example:: The Sphinx LaTeX style package options -------------------------------------- +.. highlight:: latex + The ``'sphinxpackageoptions'`` key to :confval:`latex_elements` provides a more convenient interface to various style parameters. It is a comma separated -string of ``key=value`` instructions (if a key is repeated, it is its last -occurence which counts):: +string of ``key=value`` instructions:: key1=value1,key2=value2, ... -which will be used as argument to the ``\sphinxsetup`` command:: +- if a key is repeated, it is its last occurence which counts, +- spaces around the commas and equal signs are ignored. + +If non-empty, it will be passed as argument to the ``\sphinxsetup`` command:: \usepackage{sphinx} \sphinxsetup{key1=value1,key2=value2,...} @@ -79,17 +83,19 @@ which will be used as argument to the ``\sphinxsetup`` command:: .. note:: - Almost all options described next could be positioned as :file:`sphinx.sty` - package options. But when the key value contains some LaTeX code there are - issues with LaTeX's processing and the use of ``\sphinxsetup`` is mandatory. + - Most options described next could also have been positioned as + :file:`sphinx.sty` package options. But for those where the key value + contains some LaTeX code the use of ``\sphinxsetup`` is mandatory. Hence + the whole ``'sphinxpackageoptions'`` string is passed as argument to + ``\sphinxsetup``. -.. hint:: + - As an alternative to the ``'sphinxpackageoptions'`` key, it is possibly + to insert explicitely the ``\\sphinxsetup{key=value,..}`` inside the + ``'preamble'`` key. It is even possible to use the ``\sphinxsetup`` in + the body of the document, via the :rst:dir:`raw` directive, to modify + dynamically the option values. - It is possible to use again ``\sphinxsetup`` in the preamble, via the - ``'preamble'`` key, or even in the body of the document, via the - :rst:dir:`raw` directive. - -Here is the list of currently available keys with their default values. +Here are the currently available options together with their default values. ``verbatimwithframe`` default ``true``. Boolean to specify if :rst:dir:`code-block`\ s and literal @@ -99,14 +105,16 @@ Here is the list of currently available keys with their default values. .. attention:: - LaTeX requires ``=true`` or ``=false`` in *lowercase*. + LaTeX requires ``true`` or ``false`` to be specified in *lowercase*. ``verbatimwrapslines`` default ``true``. Tells whether long lines in :rst:dir:`code-block`\ s - should be wrapped. It is theoretically possible to customize this even - more and decide at which characters a line-break can occur and whether - before or after, but this is accessible currently only by re-defining some - macros with complicated LaTeX syntax from :file:`sphinx.sty`. + should be wrapped. + + .. (comment) It is theoretically possible to customize this even + more and decide at which characters a line-break can occur and whether + before or after, but this is accessible currently only by re-defining some + macros with complicated LaTeX syntax from :file:`sphinx.sty`. ``verbatimvisiblespace`` default ``\\textcolor{red}{\\textvisiblespace}``. When a long code line is @@ -114,25 +122,25 @@ Here is the list of currently available keys with their default values. displayed using this code. ``verbatimcontinued`` - default - ``\\makebox[2\\fontcharwd\\font`\\x][r]{\\textcolor{red}{\\tiny$\\hookrightarrow$}}``. - This is printed at start of continuation lines. This rather formidable - expression has the effect of reserving twice the width of a typical - character in the current font and uses there a small red hook symbol pointing - to the right. + The default is:: + + \\makebox[2\\fontcharwd\\font`\\x][r]{\\textcolor{red}{\\tiny$\\hookrightarrow$}} + + It is printed at start of continuation lines. This rather formidable + expression reserves twice the width of a typical character in the current + (monospaced) font and puts there a small red hook pointing to the right. .. versionchanged:: 1.5 The breaking of long code lines was introduced at 1.4.2. The space - reserved to the continuation symbol (but not the symbol itself) was - changed at 1.5 to obey the current font characteristics (this was needed - as Sphinx 1.5 LaTeX allows code-blocks in footnotes which use a smaller - font size). + reserved to the continuation symbol was changed at 1.5 to obey the + current font characteristics (this was needed as Sphinx 1.5 LaTeX + allows code-blocks in footnotes which use a smaller font size). .. hint:: - To recover exact same indent as earlier the - ``\\normalfont\\normalsize\\makebox[3ex][r]{...}`` specification - should be used. + This specification gives the same spacing as before 1.5:: + + \\normalfont\\normalsize\\makebox[3ex][r]{\\textcolor{red}{\\tiny$\\hookrightarrow$} ``TitleColor`` default ``{rgb}{0.126,0.263,0.361}``. The colour for titles (as configured @@ -177,6 +185,12 @@ Here is the list of currently available keys with their default values. Sphinx in LaTeX for styling a :dudir:`note` admonition. Defaults to black. + .. note:: + + The actual name of the colour as declared to "color" or "xcolor" is + ``sphinxnotebordercolor``. The same "sphinx" prefix applies to all + colours for notices and admonitions. + ``hintbordercolor`` default ``{rgb}{0,0,0}``. id. diff --git a/sphinx/templates/latex/content.tex_t b/sphinx/templates/latex/content.tex_t index ae642119e..bb824fa3e 100644 --- a/sphinx/templates/latex/content.tex_t +++ b/sphinx/templates/latex/content.tex_t @@ -16,7 +16,7 @@ <%= fncychap %> <%= longtable %> \usepackage<%= sphinxpkgoptions %>{sphinx} -\sphinxsetup{<%= sphinxpackageoptions %>} +<%= sphinxsetup %> \usepackage{multirow} \usepackage{eqparbox} <%= usepackages %> diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index 9a21383e6..62714be70 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -6,131 +6,10 @@ % \NeedsTeXFormat{LaTeX2e}[1995/12/01] -\ProvidesPackage{sphinx}[2016/10/27 v1.5 LaTeX package (Sphinx markup)] +\ProvidesPackage{sphinx}[2016/10/29 v1.5 LaTeX package (Sphinx markup)] -% Handle package options via "kvoptions" (later loaded by hyperref anyhow) -\RequirePackage{kvoptions} -\SetupKeyvalOptions{prefix=spx@opt@} % use \spx@opt@ prefix - -\DeclareBoolOption{dontkeepoldnames} % \ifspx@opt@dontkeepoldnames = \iffalse -\DeclareStringOption[0]{maxlistdepth}% \newcommand*\spx@opt@maxlistdepth{0} - -% colour values must be given in format accepted by color's \definecolor -\DeclareStringOption[{rgb}{0.126,0.263,0.361}]{TitleColor} -% for hyperref -\DeclareStringOption[{rgb}{0.208,0.374,0.486}]{InnerLinkColor} -\DeclareStringOption[{rgb}{0.216,0.439,0.388}]{OuterLinkColor} -% code-blocks and literal includes -\DeclareStringOption[{rgb}{1,1,1}]{VerbatimColor} -\DeclareStringOption[{rgb}{0,0,0}]{VerbatimBorderColor} -\DeclareStringOption[\fboxsep]{verbatimsep} -\DeclareStringOption[\fboxrule]{verbatimborder} -\DeclareBoolOption[true]{verbatimwithframe} -\DeclareBoolOption[true]{verbatimwrapslines} -% \textvisiblespace for compatibility with fontspec+XeTeX/LuaTeX -\DeclareStringOption[\textcolor{red}{\textvisiblespace}]{verbatimvisiblespace} -\DeclareStringOption % must use braces to hide the brackets - [{\makebox[2\fontcharwd\font`\x][r]{\textcolor{red}{\tiny$\m@th\hookrightarrow$}}}]% - {verbatimcontinued} -% topic boxes -\DeclareStringOption[5pt]{shadowsep} -\DeclareStringOption[4pt]{shadowsize} -\DeclareStringOption[\fboxrule]{shadowrule} -% admonition boxes, "light" style -\DeclareStringOption[{rgb}{0,0,0}]{notebordercolor} -\DeclareStringOption[{rgb}{0,0,0}]{hintbordercolor} -\DeclareStringOption[{rgb}{0,0,0}]{importantbordercolor} -\DeclareStringOption[{rgb}{0,0,0}]{tipbordercolor} -\DeclareStringOption[0.5pt]{noteborder} -\DeclareStringOption[0.5pt]{hintborder} -\DeclareStringOption[0.5pt]{importantborder} -\DeclareStringOption[0.5pt]{tipborder} -% admonition boxes, "heavy" style -\DeclareStringOption[{rgb}{0,0,0}]{warningbordercolor} -\DeclareStringOption[{rgb}{0,0,0}]{cautionbordercolor} -\DeclareStringOption[{rgb}{0,0,0}]{attentionbordercolor} -\DeclareStringOption[{rgb}{0,0,0}]{dangerbordercolor} -\DeclareStringOption[{rgb}{0,0,0}]{errorbordercolor} -\DeclareStringOption[{rgb}{1,1,1}]{warningbgcolor} -\DeclareStringOption[{rgb}{1,1,1}]{cautionbgcolor} -\DeclareStringOption[{rgb}{1,1,1}]{attentionbgcolor} -\DeclareStringOption[{rgb}{1,1,1}]{dangerbgcolor} -\DeclareStringOption[{rgb}{1,1,1}]{errorbgcolor} -\DeclareStringOption[1pt]{warningborder} -\DeclareStringOption[1pt]{cautionborder} -\DeclareStringOption[1pt]{attentionborder} -\DeclareStringOption[1pt]{dangerborder} -\DeclareStringOption[1pt]{errorborder} -% Footnotes -\DeclareStringOption[\mbox{ }]{AtStartFootnote} -% we need a public macro name for direct use in latex file -\newcommand*{\sphinxAtStartFootnote}{\spx@opt@AtStartFootnote} -% no such need for this one, used inside other macros -\DeclareStringOption[\leavevmode\unskip]{BeforeFootnote} -% some font styling. -\DeclareStringOption[\sffamily\bfseries]{HeaderFamily} - -\DeclareDefaultOption{\@unknownoptionerror} -\ProcessKeyvalOptions* -% don't allow use of maxlistdepth via \sphinxsetup. -\DisableKeyvalOption{sphinx}{maxlistdepth} - -% We declare the \dimen registers here. Those are customizable via options. -\newdimen\sphinxverbatimsep -\newdimen\sphinxverbatimborder -\newdimen\sphinxshadowsep -\newdimen\sphinxshadowsize -\newdimen\sphinxshadowrule -% Other dimensions are set by the options and kept as \spx@opt@ prefix macros -% They are assigned to \spx@notice@border at time of use (sphinxadmonition) -\newdimen\spx@notice@border - -\newcommand*\sphinx@setup -{% - \sphinxverbatimsep \dimexpr\spx@opt@verbatimsep \relax - \sphinxverbatimborder\dimexpr\spx@opt@verbatimborder\relax - \sphinxshadowsep \dimexpr\spx@opt@shadowsep \relax - \sphinxshadowsize \dimexpr\spx@opt@shadowsize \relax - \sphinxshadowrule \dimexpr\spx@opt@shadowrule \relax - \def\@tempa ##1##2##3{\edef\@tempb{\noexpand##1{##2}##3}\@tempb}% - \@tempa\definecolor{TitleColor} \spx@opt@TitleColor - \@tempa\definecolor{InnerLinkColor} \spx@opt@InnerLinkColor - \@tempa\definecolor{OuterLinkColor} \spx@opt@OuterLinkColor - \@tempa\definecolor{VerbatimColor} \spx@opt@VerbatimColor - \@tempa\definecolor{VerbatimBorderColor} \spx@opt@VerbatimBorderColor - \@tempa\definecolor{sphinxnotebordercolor} \spx@opt@notebordercolor - \@tempa\definecolor{sphinxhintbordercolor} \spx@opt@hintbordercolor - \@tempa\definecolor{sphinximportantbordercolor}\spx@opt@importantbordercolor - \@tempa\definecolor{sphinxtipbordercolor} \spx@opt@tipbordercolor - \@tempa\definecolor{sphinxwarningbordercolor} \spx@opt@warningbordercolor - \@tempa\definecolor{sphinxcautionbordercolor} \spx@opt@cautionbordercolor - \@tempa\definecolor{sphinxattentionbordercolor}\spx@opt@attentionbordercolor - \@tempa\definecolor{sphinxdangerbordercolor} \spx@opt@dangerbordercolor - \@tempa\definecolor{sphinxerrorbordercolor} \spx@opt@errorbordercolor - \@tempa\definecolor{sphinxwarningbgcolor} \spx@opt@warningbgcolor - \@tempa\definecolor{sphinxcautionbgcolor} \spx@opt@cautionbgcolor - \@tempa\definecolor{sphinxattentionbgcolor} \spx@opt@attentionbgcolor - \@tempa\definecolor{sphinxdangerbgcolor} \spx@opt@dangerbgcolor - \@tempa\definecolor{sphinxerrorbgcolor} \spx@opt@errorbgcolor -} -% additional user interface: options can be changed midway in a document! -% the command will be executed only after package has finished loading. -\newcommand\sphinxsetup[1]{\setkeys{sphinx}{#1}\sphinx@setup} - -% this is the \ltx@ifundefined of ltxcmds.sty, which is loaded by -% hyperref.sty, but we need it before, and the first release of -% ltxcmds.sty as in TL2009/Debian has wrong definition. -\newcommand{\spx@ifundefined}[1]{% - \ifcsname #1\endcsname - \expandafter\ifx\csname #1\endcsname\relax - \expandafter\expandafter\expandafter\@firstoftwo - \else - \expandafter\expandafter\expandafter\@secondoftwo - \fi - \else - \expandafter\@firstoftwo - \fi -} +% we delay handling of options to after having loaded packages, because +% of the need to use \definecolor. \RequirePackage{graphicx} \@ifclassloaded{memoir}{}{\RequirePackage{fancyhdr}} @@ -154,7 +33,7 @@ \fvset{fontsize=\small} % For table captions. \RequirePackage{threeparttable} -% For hyperlinked footnotes in tables; also for gathering footnotes from +% For hyperlinked footnotes in tables; also for gathering footnotes from % topic and warning blocks. Also to allow code-blocks in footnotes. \RequirePackage{footnotehyper-sphinx} \makesavenoteenv{tabulary} @@ -173,6 +52,122 @@ % Display "real" single quotes in literal blocks. \RequirePackage{upquote} +% Handle options via "kvoptions" (later loaded by hyperref anyhow) +\RequirePackage{kvoptions} +\SetupKeyvalOptions{prefix=spx@opt@} % use \spx@opt@ prefix + +\DeclareBoolOption{dontkeepoldnames} % \ifspx@opt@dontkeepoldnames = \iffalse +\DeclareStringOption[0]{maxlistdepth}% \newcommand*\spx@opt@maxlistdepth{0} + +% dimensions, we declare the \dimen registers here. +\newdimen\sphinxverbatimsep +\newdimen\sphinxverbatimborder +\newdimen\sphinxshadowsep +\newdimen\sphinxshadowsize +\newdimen\sphinxshadowrule +% \DeclareStringOption is not convenient for the handling of these dimensions +% because we want to assign the values to the corresponding registers. Even if +% we added the code to the key handler it would be too late for the initial +% set-up and we would need to do initial assignments explicitely. We end up +% using \define@key directly. +% verbatim +\sphinxverbatimsep=\fboxsep + \define@key{sphinx}{verbatimsep}{\sphinxverbatimsep\dimexpr #1\relax} +\sphinxverbatimborder=\fboxrule + \define@key{sphinx}{verbatimborder}{\sphinxverbatimborder\dimexpr #1\relax} +% topic boxes +\sphinxshadowsep =5pt + \define@key{sphinx}{shadowsep}{\sphinxshadowsep\dimexpr #1\relax} +\sphinxshadowsize=4pt + \define@key{sphinx}{shadowsize}{\sphinxshadowsize\dimexpr #1\relax} +\sphinxshadowrule=\fboxrule + \define@key{sphinx}{shadowrule}{\sphinxshadowrule\dimexpr #1\relax} +% verbatim +\DeclareBoolOption[true]{verbatimwithframe} +\DeclareBoolOption[true]{verbatimwrapslines} +% \textvisiblespace for compatibility with fontspec+XeTeX/LuaTeX +\DeclareStringOption[\textcolor{red}{\textvisiblespace}]{verbatimvisiblespace} +\DeclareStringOption % must use braces to hide the brackets + [{\makebox[2\fontcharwd\font`\x][r]{\textcolor{red}{\tiny$\m@th\hookrightarrow$}}}]% + {verbatimcontinued} +% notices/admonitions +% the dimensions for notices/admonitions are kept as macros and assigned to +% \spx@notice@border at time of use, hence \DeclareStringOption is ok for this +\newdimen\spx@notice@border +\DeclareStringOption[0.5pt]{noteborder} +\DeclareStringOption[0.5pt]{hintborder} +\DeclareStringOption[0.5pt]{importantborder} +\DeclareStringOption[0.5pt]{tipborder} +\DeclareStringOption[1pt]{warningborder} +\DeclareStringOption[1pt]{cautionborder} +\DeclareStringOption[1pt]{attentionborder} +\DeclareStringOption[1pt]{dangerborder} +\DeclareStringOption[1pt]{errorborder} +% footnotes +\DeclareStringOption[\mbox{ }]{AtStartFootnote} +% we need a public macro name for direct use in latex file +\newcommand*{\sphinxAtStartFootnote}{\spx@opt@AtStartFootnote} +% no such need for this one, as it is used inside other macros +\DeclareStringOption[\leavevmode\unskip]{BeforeFootnote} +% some font styling. +\DeclareStringOption[\sffamily\bfseries]{HeaderFamily} +% colours +% same problems as for dimensions: we want the key handler to use \definecolor +% first, some colours with no prefix, for backwards compatibility +\newcommand*{\sphinxDeclareColorOption}[2]{% + \definecolor{#1}#2% + \define@key{sphinx}{#1}{\definecolor{#1}##1}% +}% +\sphinxDeclareColorOption{TitleColor}{{rgb}{0.126,0.263,0.361}} +\sphinxDeclareColorOption{InnerLinkColor}{{rgb}{0.208,0.374,0.486}} +\sphinxDeclareColorOption{OuterLinkColor}{{rgb}{0.216,0.439,0.388}} +\sphinxDeclareColorOption{VerbatimColor}{{rgb}{1,1,1}} +\sphinxDeclareColorOption{VerbatimBorderColor}{{rgb}{0,0,0}} +% now the colours defined with "sphinx" prefix in their names +\newcommand*{\sphinxDeclareSphinxColorOption}[2]{% + % set the initial default + \definecolor{sphinx#1}#2% + % set the key handler. The "value" ##1 must be acceptable by \definecolor. + \define@key{sphinx}{#1}{\definecolor{sphinx#1}##1}% +}% +% admonition boxes, "light" style +\sphinxDeclareSphinxColorOption{notebordercolor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{hintbordercolor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{importantbordercolor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{tipbordercolor}{{rgb}{0,0,0}} +% admonition boxes, "heavy" style +\sphinxDeclareSphinxColorOption{warningbordercolor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{cautionbordercolor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{attentionbordercolor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{dangerbordercolor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{errorbordercolor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{warningbgcolor}{{rgb}{1,1,1}} +\sphinxDeclareSphinxColorOption{cautionbgcolor}{{rgb}{1,1,1}} +\sphinxDeclareSphinxColorOption{attentionbgcolor}{{rgb}{1,1,1}} +\sphinxDeclareSphinxColorOption{dangerbgcolor}{{rgb}{1,1,1}} +\sphinxDeclareSphinxColorOption{errorbgcolor}{{rgb}{1,1,1}} + +\DeclareDefaultOption{\@unknownoptionerror} +\ProcessKeyvalOptions* +% don't allow use of maxlistdepth via \sphinxsetup. +\DisableKeyvalOption{sphinx}{maxlistdepth} +% user interface: options can be changed midway in a document! +\newcommand\sphinxsetup[1]{\setkeys{sphinx}{#1}} + +% this is the \ltx@ifundefined of ltxcmds.sty, which is loaded by +% hyperref.sty, but we need it before, and the first release of +% ltxcmds.sty as in TL2009/Debian has wrong definition. +\newcommand{\spx@ifundefined}[1]{% + \ifcsname #1\endcsname + \expandafter\ifx\csname #1\endcsname\relax + \expandafter\expandafter\expandafter\@firstoftwo + \else + \expandafter\expandafter\expandafter\@secondoftwo + \fi + \else + \expandafter\@firstoftwo + \fi +} % FIXME: the reasons might be obsolete (better color drivers now?) % use pdfoutput for pTeX and dvipdfmx % when pTeX (\kanjiskip is defined), set pdfoutput to evade \include{pdfcolor} diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 9f29e466e..050c6114a 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -52,8 +52,9 @@ DEFAULT_SETTINGS = { 'classoptions': '', 'extraclassoptions': '', 'maxlistdepth': '', - 'sphinxpkgoptions': '', + 'sphinxpkgoptions': '', 'sphinxpackageoptions': '', + 'sphinxsetup': '', 'passoptionstopackages': '', 'geometry': '\\usepackage[margin=1in,marginparwidth=0.5in]' '{geometry}', @@ -447,11 +448,15 @@ class LaTeXTranslator(nodes.NodeVisitor): self.check_latex_elements() self.elements.update(builder.config.latex_elements) if self.elements['maxlistdepth']: - self.elements['sphinxpkgoptions'] += (',maxlistdepth=%s' % - self.elements['maxlistdepth']) + self.elements['sphinxpkgoptions'] = \ + ','.join(self.elements['sphinxpkgoptions'], 'maxlistdepth=%s' % + self.elements['maxlistdepth']) if self.elements['sphinxpkgoptions']: self.elements['sphinxpkgoptions'] = ('[%s]' % self.elements['sphinxpkgoptions']) + if self.elements['sphinxpackageoptions']: + self.elements['sphinxsetup'] = ('\\sphinxsetup{%s}' % + self.elements['sphinxpackageoptions']) if self.elements['extraclassoptions']: self.elements['classoptions'] += ',' + \ self.elements['extraclassoptions'] From a48a9c883a9e1a5cc1039263ac604033832e5a56 Mon Sep 17 00:00:00 2001 From: jfbu Date: Sat, 29 Oct 2016 16:30:33 +0200 Subject: [PATCH 149/297] style the latex chapter in the docs (for pdf output) --- doc/conf.py | 1 + doc/latex.rst | 71 +++++++++++++++++++++++++++++++++++++++++---------- 2 files changed, 58 insertions(+), 14 deletions(-) diff --git a/doc/conf.py b/doc/conf.py index 764c52062..349c0e745 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -55,6 +55,7 @@ latex_documents = [('contents', 'sphinx.tex', 'Sphinx Documentation', latex_logo = '_static/sphinx.png' latex_elements = { 'fontpkg': '\\usepackage{palatino}', + 'passoptionstopackages': '\\PassOptionsToPackage{svgnames}{xcolor}', } latex_show_urls = 'footnote' diff --git a/doc/latex.rst b/doc/latex.rst index 0f49b66dc..f6d36184a 100644 --- a/doc/latex.rst +++ b/doc/latex.rst @@ -11,6 +11,19 @@ LaTeX customization The *latex* target does not benefit from pre-prepared themes like the *html* target does (see :doc:`theming`). +.. raw:: latex + + \begingroup + \sphinxsetup{verbatimwithframe=false,% + VerbatimColor={named}{OldLace}, TitleColor={named}{DarkGoldenrod},% + hintbordercolor={named}{LightCoral}, attentionbgcolor={named}{LightPink},% + attentionborder=3pt, attentionbordercolor={named}{Crimson},% + notebordercolor={named}{Olive}, noteborder=2pt,% + cautionbordercolor={named}{Cyan}, cautionbgcolor={named}{LightCyan},% + cautionborder=3pt} + \relax + + Basic customization ------------------- @@ -40,6 +53,8 @@ in Python string literals to reach latex.) For example:: .. the above was tested on Sphinx's own 1.5a2 documentation with good effect ! +.. highlight:: latex + More advanced customization will be obtained via insertion into the LaTeX preamble of relevant ``\renewcommand``, ``\renewenvironment``, ``\setlength``, or ``\definecolor`` commands. The ``'preamble'`` key of @@ -47,12 +62,12 @@ or ``\definecolor`` commands. The ``'preamble'`` key of numerous, it may prove more convenient to assemble them into a specialized file :file:`mystyle.tex` and then use:: - 'preamble': '\\makeatletter\\input{mystyle.tex}\\makeatother', + 'preamble': r'\makeatletter\input{mystyle.tex}\makeatother', or, better, to set up a style file :file:`mystyle.sty` which can then be loaded via:: - 'preamble': '\\usepackage{mystyle}', + 'preamble': r'\usepackage{mystyle}', The :ref:`build configuration file ` file for the project needs to have its variable :confval:`latex_additional_files` appropriately @@ -63,8 +78,6 @@ configured, for example:: The Sphinx LaTeX style package options -------------------------------------- -.. highlight:: latex - The ``'sphinxpackageoptions'`` key to :confval:`latex_elements` provides a more convenient interface to various style parameters. It is a comma separated string of ``key=value`` instructions:: @@ -93,7 +106,23 @@ If non-empty, it will be passed as argument to the ``\sphinxsetup`` command:: to insert explicitely the ``\\sphinxsetup{key=value,..}`` inside the ``'preamble'`` key. It is even possible to use the ``\sphinxsetup`` in the body of the document, via the :rst:dir:`raw` directive, to modify - dynamically the option values. + dynamically the option values: this is actually what we did for the + duration of this chapter for the PDF output, which is styled using:: + + verbatimwithframe=false, + VerbatimColor={named}{OldLace}, TitleColor={named}{DarkGoldenrod}, + hintbordercolor={named}{LightCoral}, attentionbgcolor={named}{LightPink}, + attentionborder=3pt, attentionbordercolor={named}{Crimson}, + notebordercolor={named}{Olive}, noteborder=2pt, + cautionbordercolor={named}{Cyan}, cautionbgcolor={named}{LightCyan}, + cautionborder=3pt + + and with the ``svgnames`` option having been passed to "xcolor" package:: + + latex_elements = { + 'passoptionstopackages': r'\PassOptionsToPackage{svgnames}{xcolor}', + } + Here are the currently available options together with their default values. @@ -117,14 +146,14 @@ Here are the currently available options together with their default values. macros with complicated LaTeX syntax from :file:`sphinx.sty`. ``verbatimvisiblespace`` - default ``\\textcolor{red}{\\textvisiblespace}``. When a long code line is + default ``\textcolor{red}{\textvisiblespace}``. When a long code line is split, space characters located at end of the line before the break are displayed using this code. ``verbatimcontinued`` The default is:: - \\makebox[2\\fontcharwd\\font`\\x][r]{\\textcolor{red}{\\tiny$\\hookrightarrow$}} + \makebox[2\fontcharwd\font`\x][r]{\textcolor{red}{\tiny$\hookrightarrow$}} It is printed at start of continuation lines. This rather formidable expression reserves twice the width of a typical character in the current @@ -140,7 +169,7 @@ Here are the currently available options together with their default values. This specification gives the same spacing as before 1.5:: - \\normalfont\\normalsize\\makebox[3ex][r]{\\textcolor{red}{\\tiny$\\hookrightarrow$} + \normalfont\normalsize\makebox[3ex][r]{\textcolor{red}{\tiny$\hookrightarrow$} ``TitleColor`` default ``{rgb}{0.126,0.263,0.361}``. The colour for titles (as configured @@ -260,16 +289,16 @@ Here are the currently available options together with their default values. default ``1pt``. id. ``AtStartFootnote`` - default ``\\mbox{ }``. LaTeX macros inserted at the start of the footnote + default ``\mbox{ }``. LaTeX macros inserted at the start of the footnote text at bottom of page, after the footnote number. ``BeforeFootnote`` - default ``\\leavevmode\\unskip``. LaTeX macros inserted before the footnote + default ``\leavevmode\unskip``. LaTeX macros inserted before the footnote mark. The default removes possible space before it. It can be set to empty (``BeforeFootnote={},``) to recover the earlier - behaviour of Sphinx, or alternatively contain a ``\\nobreak\\space`` or a - ``\\thinspace`` after the ``\\unskip`` to insert some chosen + behaviour of Sphinx, or alternatively contain a ``\nobreak\space`` or a + ``\thinspace`` after the ``\unskip`` to insert some chosen (non-breakable) space. .. versionadded:: 1.5 @@ -278,10 +307,17 @@ Here are the currently available options together with their default values. automatically generated footnotes had no such space. ``HeaderFamily`` - default ``\\sffamily\\bfseries``. Sets the font used by headings. + default ``\sffamily\bfseries``. Sets the font used by headings. + + +.. caution:: + + These options correspond to what has been so far the default LaTeX rendering by Sphinx; + if in future Sphinx offers various *themes* for LaTeX, the interface may change. In the future, possibly more keys will be made available. As seen above, they -may even be used for LaTeX commands. +may even be used for LaTeX commands. Don't forget to double the backslashes if not using +"raw" Python strings. The LaTeX environments defined by Sphinx ---------------------------------------- @@ -383,6 +419,9 @@ Let us now list some macros from the package file .. versionchanged:: 1.5 formerly, the original environments were modified by Sphinx. +- the list is not exhaustive: refer to :file:`sphinx.sty` for more. + + .. hint:: As an experimental feature, Sphinx can use user-defined template file for @@ -391,3 +430,7 @@ Let us now list some macros from the package file will be changed in future version. .. versionadded:: 1.5 + +.. raw:: latex + + \endgroup From e70746e8daf208d88c9e8d88b1fc623d0cbe669d Mon Sep 17 00:00:00 2001 From: jfbu Date: Sun, 30 Oct 2016 00:04:23 +0200 Subject: [PATCH 150/297] uppercase colour names (latex styling) --- doc/latex.rst | 46 ++++++++++++++++++------------------- sphinx/texinputs/sphinx.sty | 40 ++++++++++++++++---------------- 2 files changed, 43 insertions(+), 43 deletions(-) diff --git a/doc/latex.rst b/doc/latex.rst index f6d36184a..fda80b33d 100644 --- a/doc/latex.rst +++ b/doc/latex.rst @@ -16,10 +16,10 @@ The *latex* target does not benefit from pre-prepared themes like the \begingroup \sphinxsetup{verbatimwithframe=false,% VerbatimColor={named}{OldLace}, TitleColor={named}{DarkGoldenrod},% - hintbordercolor={named}{LightCoral}, attentionbgcolor={named}{LightPink},% - attentionborder=3pt, attentionbordercolor={named}{Crimson},% - notebordercolor={named}{Olive}, noteborder=2pt,% - cautionbordercolor={named}{Cyan}, cautionbgcolor={named}{LightCyan},% + hintBorderColor={named}{LightCoral}, attentionBgColor={named}{LightPink},% + attentionborder=3pt, attentionBorderColor={named}{Crimson},% + noteBorderColor={named}{Olive}, noteborder=2pt,% + cautionBorderColor={named}{Cyan}, cautionBgColor={named}{LightCyan},% cautionborder=3pt} \relax @@ -111,10 +111,10 @@ If non-empty, it will be passed as argument to the ``\sphinxsetup`` command:: verbatimwithframe=false, VerbatimColor={named}{OldLace}, TitleColor={named}{DarkGoldenrod}, - hintbordercolor={named}{LightCoral}, attentionbgcolor={named}{LightPink}, - attentionborder=3pt, attentionbordercolor={named}{Crimson}, - notebordercolor={named}{Olive}, noteborder=2pt, - cautionbordercolor={named}{Cyan}, cautionbgcolor={named}{LightCyan}, + hintBorderColor={named}{LightCoral}, attentionBgColor={named}{LightPink}, + attentionborder=3pt, attentionBorderColor={named}{Crimson}, + noteBorderColor={named}{Olive}, noteborder=2pt, + cautionBorderColor={named}{Cyan}, cautionBgColor={named}{LightCyan}, cautionborder=3pt and with the ``svgnames`` option having been passed to "xcolor" package:: @@ -209,7 +209,7 @@ Here are the currently available options together with their default values. ``shadowrule`` default ``\fboxrule``. The width of the frame around :dudir:`topic` boxes. -``notebordercolor`` +``noteBorderColor`` default ``{rgb}{0,0,0}``. The colour for the two horizontal rules used by Sphinx in LaTeX for styling a :dudir:`note` admonition. Defaults to black. @@ -217,16 +217,16 @@ Here are the currently available options together with their default values. .. note:: The actual name of the colour as declared to "color" or "xcolor" is - ``sphinxnotebordercolor``. The same "sphinx" prefix applies to all + ``sphinxnoteBorderColor``. The same "sphinx" prefix applies to all colours for notices and admonitions. -``hintbordercolor`` +``hintBorderColor`` default ``{rgb}{0,0,0}``. id. -``importantbordercolor`` +``importantBorderColor`` default ``{rgb}{0,0,0}``. id. -``tipbordercolor`` +``tipBorderColor`` default ``{rgb}{0,0,0}``. id. ``noteborder`` @@ -241,36 +241,36 @@ Here are the currently available options together with their default values. ``tipborder`` default ``0.5pt``. id. -``warningbordercolor`` +``warningBorderColor`` default ``{rgb}{0,0,0}``. The colour of the frame for :dudir:`warning` type admonitions. Defaults to black. -``cautionbordercolor`` +``cautionBorderColor`` default ``{rgb}{0,0,0}``. id. -``attentionbordercolor`` +``attentionBorderColor`` default ``{rgb}{0,0,0}``. id. -``dangerbordercolor`` +``dangerBorderColor`` default ``{rgb}{0,0,0}``. id. -``errorbordercolor`` +``errorBorderColor`` default ``{rgb}{0,0,0}``. id. -``warningbgcolor`` +``warningBgColor`` default ``{rgb}{1,1,1}``. The background colour for :dudir:`warning` type admonition, defaults to white. -``cautionbgcolor`` +``cautionBgColor`` default ``{rgb}{1,1,1}``. id. -``attentionbgcolor`` +``attentionBgColor`` default ``{rgb}{1,1,1}``. id. -``dangerbgcolor`` +``dangerBgColor`` default ``{rgb}{1,1,1}``. id. -``errorbgcolor`` +``errorBgColor`` default ``{rgb}{1,1,1}``. id. ``warningborder`` diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index 62714be70..f6f677cc9 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -131,21 +131,21 @@ \define@key{sphinx}{#1}{\definecolor{sphinx#1}##1}% }% % admonition boxes, "light" style -\sphinxDeclareSphinxColorOption{notebordercolor}{{rgb}{0,0,0}} -\sphinxDeclareSphinxColorOption{hintbordercolor}{{rgb}{0,0,0}} -\sphinxDeclareSphinxColorOption{importantbordercolor}{{rgb}{0,0,0}} -\sphinxDeclareSphinxColorOption{tipbordercolor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{noteBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{hintBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{importantBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{tipBorderColor}{{rgb}{0,0,0}} % admonition boxes, "heavy" style -\sphinxDeclareSphinxColorOption{warningbordercolor}{{rgb}{0,0,0}} -\sphinxDeclareSphinxColorOption{cautionbordercolor}{{rgb}{0,0,0}} -\sphinxDeclareSphinxColorOption{attentionbordercolor}{{rgb}{0,0,0}} -\sphinxDeclareSphinxColorOption{dangerbordercolor}{{rgb}{0,0,0}} -\sphinxDeclareSphinxColorOption{errorbordercolor}{{rgb}{0,0,0}} -\sphinxDeclareSphinxColorOption{warningbgcolor}{{rgb}{1,1,1}} -\sphinxDeclareSphinxColorOption{cautionbgcolor}{{rgb}{1,1,1}} -\sphinxDeclareSphinxColorOption{attentionbgcolor}{{rgb}{1,1,1}} -\sphinxDeclareSphinxColorOption{dangerbgcolor}{{rgb}{1,1,1}} -\sphinxDeclareSphinxColorOption{errorbgcolor}{{rgb}{1,1,1}} +\sphinxDeclareSphinxColorOption{warningBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{cautionBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{attentionBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{dangerBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{errorBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{warningBgColor}{{rgb}{1,1,1}} +\sphinxDeclareSphinxColorOption{cautionBgColor}{{rgb}{1,1,1}} +\sphinxDeclareSphinxColorOption{attentionBgColor}{{rgb}{1,1,1}} +\sphinxDeclareSphinxColorOption{dangerBgColor}{{rgb}{1,1,1}} +\sphinxDeclareSphinxColorOption{errorBgColor}{{rgb}{1,1,1}} \DeclareDefaultOption{\@unknownoptionerror} \ProcessKeyvalOptions* @@ -689,10 +689,10 @@ % these are needed for common handling by notice environment of lightbox % and heavybox but they are currently not used by lightbox environment % and there is consequently no corresponding package option -\definecolor{sphinxnotebgcolor}{rgb}{1,1,1} -\definecolor{sphinxhintbgcolor}{rgb}{1,1,1} -\definecolor{sphinximportantbgcolor}{rgb}{1,1,1} -\definecolor{sphinxtipbgcolor}{rgb}{1,1,1} +\definecolor{sphinxnoteBgColor}{rgb}{1,1,1} +\definecolor{sphinxhintBgColor}{rgb}{1,1,1} +\definecolor{sphinimportantBgColor}{rgb}{1,1,1} +\definecolor{sphinxtipBgColor}{rgb}{1,1,1} % Others get more distinction % Code adapted from framed.sty's "snugshade" environment. @@ -766,8 +766,8 @@ % can't use #1 directly in definition of end part \def\spx@noticetype {#1}% % set parameters of heavybox/lightbox - \sphinxcolorlet{spx@notice@bordercolor}{sphinx#1bordercolor}% - \sphinxcolorlet{spx@notice@bgcolor}{sphinx#1bgcolor}% + \sphinxcolorlet{spx@notice@bordercolor}{sphinx#1BorderColor}% + \sphinxcolorlet{spx@notice@bgcolor}{sphinx#1BgColor}% \spx@notice@border \dimexpr\csname spx@opt@#1border\endcsname\relax % start specific environment, passing the heading as argument \begin{sphinx#1}{#2}} From aff72931fce4a1fbb0175b9b2529bfacfe328ef1 Mon Sep 17 00:00:00 2001 From: jfbu Date: Sun, 30 Oct 2016 00:08:17 +0200 Subject: [PATCH 151/297] minor update to latex.rst --- doc/latex.rst | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/doc/latex.rst b/doc/latex.rst index fda80b33d..1e6eb6642 100644 --- a/doc/latex.rst +++ b/doc/latex.rst @@ -126,6 +126,12 @@ If non-empty, it will be passed as argument to the ``\sphinxsetup`` command:: Here are the currently available options together with their default values. +.. caution:: + + These options correspond to what has been so far the default LaTeX + rendering by Sphinx; if in future Sphinx offers various *themes* for LaTeX, + the interface may change. + ``verbatimwithframe`` default ``true``. Boolean to specify if :rst:dir:`code-block`\ s and literal includes are framed. Setting it to ``false`` does not deactivate use of @@ -309,15 +315,8 @@ Here are the currently available options together with their default values. ``HeaderFamily`` default ``\sffamily\bfseries``. Sets the font used by headings. - -.. caution:: - - These options correspond to what has been so far the default LaTeX rendering by Sphinx; - if in future Sphinx offers various *themes* for LaTeX, the interface may change. - -In the future, possibly more keys will be made available. As seen above, they -may even be used for LaTeX commands. Don't forget to double the backslashes if not using -"raw" Python strings. +As seen above, key values may even be used for LaTeX commands. But don't +forget to double the backslashes if not using "raw" Python strings. The LaTeX environments defined by Sphinx ---------------------------------------- @@ -421,7 +420,6 @@ Let us now list some macros from the package file - the list is not exhaustive: refer to :file:`sphinx.sty` for more. - .. hint:: As an experimental feature, Sphinx can use user-defined template file for From ae1f523d52cc42d4836e1408846d4b18434b1f3a Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Wed, 2 Nov 2016 11:11:15 +0900 Subject: [PATCH 152/297] Add ``--extensions`` to ``sphinx-quickstart`` to support enable arbitary extensions from command line (ref: #2904) --- CHANGES | 2 ++ doc/invocation.rst | 4 ++++ sphinx/quickstart.py | 23 +++++++++++++++-------- tests/test_quickstart.py | 13 +++++++++++++ 4 files changed, 34 insertions(+), 8 deletions(-) diff --git a/CHANGES b/CHANGES index 31ddad9c5..17a41c113 100644 --- a/CHANGES +++ b/CHANGES @@ -11,6 +11,8 @@ Features added * #3096: ``'maxlistdepth'`` key to work around LaTeX list limitations * #3060: autodoc supports documentation for attributes of Enum class. Now autodoc render just the value of Enum attributes instead of Enum attribute representation. +* Add ``--extensions`` to ``sphinx-quickstart`` to support enable arbitary + extensions from command line (ref: #2904) Bugs fixed ---------- diff --git a/doc/invocation.rst b/doc/invocation.rst index a723b43f3..436c652f9 100644 --- a/doc/invocation.rst +++ b/doc/invocation.rst @@ -118,6 +118,10 @@ Extension options Enable `sphinx.ext.viewcode` extension. +.. option:: --extensions=EXTENSIONS + + Enable arbitary extensions. + Makefile and Batchfile creation options --------------------------------------- diff --git a/sphinx/quickstart.py b/sphinx/quickstart.py index 61abbb092..00449b988 100644 --- a/sphinx/quickstart.py +++ b/sphinx/quickstart.py @@ -388,14 +388,11 @@ def generate(d, overwrite=True, silent=False, templatedir=None): d['project_manpage'] = d['project_fn'].lower() d['now'] = time.asctime() d['project_underline'] = column_width(d['project']) * '=' - extensions = (',\n' + indent).join( - repr('sphinx.ext.' + name) - for name in EXTENSIONS - if d.get('ext_' + name)) - if extensions: - d['extensions'] = '\n' + indent + extensions + ',\n' - else: - d['extensions'] = extensions + d.setdefault('extensions', []) + for name in EXTENSIONS: + if d.get('ext_' + name): + d['extensions'].append('sphinx.ext.' + name) + d['extensions'] = (',\n' + indent).join(repr(name) for name in d['extensions']) d['copyright'] = time.strftime('%Y') + ', ' + d['author'] d['author_texescaped'] = text_type(d['author']).\ translate(texescape.tex_escape_map) @@ -581,6 +578,8 @@ def main(argv=sys.argv): group.add_option('--ext-' + ext, action='store_true', dest='ext_' + ext, default=False, help='enable %s extension' % ext) + group.add_option('--extensions', metavar='EXTENSIONS', dest='extensions', + action='append', help='enable extensions') group = parser.add_option_group('Makefile and Batchfile creation') group.add_option('--makefile', action='store_true', dest='makefile', @@ -659,6 +658,14 @@ def main(argv=sys.argv): if isinstance(value, binary_type): d[key] = term_decode(value) + # parse extensions list + d.setdefault('extensions', []) + for ext in d['extensions'][:]: + if ',' in ext: + d['extensions'].remove(ext) + for modname in ext.split(','): + d['extensions'].append(modname) + for variable in d.get('variables', []): try: name, value = variable.split('=') diff --git a/tests/test_quickstart.py b/tests/test_quickstart.py index ac6507ce5..7a77ce225 100644 --- a/tests/test_quickstart.py +++ b/tests/test_quickstart.py @@ -298,3 +298,16 @@ def test_default_filename(tempdir): assert ns['latex_documents'][0][1] == 'sphinx.tex' assert ns['man_pages'][0][1] == 'sphinx' assert ns['texinfo_documents'][0][1] == 'sphinx' + + +@with_tempdir +def test_extensions(tempdir): + qs.main(['sphinx-quickstart', '-q', + '-p', 'project_name', '-a', 'author', + '--extensions', 'foo,bar,baz', tempdir]) + + conffile = tempdir / 'conf.py' + assert conffile.isfile() + ns = {} + execfile_(conffile, ns) + assert ns['extensions'] == ['foo', 'bar', 'baz'] From b9bb7d8810317c492fc75cdc2ed9e09d4e9558b8 Mon Sep 17 00:00:00 2001 From: jfbu Date: Wed, 2 Nov 2016 08:16:30 +0100 Subject: [PATCH 153/297] Update CHANGES for PR#3104 --- CHANGES | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES b/CHANGES index 17a41c113..4e5ee137c 100644 --- a/CHANGES +++ b/CHANGES @@ -13,6 +13,7 @@ Features added just the value of Enum attributes instead of Enum attribute representation. * Add ``--extensions`` to ``sphinx-quickstart`` to support enable arbitary extensions from command line (ref: #2904) +* #3104: ``'sphinxpackageoptions'`` for key=value styling of Sphinx LaTeX Bugs fixed ---------- From da1e157e90e58b62d24a708c1813a7279d854b42 Mon Sep 17 00:00:00 2001 From: jfbu Date: Wed, 2 Nov 2016 08:18:53 +0100 Subject: [PATCH 154/297] fix typo in CHANGES --- CHANGES | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 4e5ee137c..c629a82db 100644 --- a/CHANGES +++ b/CHANGES @@ -11,7 +11,7 @@ Features added * #3096: ``'maxlistdepth'`` key to work around LaTeX list limitations * #3060: autodoc supports documentation for attributes of Enum class. Now autodoc render just the value of Enum attributes instead of Enum attribute representation. -* Add ``--extensions`` to ``sphinx-quickstart`` to support enable arbitary +* Add ``--extensions`` to ``sphinx-quickstart`` to support enable arbitrary extensions from command line (ref: #2904) * #3104: ``'sphinxpackageoptions'`` for key=value styling of Sphinx LaTeX From b014c34586beeeeb9522769b4d7deea8ac5ba75d Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Wed, 2 Nov 2016 20:06:30 +0900 Subject: [PATCH 155/297] Fix #3111: autodoc crashes with python3.6b3 Since 3.6b3, structure of typing.Callable has been changed. --- sphinx/ext/autodoc.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py index 890f65646..98783cfdb 100644 --- a/sphinx/ext/autodoc.py +++ b/sphinx/ext/autodoc.py @@ -270,6 +270,8 @@ def format_annotation(annotation): """ if typing and isinstance(annotation, typing.TypeVar): return annotation.__name__ + if annotation == Ellipsis: + return '...' if not isinstance(annotation, type): return repr(annotation) @@ -288,7 +290,12 @@ def format_annotation(annotation): # arguments are in __parameters__. params = None if hasattr(annotation, '__args__'): - params = annotation.__args__ + if len(annotation.__args__) <= 2: + params = annotation.__args__ + else: # typing.Callable + args = ', '.join(format_annotation(a) for a in annotation.__args__[:-1]) + result = format_annotation(annotation.__args__[-1]) + return '%s[[%s], %s]' % (qualified_name, args, result) elif hasattr(annotation, '__parameters__'): params = annotation.__parameters__ if params is not None: From a880d0e84e491ff7470bca47ce7401f4ce0c8341 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Wed, 2 Nov 2016 21:35:47 +0900 Subject: [PATCH 156/297] Fix #3114: Install enum34 to test autodoc on py27 --- test-reqs.txt | 1 + tox.ini | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/test-reqs.txt b/test-reqs.txt index e0eb41ebd..b53adbfe5 100644 --- a/test-reqs.txt +++ b/test-reqs.txt @@ -15,3 +15,4 @@ sphinx_rtd_theme imagesize requests html5lib +enum34 diff --git a/tox.ini b/tox.ini index 44ae8a7a6..09c3e751d 100644 --- a/tox.ini +++ b/tox.ini @@ -40,6 +40,11 @@ deps= deps=flake8 commands=flake8 +[testenv:py27] +deps= + enum34 + {[testenv]deps} + [testenv:py35] commands= {envpython} tests/run.py -m '^[tT]est' {posargs} From ee7a44656ab58bb277c00119bffcf3450e81e1e3 Mon Sep 17 00:00:00 2001 From: Bryan Van de Ven Date: Thu, 20 Oct 2016 23:48:18 -0500 Subject: [PATCH 157/297] fix calling convention for debu arguments The message string has two placeholders, the debug args need to be unpacked so that all the placeholders are filled. --- sphinx/application.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sphinx/application.py b/sphinx/application.py index e741e3c99..9d99227c5 100644 --- a/sphinx/application.py +++ b/sphinx/application.py @@ -800,7 +800,7 @@ class Sphinx(object): languages[cls.lang] = cls def add_source_parser(self, suffix, parser): - self.debug('[app] adding search source_parser: %r, %r', (suffix, parser)) + self.debug('[app] adding search source_parser: %r, %r', suffix, parser) if suffix in self._additional_source_parsers: self.warn('while setting up extension %s: source_parser for %r is ' 'already registered, it will be overridden' % From 1aedca64e31ab1062de980f40f615cd5f844cdab Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Wed, 2 Nov 2016 22:05:32 +0900 Subject: [PATCH 158/297] Update CHANGES for PR#3074 --- CHANGES | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES b/CHANGES index 287750b17..5be5f4632 100644 --- a/CHANGES +++ b/CHANGES @@ -8,6 +8,7 @@ Bugs fixed * #3058: Using the same 'caption' attribute in multiple 'toctree' directives results in warning / error * #3068: Allow the '=' character in the -D option of sphinx-build.py +* #3074: ``add_source_parser()`` crashes in debug mode Release 1.4.8 (released Oct 1, 2016) ==================================== From bcff35663f67d3e38bd186f6f89e5481d46cc462 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Wed, 2 Nov 2016 20:06:30 +0900 Subject: [PATCH 159/297] Fix #3111: autodoc crashes with python3.6b3 Since 3.6b3, structure of typing.Callable has been changed. --- sphinx/ext/autodoc.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py index 967beada0..208a228f0 100644 --- a/sphinx/ext/autodoc.py +++ b/sphinx/ext/autodoc.py @@ -263,6 +263,8 @@ def format_annotation(annotation): """ if typing and isinstance(annotation, typing.TypeVar): return annotation.__name__ + if annotation == Ellipsis: + return '...' if not isinstance(annotation, type): return repr(annotation) @@ -281,7 +283,12 @@ def format_annotation(annotation): # arguments are in __parameters__. params = None if hasattr(annotation, '__args__'): - params = annotation.__args__ + if len(annotation.__args__) <= 2: + params = annotation.__args__ + else: # typing.Callable + args = ', '.join(format_annotation(a) for a in annotation.__args__[:-1]) + result = format_annotation(annotation.__args__[-1]) + return '%s[[%s], %s]' % (qualified_name, args, result) elif hasattr(annotation, '__parameters__'): params = annotation.__parameters__ if params is not None: From 67fe3d6da0c045da35005dd03e817e3385879952 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20B?= Date: Wed, 2 Nov 2016 14:50:41 +0100 Subject: [PATCH 160/297] Fix #2865: let LaTeX image inclusion obey ``scale`` before textwidth fit (#3059) --- sphinx/texinputs/sphinx.sty | 30 +++++++++++++++++------------- sphinx/writers/latex.py | 16 +++++++++++----- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index f6f677cc9..f49371b8f 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -867,23 +867,27 @@ \raggedright} {\end{list}} -% Re-define \includegraphics to resize images larger than the line width -% if the size is not specified. +% Redefine \includegraphics to resize images larger than the line width, +% except if height or width option present. +% +% If scale is present, rescale before fitting to line width. (since 1.5) +% % Warning: future version of Sphinx will not modify original \includegraphics, -% Below custom code will be direct definition of \sphinxincludegraphics, with -% \py@Oldincludegraphics replaced by direct use of original \includegraphics. +% below code will be definition only of \sphinxincludegraphics. \let\py@Oldincludegraphics\includegraphics \newbox\spx@image@box -\renewcommand*{\includegraphics}[2][\@empty]{% - \ifx\@empty #1% attention, #1 could be bb.., bad if first after \ifx - \setbox\spx@image@box=\hbox{\py@Oldincludegraphics{#2}}% - \ifdim \wd\spx@image@box>\linewidth - \py@Oldincludegraphics[width=\linewidth]{#2}% - \else - \leavevmode\box\spx@image@box - \fi - \else +\renewcommand*{\includegraphics}[2][]{% + \in@{height}{#1}\ifin@\else\in@{width}{#1}\fi + \ifin@ % height or width present \py@Oldincludegraphics[#1]{#2}% + \else % no height nor width (but #1 may be "scale=...") + \setbox\spx@image@box\hbox{\py@Oldincludegraphics[#1,draft]{#2}}% + \ifdim \wd\spx@image@box>\linewidth + \setbox\spx@image@box\box\voidb@x % clear memory + \py@Oldincludegraphics[#1,width=\linewidth]{#2}% + \else + \py@Oldincludegraphics[#1]{#2}% + \fi \fi } % Writer will put \sphinxincludegraphics in LaTeX source, and with this, diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 4b2834d8e..d5895399d 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -1400,11 +1400,6 @@ class LaTeXTranslator(nodes.NodeVisitor): post = [] include_graphics_options = [] is_inline = self.is_inline(node) - if 'scale' in attrs: - # Could also be done with ``scale`` option to - # ``\includegraphics``; doing it this way for consistency. - pre.append('\\scalebox{%f}{' % (attrs['scale'] / 100.0,)) - post.append('}') if 'width' in attrs: w = self.latex_image_length(attrs['width']) if w: @@ -1413,6 +1408,17 @@ class LaTeXTranslator(nodes.NodeVisitor): h = self.latex_image_length(attrs['height']) if h: include_graphics_options.append('height=%s' % h) + if 'scale' in attrs: + if include_graphics_options: + # unfortunately passing "height=1cm,scale=2.0" to \includegraphics + # does not result in a height of 2cm. We must scale afterwards. + pre.append('\\scalebox{%f}{' % (attrs['scale'] / 100.0,)) + post.append('}') + else: + # if no "width" nor "height", \sphinxincludegraphics will fit + # to the available text width if oversized after rescaling. + include_graphics_options.append('scale=%s' + % (float(attrs['scale']) / 100.0)) if 'align' in attrs: align_prepost = { # By default latex aligns the top of an image. From 1777939fa49b8d43b72e2c962df991b265aec664 Mon Sep 17 00:00:00 2001 From: jfbu Date: Wed, 2 Nov 2016 14:55:47 +0100 Subject: [PATCH 161/297] Update CHANGES for PR#3059 --- CHANGES | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES b/CHANGES index c629a82db..a49f2423b 100644 --- a/CHANGES +++ b/CHANGES @@ -23,6 +23,7 @@ Bugs fixed Japanese documents since PR#3030) * Better rendering of multiline signatures in html. * #777: LaTeX output "too deeply nested" (ref #3096) +* Let LaTeX image inclusion obey ``scale`` before textwidth fit (ref #2865, #3059) Release 1.5 alpha2 (released Oct 17, 2016) ========================================== From 0f35b9450010cd443205ed475c896b8a45697ef1 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Wed, 2 Nov 2016 23:01:58 +0900 Subject: [PATCH 162/297] Update CHANGES for PR#3071 --- CHANGES | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES b/CHANGES index a49f2423b..ad00acb73 100644 --- a/CHANGES +++ b/CHANGES @@ -14,6 +14,8 @@ Features added * Add ``--extensions`` to ``sphinx-quickstart`` to support enable arbitrary extensions from command line (ref: #2904) * #3104: ``'sphinxpackageoptions'`` for key=value styling of Sphinx LaTeX +* #3071: Autodoc: Allow mocked module decorators to pass-through functions + unchanged Bugs fixed ---------- From a1f6baaa8183e32e39dedede577955a2765f5d96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Gr=C3=B6nholm?= Date: Sat, 9 Apr 2016 17:24:34 +0300 Subject: [PATCH 163/297] Fix annotations formatting for plain typing.Callable The typing.Callable class may be used without generic arguments, in which case it is equivalent to collections.abc.Callable. --- sphinx/ext/autodoc.py | 2 +- tests/test_autodoc.py | 9 +++++---- tests/typing_test_data.py | 9 +++++++-- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py index 148c09811..d3621e6db 100644 --- a/sphinx/ext/autodoc.py +++ b/sphinx/ext/autodoc.py @@ -313,7 +313,7 @@ def format_annotation(annotation): return '%s[%s]' % (qualified_name, param_str) elif hasattr(typing, 'CallableMeta') and \ isinstance(annotation, typing.CallableMeta) and \ - hasattr(annotation, '__args__') and \ + getattr(annotation, '__args__', None) is not None and \ hasattr(annotation, '__result__'): args = annotation.__args__ if args is Ellipsis: diff --git a/tests/test_autodoc.py b/tests/test_autodoc.py index 2b5d80efb..d2ba95608 100644 --- a/tests/test_autodoc.py +++ b/tests/test_autodoc.py @@ -1069,7 +1069,7 @@ def test_type_hints(): from sphinx.util.inspect import getargspec try: - from typing_test_data import f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10 + from typing_test_data import f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11 except (ImportError, SyntaxError): raise SkipTest('Cannot import Python code with function annotations') @@ -1104,10 +1104,11 @@ def test_type_hints(): # Callable types verify_arg_spec(f8, '(x: typing.Callable[[int, str], int]) -> None') + verify_arg_spec(f9, '(x: typing.Callable) -> None') # Tuple types - verify_arg_spec(f9, '(x: typing.Tuple[int, str],' - ' y: typing.Tuple[int, ...]) -> None') + verify_arg_spec(f10, '(x: typing.Tuple[int, str],' + ' y: typing.Tuple[int, ...]) -> None') # Instance annotations - verify_arg_spec(f10, '(x: CustomAnnotation, y: 123) -> None') + verify_arg_spec(f11, '(x: CustomAnnotation, y: 123) -> None') diff --git a/tests/typing_test_data.py b/tests/typing_test_data.py index beb8deebb..84bb3377b 100644 --- a/tests/typing_test_data.py +++ b/tests/typing_test_data.py @@ -48,7 +48,11 @@ def f8(x: Callable[[int, str], int]) -> None: pass -def f9(x: Tuple[int, str], y: Tuple[int, ...]) -> None: +def f9(x: Callable) -> None: + pass + + +def f10(x: Tuple[int, str], y: Tuple[int, ...]) -> None: pass @@ -56,5 +60,6 @@ class CustomAnnotation: def __repr__(self): return 'CustomAnnotation' -def f10(x: CustomAnnotation(), y: 123) -> None: + +def f11(x: CustomAnnotation(), y: 123) -> None: pass From 07caa321d33857a7881a5e0a2510cba26c7bda9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Gr=C3=B6nholm?= Date: Thu, 14 Apr 2016 20:53:24 +0300 Subject: [PATCH 164/297] Add comment about skipping plain Callable --- sphinx/ext/autodoc.py | 1 + 1 file changed, 1 insertion(+) diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py index d3621e6db..d9e108eb5 100644 --- a/sphinx/ext/autodoc.py +++ b/sphinx/ext/autodoc.py @@ -315,6 +315,7 @@ def format_annotation(annotation): isinstance(annotation, typing.CallableMeta) and \ getattr(annotation, '__args__', None) is not None and \ hasattr(annotation, '__result__'): + # Skipped in the case of plain typing.Callable args = annotation.__args__ if args is Ellipsis: args_str = '...' From 7a6f2ae8949bca7a0c2a4aa2e4984297cee52c63 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Thu, 3 Nov 2016 10:00:35 +0900 Subject: [PATCH 165/297] Fix py3.6b3 crashes with empty Callable annotation --- sphinx/ext/autodoc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py index d9e108eb5..9b8bc7e5f 100644 --- a/sphinx/ext/autodoc.py +++ b/sphinx/ext/autodoc.py @@ -293,7 +293,7 @@ def format_annotation(annotation): # arguments are in __parameters__. params = None if hasattr(annotation, '__args__'): - if len(annotation.__args__) <= 2: + if annotation.__args__ is None or len(annotation.__args__) <= 2: params = annotation.__args__ else: # typing.Callable args = ', '.join(format_annotation(a) for a in annotation.__args__[:-1]) From 097967ed253776fbad6b98df8275d51c1839e61a Mon Sep 17 00:00:00 2001 From: jfbu Date: Thu, 3 Nov 2016 18:28:52 +0100 Subject: [PATCH 166/297] allow word wrap in PDF output for inline literals modified: sphinx/texinputs/sphinx.sty --- sphinx/texinputs/sphinx.sty | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index f49371b8f..ce43ceeda 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -235,13 +235,18 @@ % Some custom font markup commands. % *** the macros without \sphinx prefix are still defined near end of file *** \newcommand{\sphinxstrong}[1]{{\textbf{#1}}} -% to obtain straight quotes we execute \@noligs as patched by upquote, the -% macro must be robust in case it is used in captions e.g., and \scantokens is -% needed in such cases and others such as \item[{\sphinxcode{'fontenc'}}] +% to obtain straight quotes we execute \@noligs as patched by upquote, and +% \scantokens is needed in cases where it would be too late for the macro to +% first set catcodes and then fetch its argument. We also make the contents +% breakable at non-escaped . , ; ? ! / using \sphinxbreaksviaactive. +% the macro must be protected if it ends up used in moving arguments, % in 'alltt' \@noligs is done already, and the \scantokens must be avoided. \DeclareRobustCommand{\sphinxcode}[1]{{\def\@tempa{alltt}% - \ifx\@tempa\@currenvir\else\@noligs\endlinechar\m@ne\everyeof{\noexpand}% - \expandafter\scantokens\fi {\texttt{#1}}}} + \ifx\@tempa\@currenvir\else + \sphinxbreaksviaactive\let\sphinxafterbreak\empty + \@noligs\endlinechar\m@ne\everyeof{\noexpand}% + \expandafter\scantokens + \fi {\texttt{#1}}}} \newcommand{\sphinxbfcode}[1]{\sphinxcode{\bfseries#1}} \newcommand{\sphinxemail}[1]{\textsf{#1}} \newcommand{\sphinxtablecontinued}[1]{\textsf{#1}} From d32d6f56efb2e290f5b978c200f56d981aef9622 Mon Sep 17 00:00:00 2001 From: jfbu Date: Thu, 3 Nov 2016 18:41:57 +0100 Subject: [PATCH 167/297] replace ``\DeclareRobustCommand`` by ``\long\protected\def`` --- sphinx/texinputs/sphinx.sty | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index ce43ceeda..969c83a43 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -241,7 +241,7 @@ % breakable at non-escaped . , ; ? ! / using \sphinxbreaksviaactive. % the macro must be protected if it ends up used in moving arguments, % in 'alltt' \@noligs is done already, and the \scantokens must be avoided. -\DeclareRobustCommand{\sphinxcode}[1]{{\def\@tempa{alltt}% +\long\protected\def\sphinxcode#1{{\def\@tempa{alltt}% \ifx\@tempa\@currenvir\else \sphinxbreaksviaactive\let\sphinxafterbreak\empty \@noligs\endlinechar\m@ne\everyeof{\noexpand}% @@ -1033,14 +1033,11 @@ \typeout{** (sphinx) defining (legacy) text style macros without \string\sphinx\space prefix} \typeout{** if clashes with packages, set latex_keep_old_macro_names=False in conf.py} - % robustified case needs special treatment - \newcommand\code{}\DeclareRobustCommand{\code}{}% - \expandafter\let\csname code \endcsname\relax\def\sphinxcode{\code}% - \@for\@tempa:=code ,strong,bfcode,email,tablecontinued,titleref,% + \@for\@tempa:=code,strong,bfcode,email,tablecontinued,titleref,% menuselection,accelerator,crossref,termref,optional\do {% first, check if command with no prefix already exists \expandafter\newcommand\csname\@tempa\endcsname{}% - % if no error give it the meaning defined so far with \sphinx prefix + % give it the meaning defined so far with \sphinx prefix \expandafter\let\csname\@tempa\expandafter\endcsname \csname sphinx\@tempa\endcsname % redefine the \sphinx prefixed macro to expand to non-prefixed one From ee8b558f141f89d236627132c28fe9a5d7d470ad Mon Sep 17 00:00:00 2001 From: jfbu Date: Thu, 3 Nov 2016 18:54:24 +0100 Subject: [PATCH 168/297] latex use ``\protected`` macros for ``\sphinxstyle...``'s commands also use ``\sphinxcode`` for literals in titles which will add the extras (straight quotes, breaks allowed at ``/`` and some other characters) --- sphinx/texinputs/sphinx.sty | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index 969c83a43..043856c65 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -1048,20 +1048,20 @@ % additional customizable styling % FIXME: convert this to package options ? -\newcommand*{\sphinxstyleindexentry}{\texttt} -\newcommand{\sphinxstyleindexextra}[1]{ \emph{(#1)}} -\newcommand*{\sphinxstyleindexpageref}{, \pageref} -\newcommand{\sphinxstyletopictitle}[1]{\textbf{#1}\par\medskip} +\protected\def\sphinxstyleindexentry {\texttt} +\long\protected\def\sphinxstyleindexextra #1{ \emph{(#1)}} +\protected\def\sphinxstyleindexpageref {, \pageref} +\long\protected\def\sphinxstyletopictitle #1{\textbf{#1}\par\medskip} \let\sphinxstylesidebartitle\sphinxstyletopictitle -\newcommand*{\sphinxstyleothertitle}{\textbf} -\newcommand{\sphinxstylesidebarsubtitle}[1]{~\\\textbf{#1} \smallskip} -\newcommand*{\sphinxstylethead}{\textsf} -\newcommand*{\sphinxstyleemphasis}{\emph} -\newcommand{\sphinxstyleliteralemphasis}[1]{\emph{\texttt{#1}}} -\newcommand*{\sphinxstylestrong}{\textbf} -\newcommand{\sphinxstyleliteralstrong}[1]{\textbf{\texttt{#1}}} -\newcommand*{\sphinxstyleabbreviation}{\textsc} -\newcommand*{\sphinxstyleliteralintitle}{\texttt} +\protected\def\sphinxstyleothertitle {\textbf} +\long\protected\def\sphinxstylesidebarsubtitle #1{~\\\textbf{#1} \smallskip} +\protected\def\sphinxstylethead {\textsf} +\protected\def\sphinxstyleemphasis {\emph} +\long\protected\def\sphinxstyleliteralemphasis#1{\emph{\sphinxcode{#1}}} +\protected\def\sphinxstylestrong {\textbf} +\protected\def\sphinxstyleliteralstrong {\sphinxbfcode} +\protected\def\sphinxstyleabbreviation {\textsc} +\protected\def\sphinxstyleliteralintitle {\sphinxcode} % stylesheet for highlighting with pygments \RequirePackage{sphinxhighlight} From aa1ea9b8632f0ab6d543a666ba189e6e1ec767bb Mon Sep 17 00:00:00 2001 From: jfbu Date: Thu, 3 Nov 2016 19:14:40 +0100 Subject: [PATCH 169/297] latex use more of ``\protected\def`` this makes the LaTeX macros more robust, less worrying about where they are used. --- sphinx/texinputs/sphinx.sty | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index 043856c65..8ae292aa2 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -234,7 +234,7 @@ % Some custom font markup commands. % *** the macros without \sphinx prefix are still defined near end of file *** -\newcommand{\sphinxstrong}[1]{{\textbf{#1}}} +\long\protected\def\sphinxstrong#1{{\textbf{#1}}} % to obtain straight quotes we execute \@noligs as patched by upquote, and % \scantokens is needed in cases where it would be too late for the macro to % first set catcodes and then fetch its argument. We also make the contents @@ -247,14 +247,14 @@ \@noligs\endlinechar\m@ne\everyeof{\noexpand}% \expandafter\scantokens \fi {\texttt{#1}}}} -\newcommand{\sphinxbfcode}[1]{\sphinxcode{\bfseries#1}} -\newcommand{\sphinxemail}[1]{\textsf{#1}} -\newcommand{\sphinxtablecontinued}[1]{\textsf{#1}} -\newcommand{\sphinxtitleref}[1]{\emph{#1}} -\newcommand{\sphinxmenuselection}[1]{\emph{#1}} -\newcommand{\sphinxaccelerator}[1]{\underline{#1}} -\newcommand{\sphinxcrossref}[1]{\emph{#1}} -\newcommand{\sphinxtermref}[1]{\emph{#1}} +\long\protected\def\sphinxbfcode#1{\sphinxcode{\bfseries#1}} +\long\protected\def\sphinxemail#1{\textsf{#1}} +\long\protected\def\sphinxtablecontinued#1{\textsf{#1}} +\long\protected\def\sphinxtitleref#1{\emph{#1}} +\long\protected\def\sphinxmenuselection#1{\emph{#1}} +\long\protected\def\sphinxaccelerator#1{\underline{#1}} +\long\protected\def\sphinxcrossref#1{\emph{#1}} +\long\protected\def\sphinxtermref#1{\emph{#1}} % Support large numbered footnotes in minipage % But now obsolete due to systematic use of \savenotes/\spewnotes From f2b63b473b1eeacf75c90f237aa729456755aae6 Mon Sep 17 00:00:00 2001 From: jfbu Date: Thu, 3 Nov 2016 20:03:53 +0100 Subject: [PATCH 170/297] fix python error in latex.py from commit 528b6c3 --- sphinx/writers/latex.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index d5895399d..67d504e76 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -444,9 +444,8 @@ class LaTeXTranslator(nodes.NodeVisitor): self.check_latex_elements() self.elements.update(builder.config.latex_elements) if self.elements['maxlistdepth']: - self.elements['sphinxpkgoptions'] = \ - ','.join(self.elements['sphinxpkgoptions'], 'maxlistdepth=%s' % - self.elements['maxlistdepth']) + self.elements['sphinxpkgoptions'] += (',maxlistdepth=%s' % + self.elements['maxlistdepth']) if self.elements['sphinxpkgoptions']: self.elements['sphinxpkgoptions'] = ('[%s]' % self.elements['sphinxpkgoptions']) From 3f4721e14072955e38007a5fa381ac3dec7b829b Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Fri, 4 Nov 2016 12:06:19 +0900 Subject: [PATCH 171/297] Refactore test_build_latex: add compile_latex_document() --- tests/test_build_latex.py | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/tests/test_build_latex.py b/tests/test_build_latex.py index c52a8c596..698348922 100644 --- a/tests/test_build_latex.py +++ b/tests/test_build_latex.py @@ -59,6 +59,28 @@ def kpsetest(*filenames): return True +# compile latex document with app.config.latex_engine +def compile_latex_document(app): + # now, try to run latex over it + with cd(app.outdir): + try: + ensuredir(app.config.latex_engine) + p = Popen([app.config.latex_engine, + '--interaction=nonstopmode', + '-output-directory=%s' % app.config.latex_engine, + 'SphinxTests.tex'], + stdout=PIPE, stderr=PIPE) + except OSError: # most likely the latex executable was not found + raise SkipTest + else: + stdout, stderr = p.communicate() + if p.returncode != 0: + print(stdout) + print(stderr) + assert False, '%s exited with return code %s' % ( + app.config.latex_engine, p.returncode) + + def test_latex(): if kpsetest(*STYLEFILES) is False: raise SkipTest('not running latex, the required styles do not seem to be installed') @@ -78,22 +100,7 @@ def build_latex_doc(app, status, warning, engine, docclass): # file from latex_additional_files assert (app.outdir / 'svgimg.svg').isfile() - # now, try to run latex over it - with cd(app.outdir): - try: - ensuredir(engine) - p = Popen([engine, '--interaction=nonstopmode', - '-output-directory=%s' % engine, 'SphinxTests.tex'], - stdout=PIPE, stderr=PIPE) - except OSError: # most likely the latex executable was not found - raise SkipTest - else: - stdout, stderr = p.communicate() - if p.returncode != 0: - print(stdout) - print(stderr) - assert False, '%s exited with return code %s' % ( - engine, p.returncode) + compile_latex_document(app) @with_app(buildername='latex') From 56958227c849eebba2eb64dc3fa263adc4fc7082 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Fri, 4 Nov 2016 15:14:41 +0900 Subject: [PATCH 172/297] Refactor test_bulid_latex: add skip_if_stylefiles_notfound() --- tests/test_build_latex.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/tests/test_build_latex.py b/tests/test_build_latex.py index 698348922..756648254 100644 --- a/tests/test_build_latex.py +++ b/tests/test_build_latex.py @@ -12,6 +12,7 @@ from __future__ import print_function import os import re +from functools import wraps from itertools import product from subprocess import Popen, PIPE @@ -21,7 +22,7 @@ from sphinx.errors import SphinxError from sphinx.util.osutil import cd, ensuredir from sphinx.writers.latex import LaTeXTranslator -from util import SkipTest, remove_unicode_literals, with_app, strip_escseq +from util import SkipTest, remove_unicode_literals, with_app, strip_escseq, skip_if from test_build_html import ENV_WARNINGS @@ -81,14 +82,20 @@ def compile_latex_document(app): app.config.latex_engine, p.returncode) -def test_latex(): +def skip_if_stylefiles_notfound(testfunc): if kpsetest(*STYLEFILES) is False: - raise SkipTest('not running latex, the required styles do not seem to be installed') + return skip_if(testfunc, + 'not running latex, the required styles do not seem to be installed') + else: + return testfunc + +def test_latex(): for engine, docclass in product(LATEX_ENGINES, DOCCLASSES): yield build_latex_doc, engine, docclass +@skip_if_stylefiles_notfound @with_app(buildername='latex') def build_latex_doc(app, status, warning, engine, docclass): app.config.latex_engine = engine From 463ab88b6769c0c0afd7fc4d29a2256be583b40e Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Fri, 4 Nov 2016 23:36:27 +0900 Subject: [PATCH 173/297] docs: sourcename has empty value on creating genindex and so on (refs: #3094) --- doc/templating.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/templating.rst b/doc/templating.rst index 5286e0312..b9f9410de 100644 --- a/doc/templating.rst +++ b/doc/templating.rst @@ -377,6 +377,7 @@ are in HTML form), these variables are also available: The name of the copied source file for the current document. This is only nonempty if the :confval:`html_copy_source` value is ``True``. + This has empty value on creating automatically-generated files. .. data:: toc From 2fb9f812082f340a30586a53e75da74dc54e6740 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Fri, 4 Nov 2016 23:55:32 +0900 Subject: [PATCH 174/297] Update CHANGES for PR#2495 --- CHANGES | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES b/CHANGES index ad00acb73..c339f953e 100644 --- a/CHANGES +++ b/CHANGES @@ -16,6 +16,8 @@ Features added * #3104: ``'sphinxpackageoptions'`` for key=value styling of Sphinx LaTeX * #3071: Autodoc: Allow mocked module decorators to pass-through functions unchanged +* #2495: linkcheck: Allow skipping anchor checking using + :confval:`linkcheck_anchors_ignore` Bugs fixed ---------- From e4d73df110619f22faadddffaf4dae0e10275cc5 Mon Sep 17 00:00:00 2001 From: jfbu Date: Wed, 19 Oct 2016 23:57:58 +0200 Subject: [PATCH 175/297] refactor multilingual setup, let "polyglossia" use ``\setmainlanguage`` --- sphinx/writers/latex.py | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 09de2349c..5dbfc5be5 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -396,20 +396,31 @@ class LaTeXTranslator(nodes.NodeVisitor): # no need for \\noindent here, used in flushright self.elements['logo'] = '\\sphinxincludegraphics{%s}\\par' % \ path.basename(builder.config.latex_logo) - # setup multilingual package + + if builder.config.language: + # use Sonny style if any language specified + self.elements['fncychap'] = '\\usepackage[Sonny]{fncychap}' + self.babel = ExtBabel(builder.config.language) + if builder.config.language and not self.babel.is_supported_language(): + # emit warning if specified language is invalid + # (only emitting, nothing changed to processing) + self.builder.warn('no Babel option known for language %r' % + builder.config.language) + + # simply use babel.get_language() always, as get_language() returns + # 'english' even if language is invalid or empty + self.elements['classoptions'] += ',' + self.babel.get_language() + + # set up multilingual module... if self.elements['polyglossia']: - self.elements['babel'] = '' # disable babel forcely - self.elements['multilingual'] = self.elements['polyglossia'] + self.elements['babel'] = '' # disable babel + self.elements['multilingual'] = '%s\n\\setmainlanguage{%s}' % \ + (self.elements['polyglossia'], self.babel.get_language()) elif self.elements['babel']: self.elements['multilingual'] = self.elements['babel'] - self.elements['classoptions'] += ',' + self.babel.get_language() if builder.config.language: - if not self.babel.is_supported_language(): - self.builder.warn('no Babel option known for language %r' % - builder.config.language) self.elements['shorthandoff'] = self.babel.get_shorthandoff() - self.elements['fncychap'] = '\\usepackage[Sonny]{fncychap}' # Times fonts don't work with Cyrillic languages if self.babel.uses_cyrillic(): @@ -424,6 +435,7 @@ class LaTeXTranslator(nodes.NodeVisitor): self.elements['multilingual'] = '' # disable fncychap in Japanese documents self.elements['fncychap'] = '' + if getattr(builder, 'usepackages', None): def declare_package(packagename, options=None): if options: From cf246d09c0a2d5b7924a691bf49dc54f4847406c Mon Sep 17 00:00:00 2001 From: jfbu Date: Thu, 3 Nov 2016 17:25:00 +0100 Subject: [PATCH 176/297] `latex_engine` template variable, check luatex85 only if lualatex engine --- sphinx/templates/latex/content.tex_t | 9 +++++++++ sphinx/texinputs/sphinxhowto.cls | 6 ------ sphinx/texinputs/sphinxmanual.cls | 6 ------ sphinx/writers/latex.py | 23 ++++++++++++++++------- 4 files changed, 25 insertions(+), 19 deletions(-) diff --git a/sphinx/templates/latex/content.tex_t b/sphinx/templates/latex/content.tex_t index bb824fa3e..670a92f46 100644 --- a/sphinx/templates/latex/content.tex_t +++ b/sphinx/templates/latex/content.tex_t @@ -1,5 +1,14 @@ %% Generated by Sphinx. \def\sphinxdocclass{<%= docclass %>} +<% if latex_engine == 'lualatex' -%> +\IfFileExists{luatex85.sty} + {\RequirePackage{luatex85}} + {\ifdefined\luatexversion\ifnum\luatexversion>84\relax + \PackageError{sphinx} + {** With this LuaTeX (\the\luatexversion),Sphinx requires luatex85.sty **} + {** Add the LaTeX package luatex85 to your TeX installation, and try again **} + \endinput\fi\fi} +<% endif -%> \documentclass[<%= papersize %>,<%= pointsize %><%= classoptions %>]{<%= wrapperclass %>} \ifdefined\pdfpxdimen \let\sphinxpxdimen\pdfpxdimen\else\newdimen\sphinxpxdimen diff --git a/sphinx/texinputs/sphinxhowto.cls b/sphinx/texinputs/sphinxhowto.cls index 586e2a0d1..3e34063ef 100644 --- a/sphinx/texinputs/sphinxhowto.cls +++ b/sphinx/texinputs/sphinxhowto.cls @@ -5,12 +5,6 @@ \NeedsTeXFormat{LaTeX2e}[1995/12/01] \ProvidesClass{sphinxhowto}[2016/10/12 v1.5 Document class (Sphinx HOWTO)] -\ifx\directlua\undefined\else -% if compiling with lualatex 0.85 or later load compatibility patch issued by -% the LaTeX team for older packages relying on \pdf named primitives. - \IfFileExists{luatex85.sty}{\RequirePackage{luatex85}}{} -\fi - % 'oneside' option overriding the 'twoside' default \newif\if@oneside \DeclareOption{oneside}{\@onesidetrue} diff --git a/sphinx/texinputs/sphinxmanual.cls b/sphinx/texinputs/sphinxmanual.cls index a56a2bf20..3a48c6760 100644 --- a/sphinx/texinputs/sphinxmanual.cls +++ b/sphinx/texinputs/sphinxmanual.cls @@ -5,12 +5,6 @@ \NeedsTeXFormat{LaTeX2e}[1995/12/01] \ProvidesClass{sphinxmanual}[2016/10/12 v1.5 Document class (Sphinx manual)] -\ifx\directlua\undefined\else -% if compiling with lualatex 0.85 or later load compatibility patch issued by -% the LaTeX team for older packages relying on \pdf named primitives. - \IfFileExists{luatex85.sty}{\RequirePackage{luatex85}}{} -\fi - % chapters starting at odd pages (overridden by 'openany' document option) \PassOptionsToClass{openright}{\sphinxdocclass} diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index a384d7aef..90d7096cd 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -46,6 +46,7 @@ URI_SCHEMES = ('mailto:', 'http:', 'https:', 'ftp:') SECNUMDEPTH = 3 DEFAULT_SETTINGS = { + 'latex_engine': 'pdflatex', 'papersize': 'letterpaper', 'pointsize': '10pt', 'pxunit': '49336sp', @@ -56,12 +57,10 @@ DEFAULT_SETTINGS = { 'sphinxpackageoptions': '', 'sphinxsetup': '', 'passoptionstopackages': '', - 'geometry': '\\usepackage[margin=1in,marginparwidth=0.5in]' - '{geometry}', + 'geometry': ('\\usepackage[margin=1in,marginparwidth=0.5in]' + '{geometry}'), 'inputenc': '', - 'utf8extra': ('\\ifdefined\\DeclareUnicodeCharacter\n' - ' \\DeclareUnicodeCharacter{00A0}{\\leavevmode\\nobreak\\ }\n' - '\\fi'), + 'utf8extra': '', 'cmappkg': '\\usepackage{cmap}', 'fontenc': '\\usepackage[T1]{fontenc}', 'amsmath': '\\usepackage{amsmath,amssymb,amstext}', @@ -103,13 +102,23 @@ DEFAULT_SETTINGS = { ADDITIONAL_SETTINGS = { 'pdflatex': { 'inputenc': '\\usepackage[utf8]{inputenc}', + 'utf8extra': '\\DeclareUnicodeCharacter{00A0}{\\nobreakspace}', }, 'xelatex': { - 'utf8extra': ('\\catcode`^^^^00a0\\active\\protected\\def^^^^00a0' - '{\\leavevmode\\nobreak\\ }'), + 'latex_engine': 'xelatex', 'polyglossia': '\\usepackage{polyglossia}', 'fontenc': '\\usepackage{fontspec}', 'fontpkg': '', + 'utf8extra': ('\\catcode`^^^^00a0\\active\\protected\\def^^^^00a0' + '{\\leavevmode\\nobreak\\ }'), + }, + 'lualatex': { + 'latex_engine': 'lualatex', + 'utf8extra': ('\\catcode`^^^^00a0\\active\\protected\\def^^^^00a0' + '{\\leavevmode\\nobreak\\ }'), + }, + 'platex': { + 'latex_engine': 'platex', }, } From be8034e1312ae9df69605ac366a293f370d989a4 Mon Sep 17 00:00:00 2001 From: jfbu Date: Fri, 4 Nov 2016 22:17:34 +0100 Subject: [PATCH 177/297] make inputenc template use conditional on latex_engine being pdflatex --- sphinx/templates/latex/content.tex_t | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sphinx/templates/latex/content.tex_t b/sphinx/templates/latex/content.tex_t index 670a92f46..1581a5822 100644 --- a/sphinx/templates/latex/content.tex_t +++ b/sphinx/templates/latex/content.tex_t @@ -15,7 +15,9 @@ \fi \sphinxpxdimen=<%= pxunit %>\relax <%= passoptionstopackages %> <%= geometry %> +<% if latex_engine == 'pdflatex' -%> <%= inputenc %> +<% endif -%> <%= utf8extra %> <%= cmappkg %> <%= fontenc %> From 5caa6c3be91ecbbf73b0858081ed1abde87313d7 Mon Sep 17 00:00:00 2001 From: jfbu Date: Fri, 4 Nov 2016 22:29:38 +0100 Subject: [PATCH 178/297] Update CHANGES for PR#3083 --- CHANGES | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES b/CHANGES index c339f953e..13d6fc648 100644 --- a/CHANGES +++ b/CHANGES @@ -28,6 +28,7 @@ Bugs fixed * Better rendering of multiline signatures in html. * #777: LaTeX output "too deeply nested" (ref #3096) * Let LaTeX image inclusion obey ``scale`` before textwidth fit (ref #2865, #3059) +* #3019: LaTeX fails on description of С function with arguments (ref #3083) Release 1.5 alpha2 (released Oct 17, 2016) ========================================== From 7b8ef11e5e133c1e589d4bcb59e3805b5b395d58 Mon Sep 17 00:00:00 2001 From: jfbu Date: Fri, 4 Nov 2016 22:31:54 +0100 Subject: [PATCH 179/297] Update CHANGES for PR#3116 --- CHANGES | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES b/CHANGES index 13d6fc648..d4fc58120 100644 --- a/CHANGES +++ b/CHANGES @@ -18,6 +18,7 @@ Features added unchanged * #2495: linkcheck: Allow skipping anchor checking using :confval:`linkcheck_anchors_ignore` +* #3116: allow word wrap in PDF output for inline literals (ref #3110) Bugs fixed ---------- From 7651b2de9bcef4505dc916f97b5a20e45886d633 Mon Sep 17 00:00:00 2001 From: jfbu Date: Fri, 4 Nov 2016 22:35:29 +0100 Subject: [PATCH 180/297] Update CHANGES --- CHANGES | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES b/CHANGES index d4fc58120..cd00371d9 100644 --- a/CHANGES +++ b/CHANGES @@ -18,6 +18,7 @@ Features added unchanged * #2495: linkcheck: Allow skipping anchor checking using :confval:`linkcheck_anchors_ignore` +* #3083: let Unicode no-break space act like LaTeX ``~`` (fixed #3019) * #3116: allow word wrap in PDF output for inline literals (ref #3110) Bugs fixed From 0473e438dcf766ba746b6fb08f2e1e49c1b66bc5 Mon Sep 17 00:00:00 2001 From: jfbu Date: Fri, 4 Nov 2016 23:57:00 +0100 Subject: [PATCH 181/297] add unit test for maxlistdepth (latex) --- tests/roots/test-maxlistdepth/conf.py | 14 ++++++ tests/roots/test-maxlistdepth/index.rst | 57 +++++++++++++++++++++++++ tests/test_build_latex.py | 9 ++++ 3 files changed, 80 insertions(+) create mode 100644 tests/roots/test-maxlistdepth/conf.py create mode 100644 tests/roots/test-maxlistdepth/index.rst diff --git a/tests/roots/test-maxlistdepth/conf.py b/tests/roots/test-maxlistdepth/conf.py new file mode 100644 index 000000000..5a43b67bf --- /dev/null +++ b/tests/roots/test-maxlistdepth/conf.py @@ -0,0 +1,14 @@ +# -*- coding: utf-8 -*- + +master_doc = 'index' +html_theme = 'classic' +exclude_patterns = ['_build'] + +latex_documents = [ + ('index', 'SphinxTests.tex', 'Testing maxlistdepth=10', + 'Georg Brandl', 'howto'), + ] + +latex_elements = { + 'maxlistdepth': '10', +} diff --git a/tests/roots/test-maxlistdepth/index.rst b/tests/roots/test-maxlistdepth/index.rst new file mode 100644 index 000000000..5d9bc2193 --- /dev/null +++ b/tests/roots/test-maxlistdepth/index.rst @@ -0,0 +1,57 @@ +test-maxlistdepth +================= + + +1. 1 + + 1. 2 + + 1. 3 + + 1. 4 + + 1. 5 + + 1. 6 + + 1. 7 + + 1. 8 + + 1. 9 + + 10a + + - 10b + + .. code-block:: python + + def foo(): + + +- 1 + + - 2 + + - 3 + + - 4 + + - 5 + + - 6 + + - 7 + + - 8 + + 1. 9 + + 10a + + 1. 10b + + .. code-block:: python + + def foo(): + diff --git a/tests/test_build_latex.py b/tests/test_build_latex.py index 756648254..098d76fcf 100644 --- a/tests/test_build_latex.py +++ b/tests/test_build_latex.py @@ -710,3 +710,12 @@ def test_latex_toplevel_sectioning_is_section(app, status, warning): print(status.getvalue()) print(warning.getvalue()) assert '\\section{Foo}' in result + +@with_app(buildername='latex', testroot='maxlistdepth') +def test_maxlistdepth_at_ten(app, status, warning): + app.builder.build_all() + result = (app.outdir / 'SphinxTests.tex').text(encoding='utf8') + print(result) + print(status.getvalue()) + print(warning.getvalue()) + compile_latex_document(app) From e49132d3e4f63cdeb06daf20f4ea9968b62c03d8 Mon Sep 17 00:00:00 2001 From: jfbu Date: Sat, 5 Nov 2016 11:06:49 +0100 Subject: [PATCH 182/297] use inputenc latex template variable always --- doc/config.rst | 2 +- sphinx/templates/latex/content.tex_t | 2 -- sphinx/writers/latex.py | 4 +++- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/config.rst b/doc/config.rst index ec26d7b2f..da9892be9 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -1768,7 +1768,7 @@ These options influence LaTeX output. See further :doc:`latex`. ``'inputenc'`` "inputenc" package inclusion, defaults to ``'\\usepackage[utf8]{inputenc}'`` when using pdflatex. - Otherwise unset. + Otherwise empty. .. versionchanged:: 1.4.3 Previously ``'\\usepackage[utf8]{inputenc}'`` was used for all diff --git a/sphinx/templates/latex/content.tex_t b/sphinx/templates/latex/content.tex_t index 1581a5822..670a92f46 100644 --- a/sphinx/templates/latex/content.tex_t +++ b/sphinx/templates/latex/content.tex_t @@ -15,9 +15,7 @@ \fi \sphinxpxdimen=<%= pxunit %>\relax <%= passoptionstopackages %> <%= geometry %> -<% if latex_engine == 'pdflatex' -%> <%= inputenc %> -<% endif -%> <%= utf8extra %> <%= cmappkg %> <%= fontenc %> diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 90d7096cd..84697a4f9 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -102,7 +102,9 @@ DEFAULT_SETTINGS = { ADDITIONAL_SETTINGS = { 'pdflatex': { 'inputenc': '\\usepackage[utf8]{inputenc}', - 'utf8extra': '\\DeclareUnicodeCharacter{00A0}{\\nobreakspace}', + 'utf8extra': ('\\ifdefined\\DeclareUnicodeCharacter\n' + ' \\DeclareUnicodeCharacter{00A0}{\\nobreakspace}\n' + '\\fi'), }, 'xelatex': { 'latex_engine': 'xelatex', From 8b3b8e01cc3b36894de6b3fe7d0922c4ae7df642 Mon Sep 17 00:00:00 2001 From: jfbu Date: Sat, 5 Nov 2016 11:11:51 +0100 Subject: [PATCH 183/297] clarify wording in documentation of latex config --- doc/config.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/config.rst b/doc/config.rst index ec26d7b2f..2d93538d5 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -1761,8 +1761,9 @@ These options influence LaTeX output. See further :doc:`latex`. - Using this key may prove incompatible with some LaTeX packages or special document classes which do their own list customization. - - The key setting is silently *ignored* in presence of "enumitem". - Use then rather the dedicated commands of this LaTeX package. + - The key setting is silently *ignored* if ``\usepackage{enumitem}`` + is executed inside the document preamble. Use then rather the + dedicated commands of this LaTeX package. .. versionadded:: 1.5 ``'inputenc'`` From 53d202440fbcd0838251b59047e27e24dfc7d337 Mon Sep 17 00:00:00 2001 From: jfbu Date: Sat, 5 Nov 2016 11:50:12 +0100 Subject: [PATCH 184/297] add ``@skip_if_stylefiles_notfound`` to maxlistdepth test --- tests/test_build_latex.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test_build_latex.py b/tests/test_build_latex.py index 098d76fcf..fcef77be6 100644 --- a/tests/test_build_latex.py +++ b/tests/test_build_latex.py @@ -711,6 +711,7 @@ def test_latex_toplevel_sectioning_is_section(app, status, warning): print(warning.getvalue()) assert '\\section{Foo}' in result +@skip_if_stylefiles_notfound @with_app(buildername='latex', testroot='maxlistdepth') def test_maxlistdepth_at_ten(app, status, warning): app.builder.build_all() From a50dfbab0cf373b71fbd891b248b0dc53ac581cd Mon Sep 17 00:00:00 2001 From: jfbu Date: Sat, 5 Nov 2016 16:43:13 +0100 Subject: [PATCH 185/297] add option to control if inline literal word-wraps in latex --- doc/latex.rst | 10 ++++++++++ sphinx/texinputs/sphinx.sty | 5 ++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/doc/latex.rst b/doc/latex.rst index 1e6eb6642..b26f629d3 100644 --- a/doc/latex.rst +++ b/doc/latex.rst @@ -151,6 +151,16 @@ Here are the currently available options together with their default values. before or after, but this is accessible currently only by re-defining some macros with complicated LaTeX syntax from :file:`sphinx.sty`. +``inlineliteralwraps`` + default ``true``. Allows linebreaks inside inline literals: but extra + potential break-points (additionally to those allowed by LaTeX at spaces + or for hyphenation) are currently inserted only after the characters ``. , + ; ? ! /``. Due to TeX internals, white space in the line will be stretched + (or shrinked) in order to accomodate the linebreak. + + .. versionadded:: 1.5 + set this option to ``false`` to recover former behaviour. + ``verbatimvisiblespace`` default ``\textcolor{red}{\textvisiblespace}``. When a long code line is split, space characters located at end of the line before the break are diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index 8ae292aa2..c25b4d8e2 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -85,6 +85,7 @@ % verbatim \DeclareBoolOption[true]{verbatimwithframe} \DeclareBoolOption[true]{verbatimwrapslines} +\DeclareBoolOption[true]{inlineliteralwraps} % \textvisiblespace for compatibility with fontspec+XeTeX/LuaTeX \DeclareStringOption[\textcolor{red}{\textvisiblespace}]{verbatimvisiblespace} \DeclareStringOption % must use braces to hide the brackets @@ -243,7 +244,9 @@ % in 'alltt' \@noligs is done already, and the \scantokens must be avoided. \long\protected\def\sphinxcode#1{{\def\@tempa{alltt}% \ifx\@tempa\@currenvir\else - \sphinxbreaksviaactive\let\sphinxafterbreak\empty + \ifspx@opt@inlineliteralwraps + \sphinxbreaksviaactive\let\sphinxafterbreak\empty + \fi \@noligs\endlinechar\m@ne\everyeof{\noexpand}% \expandafter\scantokens \fi {\texttt{#1}}}} From 44160fa691fcce6fb5ad1c204258fc6e86a54589 Mon Sep 17 00:00:00 2001 From: jfbu Date: Sat, 5 Nov 2016 16:58:01 +0100 Subject: [PATCH 186/297] rename ``'sphinxpackageoptions'`` to ``'sphinxsetup'`` --- doc/config.rst | 2 +- doc/latex.rst | 8 ++++---- sphinx/writers/latex.py | 5 ++--- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/doc/config.rst b/doc/config.rst index 6bc49e9f9..3c8decbfe 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -1695,7 +1695,7 @@ These options influence LaTeX output. See further :doc:`latex`. to use ``'47363sp'``. To obtain ``72px=1in``, use ``'1bp'``. .. versionadded:: 1.5 - ``'sphinxpackageoptions'`` + ``'sphinxsetup'`` A comma separated list of ``key=value`` package options for the Sphinx LaTeX style, default empty. See :doc:`latex`. diff --git a/doc/latex.rst b/doc/latex.rst index 1e6eb6642..0d6300091 100644 --- a/doc/latex.rst +++ b/doc/latex.rst @@ -78,7 +78,7 @@ configured, for example:: The Sphinx LaTeX style package options -------------------------------------- -The ``'sphinxpackageoptions'`` key to :confval:`latex_elements` provides a +The ``'sphinxsetup'`` key to :confval:`latex_elements` provides a more convenient interface to various style parameters. It is a comma separated string of ``key=value`` instructions:: @@ -99,10 +99,10 @@ If non-empty, it will be passed as argument to the ``\sphinxsetup`` command:: - Most options described next could also have been positioned as :file:`sphinx.sty` package options. But for those where the key value contains some LaTeX code the use of ``\sphinxsetup`` is mandatory. Hence - the whole ``'sphinxpackageoptions'`` string is passed as argument to + the whole ``'sphinxsetup'`` string is passed as argument to ``\sphinxsetup``. - - As an alternative to the ``'sphinxpackageoptions'`` key, it is possibly + - As an alternative to the ``'sphinxsetup'`` key, it is possibly to insert explicitely the ``\\sphinxsetup{key=value,..}`` inside the ``'preamble'`` key. It is even possible to use the ``\sphinxsetup`` in the body of the document, via the :rst:dir:`raw` directive, to modify @@ -355,7 +355,7 @@ Let us now list some macros from the package file English is the document language). Their default definitions use either the *sphinxheavybox* (for the first listed directives) or the *sphinxlightbox* environments, configured to use the parameters (colours, border thickness) - specific to each type, which can be set via ``'sphinxpackageoptions'`` string. + specific to each type, which can be set via ``'sphinxsetup'`` string. .. versionchanged:: 1.5 use of public environment names, separate customizability of the parameters. diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 84697a4f9..905b04f46 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -54,7 +54,6 @@ DEFAULT_SETTINGS = { 'extraclassoptions': '', 'maxlistdepth': '', 'sphinxpkgoptions': '', - 'sphinxpackageoptions': '', 'sphinxsetup': '', 'passoptionstopackages': '', 'geometry': ('\\usepackage[margin=1in,marginparwidth=0.5in]' @@ -474,9 +473,9 @@ class LaTeXTranslator(nodes.NodeVisitor): if self.elements['sphinxpkgoptions']: self.elements['sphinxpkgoptions'] = ('[%s]' % self.elements['sphinxpkgoptions']) - if self.elements['sphinxpackageoptions']: + if self.elements['sphinxsetup']: self.elements['sphinxsetup'] = ('\\sphinxsetup{%s}' % - self.elements['sphinxpackageoptions']) + self.elements['sphinxsetup']) if self.elements['extraclassoptions']: self.elements['classoptions'] += ',' + \ self.elements['extraclassoptions'] From 4c38038f647b48466a3a12216c57b9dfb81dece6 Mon Sep 17 00:00:00 2001 From: jfbu Date: Sat, 5 Nov 2016 18:43:03 +0100 Subject: [PATCH 187/297] latex multilingual and contentsname setup to after getting user setup --- sphinx/writers/latex.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 84697a4f9..3b2a43fd5 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -437,6 +437,9 @@ class LaTeXTranslator(nodes.NodeVisitor): # disable fncychap in Japanese documents self.elements['fncychap'] = '' + # set 'babel' to improbable value to detect if user has used it + self.elements['babel'] = '3.1415' + if getattr(builder, 'usepackages', None): def declare_package(packagename, options=None): if options: @@ -462,12 +465,17 @@ class LaTeXTranslator(nodes.NodeVisitor): if tocdepth >= SECNUMDEPTH: # Increase secnumdepth if tocdepth is depther than default SECNUMDEPTH self.elements['secnumdepth'] = '\\setcounter{secnumdepth}{%d}' % tocdepth - if getattr(document.settings, 'contentsname', None): - self.elements['contentsname'] = \ - self.babel_renewcommand('\\contentsname', document.settings.contentsname) # allow the user to override them all self.check_latex_elements() self.elements.update(builder.config.latex_elements) + + if self.elements['babel'] != '3.1415': + self.elements['multilingual'] = self.elements['babel'] + + if getattr(document.settings, 'contentsname', None): + self.elements['contentsname'] = \ + self.babel_renewcommand('\\contentsname', document.settings.contentsname) + if self.elements['maxlistdepth']: self.elements['sphinxpkgoptions'] += (',maxlistdepth=%s' % self.elements['maxlistdepth']) From b35539bd2e83c61436ca201e79af48fe037669e1 Mon Sep 17 00:00:00 2001 From: jfbu Date: Sat, 5 Nov 2016 19:25:20 +0100 Subject: [PATCH 188/297] reset ``'babel'`` to empty if it was for ``babel_renewcommand`` ok --- sphinx/writers/latex.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 3b2a43fd5..d224ae323 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -438,7 +438,10 @@ class LaTeXTranslator(nodes.NodeVisitor): self.elements['fncychap'] = '' # set 'babel' to improbable value to detect if user has used it - self.elements['babel'] = '3.1415' + if self.elements['babel']: + self.elements['babel'] = '3.1415' + else: + self.elements['babel'] = '2.7182' if getattr(builder, 'usepackages', None): def declare_package(packagename, options=None): @@ -470,7 +473,10 @@ class LaTeXTranslator(nodes.NodeVisitor): self.elements.update(builder.config.latex_elements) if self.elements['babel'] != '3.1415': - self.elements['multilingual'] = self.elements['babel'] + if self.elements['babel'] != '2.7182': + self.elements['multilingual'] = self.elements['babel'] + else: + self.elements['babel'] = '' if getattr(document.settings, 'contentsname', None): self.elements['contentsname'] = \ From 86c54575bef74c4140e2c2efcb88e953ea76c28b Mon Sep 17 00:00:00 2001 From: shimizukawa Date: Sun, 6 Nov 2016 09:36:33 +0900 Subject: [PATCH 189/297] Closes #930: sphinx-apidoc allow wildcards for excluding paths. --- CHANGES | 1 + sphinx/apidoc.py | 9 +++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index cd00371d9..2ab276671 100644 --- a/CHANGES +++ b/CHANGES @@ -20,6 +20,7 @@ Features added :confval:`linkcheck_anchors_ignore` * #3083: let Unicode no-break space act like LaTeX ``~`` (fixed #3019) * #3116: allow word wrap in PDF output for inline literals (ref #3110) +* #930: sphinx-apidoc allow wildcards for excluding paths. Thanks to Nick Coghlan. Bugs fixed ---------- diff --git a/sphinx/apidoc.py b/sphinx/apidoc.py index 6b140260d..05928be81 100644 --- a/sphinx/apidoc.py +++ b/sphinx/apidoc.py @@ -21,6 +21,7 @@ import sys import optparse from os import path from six import binary_type +from fnmatch import fnmatch from sphinx.util.osutil import FileAvoidWrite, walk from sphinx import __display_version__ @@ -257,7 +258,7 @@ def is_excluded(root, excludes): e.g. an exlude "foo" also accidentally excluding "foobar". """ for exclude in excludes: - if root == exclude: + if fnmatch(root, exclude): return True return False @@ -266,13 +267,13 @@ def main(argv=sys.argv): """Parse and check the command line arguments.""" parser = optparse.OptionParser( usage="""\ -usage: %prog [options] -o [exclude_path, ...] +usage: %prog [options] -o [exclude_pattern, ...] Look recursively in for Python modules and packages and create one reST file with automodule directives per package in the . -The s can be files and/or directories that will be excluded -from generation. +The s can be file and/or directory patterns that will be +excluded from generation. Note: By default this script will not overwrite already created files.""") From bc188dcdad8e6a571a10cfc61651f7fbc4e8e652 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sat, 5 Nov 2016 17:08:18 +0900 Subject: [PATCH 190/297] Fix typo --- CHANGES | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 2ab276671..236577b3a 100644 --- a/CHANGES +++ b/CHANGES @@ -148,7 +148,7 @@ Incompatible changes * Drop python 2.6 and 3.3 support * Drop epub3 builder's ``epub3_page_progression_direction`` option (use ``epub3_writing_mode``). * #2877: Rename ``latex_elements['footer']`` to - ``latex_elements['postpreamble']`` + ``latex_elements['postamble']`` Features added -------------- From 1e92b30ddbf9dcc70b3c543a0d70161b32cf0d33 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sun, 6 Nov 2016 11:31:22 +0900 Subject: [PATCH 191/297] Update CHANGES for PR#3122 --- CHANGES | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 236577b3a..a538bd1e1 100644 --- a/CHANGES +++ b/CHANGES @@ -13,7 +13,7 @@ Features added just the value of Enum attributes instead of Enum attribute representation. * Add ``--extensions`` to ``sphinx-quickstart`` to support enable arbitrary extensions from command line (ref: #2904) -* #3104: ``'sphinxpackageoptions'`` for key=value styling of Sphinx LaTeX +* #3104, #3122: ``'sphinxsetup'`` for key=value styling of Sphinx LaTeX * #3071: Autodoc: Allow mocked module decorators to pass-through functions unchanged * #2495: linkcheck: Allow skipping anchor checking using From 74c6b95fe467b9d84d287df3c8f66d63000db35f Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sun, 6 Nov 2016 14:56:16 +0900 Subject: [PATCH 192/297] Update CHANGES for PR#3121 --- CHANGES | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES b/CHANGES index a538bd1e1..eaaa90a2d 100644 --- a/CHANGES +++ b/CHANGES @@ -21,6 +21,8 @@ Features added * #3083: let Unicode no-break space act like LaTeX ``~`` (fixed #3019) * #3116: allow word wrap in PDF output for inline literals (ref #3110) * #930: sphinx-apidoc allow wildcards for excluding paths. Thanks to Nick Coghlan. +* #3121: add ``inlineliteralwraps`` option to control if inline literal + word-wraps in latex Bugs fixed ---------- From 04e1e7d538019217a00605c7af21f61be6ede1fc Mon Sep 17 00:00:00 2001 From: jfbu Date: Sun, 6 Nov 2016 08:10:27 +0100 Subject: [PATCH 193/297] fix use of CYRILLIC CAPITAL LETTER ES as C in CHANGES this broke build of PDF docs --- CHANGES | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index eaaa90a2d..a78e012bc 100644 --- a/CHANGES +++ b/CHANGES @@ -33,7 +33,7 @@ Bugs fixed * Better rendering of multiline signatures in html. * #777: LaTeX output "too deeply nested" (ref #3096) * Let LaTeX image inclusion obey ``scale`` before textwidth fit (ref #2865, #3059) -* #3019: LaTeX fails on description of С function with arguments (ref #3083) +* #3019: LaTeX fails on description of C function with arguments (ref #3083) Release 1.5 alpha2 (released Oct 17, 2016) ========================================== From bdede5e9b6bd1a8cb20a660c5c7787b0ff9d7421 Mon Sep 17 00:00:00 2001 From: jfbu Date: Sun, 6 Nov 2016 08:42:45 +0100 Subject: [PATCH 194/297] update documentation of ``'babel'`` key for latex --- doc/config.rst | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/doc/config.rst b/doc/config.rst index 3c8decbfe..6e8488862 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -1712,7 +1712,14 @@ These options influence LaTeX output. See further :doc:`latex`. .. versionadded:: 1.5 ``'babel'`` - "babel" package inclusion, default ``'\\usepackage{babel}'``. + "babel" package inclusion, default ``'\\usepackage{babel}'`` (the + suitable document language string is passed as class option, and + ``english`` is used if no language.) For Japanese documents, the + default is the empty string. + + .. versionchanged:: 1.5 + For :confval:`latex_engine` set to ``'xelatex'``, the default + is ``'\\usepackage{polyglossia}\n\\setmainlanguage{}'``. ``'fontpkg'`` Font package inclusion, default ``'\\usepackage{times}'`` (which uses Times and Helvetica). You can set this to ``''`` to use the Computer From 6481af9f5d27cb39f100efd80a76b1a03f695ea0 Mon Sep 17 00:00:00 2001 From: jfbu Date: Sun, 6 Nov 2016 09:07:03 +0100 Subject: [PATCH 195/297] update ``'fontenc'`` and ``'fontpkg'`` doc --- doc/config.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/config.rst b/doc/config.rst index 6e8488862..580e3b514 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -1728,6 +1728,8 @@ These options influence LaTeX output. See further :doc:`latex`. .. versionchanged:: 1.2 Defaults to ``''`` when the :confval:`language` uses the Cyrillic script. + .. versionchanged:: 1.5 + Defaults to ``''`` when :confval:`latex_engine` is ``'xelatex'``. ``'fncychap'`` Inclusion of the "fncychap" package (which makes fancy chapter titles), default ``'\\usepackage[Bjarne]{fncychap}'`` for English documentation @@ -1787,6 +1789,10 @@ These options influence LaTeX output. See further :doc:`latex`. .. versionadded:: 1.2 ``'fontenc'`` "fontenc" package inclusion, default ``'\\usepackage[T1]{fontenc}'``. + + .. versionchanged:: 1.5 + Defaults to ``'\\usepackage{fontspec}'`` when + :confval:`latex_engine` is ``'xelatex'``. ``'hyperref'`` "hyperref" package inclusion; also loads package "hypcap" and issues ``\urlstyle{same}``. This is done after :file:`sphinx.sty` file is From ceb4e9a805f97c2bf9744ae8c74a391c21f19c8f Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sun, 6 Nov 2016 17:50:54 +0900 Subject: [PATCH 196/297] Use sphinx-doc.org for testing --- tests/roots/test-linkcheck/links.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/roots/test-linkcheck/links.txt b/tests/roots/test-linkcheck/links.txt index ef3607970..36376bef4 100644 --- a/tests/roots/test-linkcheck/links.txt +++ b/tests/roots/test-linkcheck/links.txt @@ -1,8 +1,8 @@ This is from CPython documentation. * Also, if there is a `default namespace `__, that full URI gets prepended to all of the non-prefixed tags. -* The `SSMEDIAN `_ function in the Gnome Gnumeric spreadsheet. +* The URL having anchor: `http://www.sphinx-doc.org/en/1.4.8/tutorial.html#install-sphinx`_ Some additional anchors to exercise ignore code From e78c17605c1aaaee63cf4d5726c73430b5020739 Mon Sep 17 00:00:00 2001 From: jfbu Date: Sun, 6 Nov 2016 10:11:40 +0100 Subject: [PATCH 197/297] rename ``'postamble'`` to ``'atendofbody'`` (ref #2877) --- CHANGES | 2 +- doc/config.rst | 8 +++++--- sphinx/templates/latex/content.tex_t | 2 +- sphinx/writers/latex.py | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/CHANGES b/CHANGES index a78e012bc..5d7c84883 100644 --- a/CHANGES +++ b/CHANGES @@ -150,7 +150,7 @@ Incompatible changes * Drop python 2.6 and 3.3 support * Drop epub3 builder's ``epub3_page_progression_direction`` option (use ``epub3_writing_mode``). * #2877: Rename ``latex_elements['footer']`` to - ``latex_elements['postamble']`` + ``latex_elements['atendofbody']`` Features added -------------- diff --git a/doc/config.rst b/doc/config.rst index 580e3b514..f7310414e 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -1740,8 +1740,10 @@ These options influence LaTeX output. See further :doc:`latex`. "Bjornstrup". You can also set this to ``''`` to disable fncychap. ``'preamble'`` Additional preamble content, default empty. See :doc:`latex`. - ``'postamble'`` - Additional postamble content (before the indices), default empty. + ``'atendofbody'`` + Additional document content (right before the indices), default empty. + + .. versionadded:: 1.5 ``'figure_align'`` Latex figure float alignment, default 'htbp' (here, top, bottom, page). Whenever an image doesn't fit into the current page, it will be @@ -1754,7 +1756,7 @@ These options influence LaTeX output. See further :doc:`latex`. Additional footer content (before the indices), default empty. .. deprecated:: 1.5 - User ``'postamble'`` key instead. + User ``'atendofbody'`` key instead. * Keys that don't need be overridden unless in special cases are: diff --git a/sphinx/templates/latex/content.tex_t b/sphinx/templates/latex/content.tex_t index 670a92f46..e35c83648 100644 --- a/sphinx/templates/latex/content.tex_t +++ b/sphinx/templates/latex/content.tex_t @@ -45,7 +45,7 @@ \renewcommand{\releasename}{<%= releasename %>} <%= makeindex %> <%= body %> -<%= postamble %> +<%= atendofbody %> <%= indices %> \renewcommand{\indexname}{<%= indexname %>} <%= printindex %> diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 905b04f46..60483ded5 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -89,7 +89,7 @@ DEFAULT_SETTINGS = { 'shorthandoff': '', 'maketitle': '\\maketitle', 'tableofcontents': '\\sphinxtableofcontents', - 'postamble': '', + 'atendofbody': '', 'printindex': '\\printindex', 'transition': '\n\n\\bigskip\\hrule{}\\bigskip\n\n', 'figure_align': 'htbp', From ee4138a1de4f07436498e0c55b8492da91a9ea92 Mon Sep 17 00:00:00 2001 From: jfbu Date: Sun, 6 Nov 2016 11:30:30 +0100 Subject: [PATCH 198/297] fix typo in doc --- doc/config.rst | 2 +- doc/latex.rst | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/config.rst b/doc/config.rst index f7310414e..34900535f 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -1756,7 +1756,7 @@ These options influence LaTeX output. See further :doc:`latex`. Additional footer content (before the indices), default empty. .. deprecated:: 1.5 - User ``'atendofbody'`` key instead. + Use ``'atendofbody'`` key instead. * Keys that don't need be overridden unless in special cases are: diff --git a/doc/latex.rst b/doc/latex.rst index ce923df7b..d378f2090 100644 --- a/doc/latex.rst +++ b/doc/latex.rst @@ -154,8 +154,9 @@ Here are the currently available options together with their default values. ``inlineliteralwraps`` default ``true``. Allows linebreaks inside inline literals: but extra potential break-points (additionally to those allowed by LaTeX at spaces - or for hyphenation) are currently inserted only after the characters ``. , - ; ? ! /``. Due to TeX internals, white space in the line will be stretched + or for hyphenation) are currently inserted only after the characters + ``. , ; ? ! /``. Due to TeX internals, white space in the line will be + stretched (or shrinked) in order to accomodate the linebreak. .. versionadded:: 1.5 From da271b6373aa54b670a86c6ad56d25c8d4c7e6af Mon Sep 17 00:00:00 2001 From: jfbu Date: Sun, 6 Nov 2016 12:27:33 +0100 Subject: [PATCH 199/297] fix ``\t`` which got converted to tab in conf.py.txt --- doc/_static/conf.py.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/_static/conf.py.txt b/doc/_static/conf.py.txt index ad90366b2..e8ad9ca98 100644 --- a/doc/_static/conf.py.txt +++ b/doc/_static/conf.py.txt @@ -285,8 +285,8 @@ latex_documents = [ # # latex_appendices = [] -# It false, will not define \strong, \code, itleref, \crossref ... but only -# \sphinxstrong, ..., \sphinxtitleref, ... To help avoid clash with user added +# If false, will not define \strong, \code, \titleref, \crossref ... but only +# \sphinxstrong, ..., \sphinxtitleref, ... to help avoid clash with user added # packages. # # latex_keep_old_macro_names = True From 4250052eda05717d8069b0c4820d3978c3760fe5 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sun, 6 Nov 2016 20:37:07 +0900 Subject: [PATCH 200/297] doc: Fix markup --- doc/faq.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/faq.rst b/doc/faq.rst index 04bd05717..ac78b05ca 100644 --- a/doc/faq.rst +++ b/doc/faq.rst @@ -248,7 +248,7 @@ The following notes may be helpful if you want to create Texinfo files: info:Texinfo#makeinfo_options - which produces: + which produces:: info:Texinfo#makeinfo_options From f04adb1aa6dce9ff2b74883345c91c2916ae7e43 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Thu, 3 Nov 2016 10:00:35 +0900 Subject: [PATCH 201/297] Fix py3.6b3 crashes with empty Callable annotation --- sphinx/ext/autodoc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py index 208a228f0..1006d78b4 100644 --- a/sphinx/ext/autodoc.py +++ b/sphinx/ext/autodoc.py @@ -283,7 +283,7 @@ def format_annotation(annotation): # arguments are in __parameters__. params = None if hasattr(annotation, '__args__'): - if len(annotation.__args__) <= 2: + if annotation.__args__ is None or len(annotation.__args__) <= 2: params = annotation.__args__ else: # typing.Callable args = ', '.join(format_annotation(a) for a in annotation.__args__[:-1]) From f2091e051253b3b2821479babe948f059b75c017 Mon Sep 17 00:00:00 2001 From: jfbu Date: Sun, 6 Nov 2016 12:41:22 +0100 Subject: [PATCH 202/297] fix bottom of conf.py.txt --- doc/_static/conf.py.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/_static/conf.py.txt b/doc/_static/conf.py.txt index e8ad9ca98..ab54f15b8 100644 --- a/doc/_static/conf.py.txt +++ b/doc/_static/conf.py.txt @@ -337,6 +337,8 @@ texinfo_documents = [ # # texinfo_no_detailmenu = False +# -- A random example ----------------------------------------------------- + import sys, os sys.path.insert(0, os.path.abspath('.')) exclude_patterns = ['zzz'] @@ -344,7 +346,6 @@ exclude_patterns = ['zzz'] numfig = True #language = 'ja' -extensions.append('sphinx.ext.autodoc') extensions.append('sphinx.ext.todo') extensions.append('sphinx.ext.autodoc') #extensions.append('sphinx.ext.autosummary') From 8ecd7ff08249739bbc6d900527fe9306592456ab Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sun, 6 Nov 2016 20:43:00 +0900 Subject: [PATCH 203/297] Restore themes/basic/defindex.html (refs: #2986) This reverts commits: * 32981d10481585342014e54445e6460ae6771627. * 6704672df286e60b290f325dffff958ba6bb4d94 --- CHANGES | 1 + sphinx/themes/agogo/static/agogo.css_t | 20 +++++++++++ sphinx/themes/basic/defindex.html | 35 +++++++++++++++++++ sphinx/themes/basic/static/basic.css_t | 22 ++++++++++++ sphinx/themes/epub/static/epub.css_t | 20 +++++++++++ sphinx/themes/nonav/static/nonav.css | 20 +++++++++++ .../traditional/static/traditional.css_t | 20 +++++++++++ 7 files changed, 138 insertions(+) create mode 100644 sphinx/themes/basic/defindex.html diff --git a/CHANGES b/CHANGES index 9d498fc95..89bcb4e58 100644 --- a/CHANGES +++ b/CHANGES @@ -80,6 +80,7 @@ Bugs fixed * #3009: Bad rendering of parsed-literals in LaTeX since Sphinx 1.4.4 * #3000: ``option`` directive generates invalid HTML anchors * #2984: Invalid HTML has been generated if `html_split_index` enabled +* #2986: themes/basic/defindex.html should be changed for html5 friendly * #2987: Invalid HTML has been generated if multiple IDs are assigned to a list * #2891: HTML search does not provide all the results * #1986: Title in PDF Output diff --git a/sphinx/themes/agogo/static/agogo.css_t b/sphinx/themes/agogo/static/agogo.css_t index c6e2aa64d..0baec16fc 100644 --- a/sphinx/themes/agogo/static/agogo.css_t +++ b/sphinx/themes/agogo/static/agogo.css_t @@ -435,6 +435,26 @@ ul.keywordmatches li.goodmatch a { font-weight: bold; } +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + /* -- general index --------------------------------------------------------- */ table.indextable td { diff --git a/sphinx/themes/basic/defindex.html b/sphinx/themes/basic/defindex.html new file mode 100644 index 000000000..33becfa0d --- /dev/null +++ b/sphinx/themes/basic/defindex.html @@ -0,0 +1,35 @@ +{# + basic/defindex.html + ~~~~~~~~~~~~~~~~~~~ + + Default template for the "index" page. + + :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +#} +{%- extends "layout.html" %} +{% set title = _('Overview') %} +{% block body %} +

                      {{ docstitle|e }}

                      +

                      + {{ _('Welcome! This is') }} + {% block description %}{{ _('the documentation for') }} {{ project|e }} + {{ release|e }}{% if last_updated %}, {{ _('last updated') }} {{ last_updated|e }}{% endif %}{% endblock %}. +

                      + {% block tables %} +

                      {{ _('Indices and tables:') }}

                      + + +
                      + + + + + +
                      + {% endblock %} +{% endblock %} diff --git a/sphinx/themes/basic/static/basic.css_t b/sphinx/themes/basic/static/basic.css_t index fcd3d208f..d70003d42 100644 --- a/sphinx/themes/basic/static/basic.css_t +++ b/sphinx/themes/basic/static/basic.css_t @@ -118,6 +118,28 @@ ul.keywordmatches li.goodmatch a { font-weight: bold; } +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + /* -- general index --------------------------------------------------------- */ table.indextable { diff --git a/sphinx/themes/epub/static/epub.css_t b/sphinx/themes/epub/static/epub.css_t index 7c4ca1217..ab8610072 100644 --- a/sphinx/themes/epub/static/epub.css_t +++ b/sphinx/themes/epub/static/epub.css_t @@ -134,6 +134,26 @@ ul.keywordmatches li.goodmatch a { font-weight: bold; } +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 130%; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + /* -- general index --------------------------------------------------------- */ table.indextable td { diff --git a/sphinx/themes/nonav/static/nonav.css b/sphinx/themes/nonav/static/nonav.css index 8891ae723..cbaee7ced 100644 --- a/sphinx/themes/nonav/static/nonav.css +++ b/sphinx/themes/nonav/static/nonav.css @@ -123,6 +123,26 @@ ul.keywordmatches li.goodmatch a { font-weight: bold; } +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 130%; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + /* -- general index --------------------------------------------------------- */ table.indextable td { diff --git a/sphinx/themes/traditional/static/traditional.css_t b/sphinx/themes/traditional/static/traditional.css_t index ac00820b9..306b5b51d 100644 --- a/sphinx/themes/traditional/static/traditional.css_t +++ b/sphinx/themes/traditional/static/traditional.css_t @@ -363,6 +363,26 @@ div.preview { margin-bottom: 30px; } + +/* :::: INDEX PAGE :::: */ + +table.contentstable { + width: 90%; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.5em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; +} + /* :::: GENINDEX STYLES :::: */ table.indextable td { From c94f3b7d7337b91c69dd54b0110426628fdea31f Mon Sep 17 00:00:00 2001 From: jfbu Date: Sun, 6 Nov 2016 12:56:16 +0100 Subject: [PATCH 204/297] fix faq.rst (texinfo example with ``info``) --- doc/faq.rst | 4 ---- 1 file changed, 4 deletions(-) diff --git a/doc/faq.rst b/doc/faq.rst index 4bb7ab08e..eaa663d92 100644 --- a/doc/faq.rst +++ b/doc/faq.rst @@ -282,10 +282,6 @@ The following notes may be helpful if you want to create Texinfo files: info:Texinfo#makeinfo_options - which produces:: - - info:Texinfo#makeinfo_options - - Inline markup The standard formatting for ``*strong*`` and ``_emphasis_`` can From 0cdfdb791506efbe8ea63d2369d66449ab92c3af Mon Sep 17 00:00:00 2001 From: jfbu Date: Sun, 6 Nov 2016 13:21:53 +0100 Subject: [PATCH 205/297] fix a latex issue in ``\sphinxcode`` for inline literals word-wrap this is the same issue which was fixed at 71b9f00 for code-blocks --- sphinx/texinputs/sphinx.sty | 1 + 1 file changed, 1 insertion(+) diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index c25b4d8e2..1c9fab138 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -245,6 +245,7 @@ \long\protected\def\sphinxcode#1{{\def\@tempa{alltt}% \ifx\@tempa\@currenvir\else \ifspx@opt@inlineliteralwraps + \let\verbatim@nolig@list \sphinx@verbatim@nolig@list \sphinxbreaksviaactive\let\sphinxafterbreak\empty \fi \@noligs\endlinechar\m@ne\everyeof{\noexpand}% From c689994cf8408514fea7120a166e9bd37bd4379e Mon Sep 17 00:00:00 2001 From: jfbu Date: Sun, 6 Nov 2016 13:34:01 +0100 Subject: [PATCH 206/297] better fix for the ``\sphinxcode`` issue (with comma character) the context is not exactly as in code-blocks --- sphinx/texinputs/sphinx.sty | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index 1c9fab138..498118898 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -245,7 +245,7 @@ \long\protected\def\sphinxcode#1{{\def\@tempa{alltt}% \ifx\@tempa\@currenvir\else \ifspx@opt@inlineliteralwraps - \let\verbatim@nolig@list \sphinx@verbatim@nolig@list + \def\verbatim@nolig@list {\do\`\do\<\do\>\do\'\do\-}% \sphinxbreaksviaactive\let\sphinxafterbreak\empty \fi \@noligs\endlinechar\m@ne\everyeof{\noexpand}% From 75055573847339c35c3f06ac623e9d1bf397fdf5 Mon Sep 17 00:00:00 2001 From: jfbu Date: Sun, 6 Nov 2016 13:55:43 +0100 Subject: [PATCH 207/297] fix latex inline literals where ``< > -`` gobbled a space --- CHANGES | 1 + sphinx/texinputs/sphinx.sty | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 89bcb4e58..1d4b8ec02 100644 --- a/CHANGES +++ b/CHANGES @@ -34,6 +34,7 @@ Bugs fixed * #777: LaTeX output "too deeply nested" (ref #3096) * Let LaTeX image inclusion obey ``scale`` before textwidth fit (ref #2865, #3059) * #3019: LaTeX fails on description of C function with arguments (ref #3083) +* fix latex inline literals where ``< > -`` gobbled a space Release 1.5 alpha2 (released Oct 17, 2016) ========================================== diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index 498118898..b89ffa64e 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -245,12 +245,19 @@ \long\protected\def\sphinxcode#1{{\def\@tempa{alltt}% \ifx\@tempa\@currenvir\else \ifspx@opt@inlineliteralwraps - \def\verbatim@nolig@list {\do\`\do\<\do\>\do\'\do\-}% \sphinxbreaksviaactive\let\sphinxafterbreak\empty + % do not overwrite the comma set-up + \let\verbatim@nolig@list\sphinx@literal@nolig@list \fi + % fix a space-gobbling issue due to LaTeX's original \do@noligs + \let\do@noligs\sphinx@do@noligs \@noligs\endlinechar\m@ne\everyeof{\noexpand}% \expandafter\scantokens \fi {\texttt{#1}}}} +\def\sphinx@do@noligs #1{\catcode`#1\active\begingroup\lccode`\~`#1\relax + \lowercase{\endgroup\def~{\leavevmode\kern\z@\char`#1 }}} +\def\sphinx@literal@nolig@list {\do\`\do\<\do\>\do\'\do\-}% + \long\protected\def\sphinxbfcode#1{\sphinxcode{\bfseries#1}} \long\protected\def\sphinxemail#1{\textsf{#1}} \long\protected\def\sphinxtablecontinued#1{\textsf{#1}} From 138edcdeb4e31e31a190a7e7a6253740f98fad1b Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sun, 6 Nov 2016 22:09:55 +0900 Subject: [PATCH 208/297] Bump to 1.5b1 --- CHANGES | 7 ++----- sphinx/__init__.py | 6 +++--- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/CHANGES b/CHANGES index 1d4b8ec02..2b6e3d588 100644 --- a/CHANGES +++ b/CHANGES @@ -1,8 +1,5 @@ -Release 1.5 alpha3 (in development) -=================================== - -Incompatible changes --------------------- +Release 1.5 beta1 (released Nov 6, 2016) +======================================== Features added -------------- diff --git a/sphinx/__init__.py b/sphinx/__init__.py index 59b731d5b..3647f5ebb 100644 --- a/sphinx/__init__.py +++ b/sphinx/__init__.py @@ -15,13 +15,13 @@ import sys from os import path -__version__ = '1.5a3' -__released__ = '1.5a3' # used when Sphinx builds its own docs +__version__ = '1.5b1' +__released__ = '1.5b1' # used when Sphinx builds its own docs # version info for better programmatic use # possible values for 3rd element: 'alpha', 'beta', 'rc', 'final' # 'final' has 0 as the last element -version_info = (1, 5, 0, 'alpha', 3) +version_info = (1, 5, 0, 'beta', 1) package_dir = path.abspath(path.dirname(__file__)) From 2580fb56948a77fcf33418d05a0f09e04b8405c0 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sun, 6 Nov 2016 22:14:55 +0900 Subject: [PATCH 209/297] Bump version --- CHANGES | 12 ++++++++++++ sphinx/__init__.py | 6 +++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index 2b6e3d588..8813e6f29 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,15 @@ +Release 1.5 beta2 (in development) +================================== + +Incompatible changes +-------------------- + +Features added +-------------- + +Bugs fixed +---------- + Release 1.5 beta1 (released Nov 6, 2016) ======================================== diff --git a/sphinx/__init__.py b/sphinx/__init__.py index 3647f5ebb..415a85421 100644 --- a/sphinx/__init__.py +++ b/sphinx/__init__.py @@ -15,13 +15,13 @@ import sys from os import path -__version__ = '1.5b1' -__released__ = '1.5b1' # used when Sphinx builds its own docs +__version__ = '1.5b2' +__released__ = '1.5b2' # used when Sphinx builds its own docs # version info for better programmatic use # possible values for 3rd element: 'alpha', 'beta', 'rc', 'final' # 'final' has 0 as the last element -version_info = (1, 5, 0, 'beta', 1) +version_info = (1, 5, 0, 'beta', 2) package_dir = path.abspath(path.dirname(__file__)) From 70600e99818ab517585035f46d9146133a68f91a Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sun, 6 Nov 2016 22:14:55 +0900 Subject: [PATCH 210/297] Bump version --- CHANGES | 12 ++++++++++++ sphinx/__init__.py | 6 +++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index 2b6e3d588..29f9eb64c 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,15 @@ +Release 1.6 (in development) +============================ + +Incompatible changes +-------------------- + +Features added +-------------- + +Bugs fixed +---------- + Release 1.5 beta1 (released Nov 6, 2016) ======================================== diff --git a/sphinx/__init__.py b/sphinx/__init__.py index 3647f5ebb..368f9d8fe 100644 --- a/sphinx/__init__.py +++ b/sphinx/__init__.py @@ -15,13 +15,13 @@ import sys from os import path -__version__ = '1.5b1' -__released__ = '1.5b1' # used when Sphinx builds its own docs +__version__ = '1.6' +__released__ = '1.6+' # used when Sphinx builds its own docs # version info for better programmatic use # possible values for 3rd element: 'alpha', 'beta', 'rc', 'final' # 'final' has 0 as the last element -version_info = (1, 5, 0, 'beta', 1) +version_info = (1, 6, 0, 'beta', 1) package_dir = path.abspath(path.dirname(__file__)) From 760b379614880f70f0e5f7295df6f3c772b76745 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sun, 6 Nov 2016 22:42:08 +0900 Subject: [PATCH 211/297] Update sphinx.pot --- sphinx/locale/sphinx.pot | 336 ++++++++++++++++++++++----------------- 1 file changed, 186 insertions(+), 150 deletions(-) diff --git a/sphinx/locale/sphinx.pot b/sphinx/locale/sphinx.pot index 9707a65cc..f63434cc2 100644 --- a/sphinx/locale/sphinx.pot +++ b/sphinx/locale/sphinx.pot @@ -6,61 +6,42 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Sphinx 1.4b1\n" +"Project-Id-Version: Sphinx 1.5b1\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "" @@ -69,8 +50,11 @@ msgstr "" msgid "Module level" msgstr "" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -81,18 +65,28 @@ msgstr "" msgid "index" msgstr "" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr "" +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "" @@ -109,23 +103,23 @@ msgstr "" msgid "Author: " msgstr "" -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "" @@ -154,12 +148,12 @@ msgstr "" msgid "%s (C variable)" msgstr "" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "" @@ -167,7 +161,7 @@ msgstr "" msgid "macro" msgstr "" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "" @@ -175,63 +169,72 @@ msgstr "" msgid "variable" msgstr "" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "" @@ -246,7 +249,7 @@ msgstr "" msgid "%s (global variable or constant)" msgstr "" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "" @@ -255,116 +258,116 @@ msgstr "" msgid "Arguments" msgstr "" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr "" @@ -386,120 +389,147 @@ msgstr "" msgid "role" msgstr "" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" +msgid "see %s" msgstr "" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<>" msgstr "" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <> is located in %s, line %d.)" msgstr "" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "

                      Source code for %s

                      " msgstr "" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "

                      All modules for which code is available

                      " msgstr "" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "" @@ -580,7 +610,7 @@ msgstr "" msgid "Table Of Contents" msgstr "" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -638,15 +668,15 @@ msgstr "" msgid "all functions, classes, terms" msgstr "" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "" @@ -662,35 +692,35 @@ msgstr "" msgid "Navigation" msgstr "" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "©
                      Copyright %(copyright)s." +msgid "© Copyright %(copyright)s." msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." +msgid "© Copyright %(copyright)s." msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "" -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using Sphinx " @@ -737,12 +767,12 @@ msgid "search" msgstr "" #: sphinx/themes/basic/search.html:43 sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "" #: sphinx/themes/basic/search.html:45 sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words " "are spelled correctly and that you've selected enough categories." @@ -759,12 +789,12 @@ msgstr "" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 @@ -784,12 +814,13 @@ msgstr "" msgid "Other changes" msgstr "" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "" @@ -805,12 +836,12 @@ msgstr "" msgid "Preparing search..." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr "" @@ -827,49 +858,54 @@ msgstr "" msgid "Contents" msgstr "" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "" From 624f2fe59c522eb0f9662176acb96e5261c40426 Mon Sep 17 00:00:00 2001 From: Lele Gaifax Date: Thu, 10 Nov 2016 14:08:29 +0100 Subject: [PATCH 212/297] Add missing trailing space in italian translation --- sphinx/locale/it/LC_MESSAGES/sphinx.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sphinx/locale/it/LC_MESSAGES/sphinx.po b/sphinx/locale/it/LC_MESSAGES/sphinx.po index b37c4410d..51b0f6e56 100644 --- a/sphinx/locale/it/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/it/LC_MESSAGES/sphinx.po @@ -819,7 +819,7 @@ msgstr "Ricerca completata, trovata/e %s pagina/e corrispondenti." #: sphinx/themes/basic/static/searchtools.js_t:338 msgid ", in " -msgstr ", in" +msgstr ", in " #: sphinx/themes/classic/static/sidebar.js_t:83 msgid "Expand sidebar" From 903e464c84513aa014406e064d85100d6c80531f Mon Sep 17 00:00:00 2001 From: shimizukawa Date: Sat, 12 Nov 2016 14:19:31 +0900 Subject: [PATCH 213/297] Add Pygame documentation to Examples. Requested by https://groups.google.com/d/msg/sphinx-users/-qpL-ArvHR0/VQuN99GYBAAJ --- EXAMPLES | 1 + 1 file changed, 1 insertion(+) diff --git a/EXAMPLES b/EXAMPLES index e5d27f747..e84e0db26 100644 --- a/EXAMPLES +++ b/EXAMPLES @@ -94,6 +94,7 @@ Documentation using a customized version of the classic theme * NumPy: http://docs.scipy.org/doc/numpy/reference/ * OpenCV: http://docs.opencv.org/ * Peach^3: http://peach3.nl/doc/latest/userdoc/ +* Pygame: http://www.pygame.org/docs/ * Sage: http://www.sagemath.org/doc/ * SciPy: http://docs.scipy.org/doc/scipy/reference/ * simuPOP: http://simupop.sourceforge.net/manual_release/build/userGuide.html From 22545a092736fa4c1679c547f3e0c25ed473fdb4 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sat, 12 Nov 2016 23:05:59 +0900 Subject: [PATCH 214/297] #3136: Add ``:name:`` option to the directives in ``sphinx.ext.graphviz`` --- CHANGES | 2 ++ doc/ext/graphviz.rst | 3 +++ sphinx/ext/graphviz.py | 4 ++++ 3 files changed, 9 insertions(+) diff --git a/CHANGES b/CHANGES index 29f9eb64c..1c1eb8f84 100644 --- a/CHANGES +++ b/CHANGES @@ -7,6 +7,8 @@ Incompatible changes Features added -------------- +* #3136: Add ``:name:`` option to the directives in ``sphinx.ext.graphviz`` + Bugs fixed ---------- diff --git a/doc/ext/graphviz.rst b/doc/ext/graphviz.rst index 0994c932a..555df7c28 100644 --- a/doc/ext/graphviz.rst +++ b/doc/ext/graphviz.rst @@ -100,6 +100,9 @@ It adds these directives: All three directives support a ``align`` option to align the graph horizontal. The values "left", "center", "right" are allowed. +.. versionadded:: 1.6 + All three directives support a ``name`` option to set the label to graph. + There are also these new config values: .. confval:: graphviz_dot diff --git a/sphinx/ext/graphviz.py b/sphinx/ext/graphviz.py index 5e76eb8ba..47c8dcfff 100644 --- a/sphinx/ext/graphviz.py +++ b/sphinx/ext/graphviz.py @@ -75,6 +75,7 @@ class Graphviz(Directive): 'inline': directives.flag, 'caption': directives.unchanged, 'graphviz_dot': directives.unchanged, + 'name': directives.unchanged, } def run(self): @@ -117,6 +118,7 @@ class Graphviz(Directive): if caption: node = figure_wrapper(self, node, caption) + self.add_name(node) return [node] @@ -134,6 +136,7 @@ class GraphvizSimple(Directive): 'inline': directives.flag, 'caption': directives.unchanged, 'graphviz_dot': directives.unchanged, + 'name': directives.unchanged, } def run(self): @@ -154,6 +157,7 @@ class GraphvizSimple(Directive): if caption: node = figure_wrapper(self, node, caption) + self.add_name(node) return [node] From 4ca84aba45109bad835bd300c8d9415b80c58269 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sat, 12 Nov 2016 23:57:29 +0900 Subject: [PATCH 215/297] Fix #3135: ``sphinx.ext.autodoc`` crashes with plain Callable --- CHANGES | 1 + sphinx/ext/autodoc.py | 4 +++- test-reqs.txt | 1 + tests/test_autodoc.py | 7 ++++--- tests/typing_test_data.py | 9 +++++++-- tox.ini | 1 + 6 files changed, 17 insertions(+), 6 deletions(-) diff --git a/CHANGES b/CHANGES index 5be5f4632..1120e0d7b 100644 --- a/CHANGES +++ b/CHANGES @@ -9,6 +9,7 @@ Bugs fixed results in warning / error * #3068: Allow the '=' character in the -D option of sphinx-build.py * #3074: ``add_source_parser()`` crashes in debug mode +* #3135: ``sphinx.ext.autodoc`` crashes with plain Callable Release 1.4.8 (released Oct 1, 2016) ==================================== diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py index 1006d78b4..e210e7266 100644 --- a/sphinx/ext/autodoc.py +++ b/sphinx/ext/autodoc.py @@ -306,7 +306,9 @@ def format_annotation(annotation): hasattr(annotation, '__args__') and \ hasattr(annotation, '__result__'): args = annotation.__args__ - if args is Ellipsis: + if args is None: + return qualified_name + elif args is Ellipsis: args_str = '...' else: formatted_args = (format_annotation(a) for a in args) diff --git a/test-reqs.txt b/test-reqs.txt index 32a7599af..9f4e835e8 100644 --- a/test-reqs.txt +++ b/test-reqs.txt @@ -13,3 +13,4 @@ whoosh>=2.0 alabaster sphinx_rtd_theme imagesize +typing diff --git a/tests/test_autodoc.py b/tests/test_autodoc.py index fca3c2b9e..711e5e807 100644 --- a/tests/test_autodoc.py +++ b/tests/test_autodoc.py @@ -1025,7 +1025,7 @@ def test_type_hints(): from sphinx.util.inspect import getargspec try: - from typing_test_data import f0, f1, f2, f3, f4, f5, f6, f7, f8, f9 + from typing_test_data import f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10 except (ImportError, SyntaxError): raise SkipTest('Cannot import Python code with function annotations') @@ -1057,10 +1057,11 @@ def test_type_hints(): # Callable types verify_arg_spec(f7, '(x: typing.Callable[[int, str], int]) -> None') + verify_arg_spec(f8, '(x: typing.Callable) -> None') # Tuple types - verify_arg_spec(f8, '(x: typing.Tuple[int, str],' + verify_arg_spec(f9, '(x: typing.Tuple[int, str],' ' y: typing.Tuple[int, ...]) -> None') # Instance annotations - verify_arg_spec(f9, '(x: CustomAnnotation, y: 123) -> None') + verify_arg_spec(f10, '(x: CustomAnnotation, y: 123) -> None') diff --git a/tests/typing_test_data.py b/tests/typing_test_data.py index 461be7831..3c3126b07 100644 --- a/tests/typing_test_data.py +++ b/tests/typing_test_data.py @@ -44,7 +44,11 @@ def f7(x: Callable[[int, str], int]) -> None: pass -def f8(x: Tuple[int, str], y: Tuple[int, ...]) -> None: +def f8(x: Callable) -> None: + pass + + +def f9(x: Tuple[int, str], y: Tuple[int, ...]) -> None: pass @@ -52,5 +56,6 @@ class CustomAnnotation: def __repr__(self): return 'CustomAnnotation' -def f9(x: CustomAnnotation(), y: 123) -> None: + +def f10(x: CustomAnnotation(), y: 123) -> None: pass diff --git a/tox.ini b/tox.ini index 8fcb7b177..112017b77 100644 --- a/tox.ini +++ b/tox.ini @@ -6,6 +6,7 @@ deps= nose sqlalchemy whoosh + typing setenv = SPHINX_TEST_TEMPDIR = {envdir}/testbuild commands= From ba35513b0f2f3df88d9dc5e613a4c63ab90e08e1 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sun, 13 Nov 2016 00:55:58 +0900 Subject: [PATCH 216/297] Do not install typing module (because it does not support py26...) --- test-reqs.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/test-reqs.txt b/test-reqs.txt index 9f4e835e8..32a7599af 100644 --- a/test-reqs.txt +++ b/test-reqs.txt @@ -13,4 +13,3 @@ whoosh>=2.0 alabaster sphinx_rtd_theme imagesize -typing From 9f39b53c1640ab47874c5d180d07f338696e4993 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sun, 13 Nov 2016 11:16:44 +0900 Subject: [PATCH 217/297] Fix #3130: HTML rendering problems inside admonition block in Sphinx doc --- doc/_themes/sphinx13/static/sphinx13.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/_themes/sphinx13/static/sphinx13.css b/doc/_themes/sphinx13/static/sphinx13.css index 8b3ebdf3a..1739ac36b 100644 --- a/doc/_themes/sphinx13/static/sphinx13.css +++ b/doc/_themes/sphinx13/static/sphinx13.css @@ -384,6 +384,10 @@ div.warning ul, div.warning ol { padding: 0; } +div.admonition div.highlight { + background: none; +} + .viewcode-back { font-family: 'Open Sans', 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', 'Verdana', sans-serif; From d50b9b9dce0600c2c4ed68da8d90833b1131caae Mon Sep 17 00:00:00 2001 From: shimizukawa Date: Wed, 16 Nov 2016 10:58:41 +0900 Subject: [PATCH 218/297] insert blank line(s) to adapt latest flake8/pycodestyle --- sphinx/addnodes.py | 2 ++ sphinx/apidoc.py | 1 + sphinx/builders/__init__.py | 1 + sphinx/builders/gettext.py | 1 + sphinx/builders/html.py | 1 + sphinx/builders/linkcheck.py | 1 + sphinx/directives/__init__.py | 1 + sphinx/ext/autodoc.py | 1 + sphinx/locale/__init__.py | 1 + sphinx/pycode/__init__.py | 2 ++ sphinx/quickstart.py | 2 ++ sphinx/util/__init__.py | 1 + sphinx/util/console.py | 1 + sphinx/util/i18n.py | 1 + sphinx/util/nodes.py | 1 + sphinx/util/pycompat.py | 1 + sphinx/util/smartypants.py | 2 +- 17 files changed, 20 insertions(+), 1 deletion(-) diff --git a/sphinx/addnodes.py b/sphinx/addnodes.py index 284bc1c75..ac07b3793 100644 --- a/sphinx/addnodes.py +++ b/sphinx/addnodes.py @@ -39,6 +39,8 @@ class desc_signature(nodes.Part, nodes.Inline, nodes.TextElement): class desc_addname(nodes.Part, nodes.Inline, nodes.TextElement): """Node for additional name parts (module name, class name).""" + + # compatibility alias desc_classname = desc_addname diff --git a/sphinx/apidoc.py b/sphinx/apidoc.py index 58724fd5a..90d0e3c8d 100644 --- a/sphinx/apidoc.py +++ b/sphinx/apidoc.py @@ -384,6 +384,7 @@ Note: By default this script will not overwrite already created files.""") elif not opts.notoc: create_modules_toc_file(modules, opts) + # So program can be started with "python -m sphinx.apidoc ..." if __name__ == "__main__": main() diff --git a/sphinx/builders/__init__.py b/sphinx/builders/__init__.py index 8863050ba..d0b6c2ca0 100644 --- a/sphinx/builders/__init__.py +++ b/sphinx/builders/__init__.py @@ -452,6 +452,7 @@ class Builder(object): optname = '%s_%s' % (default, option) return getattr(self.config, optname) + BUILTIN_BUILDERS = { 'dummy': ('dummy', 'DummyBuilder'), 'html': ('html', 'StandaloneHTMLBuilder'), diff --git a/sphinx/builders/gettext.py b/sphinx/builders/gettext.py index a7fea86fa..9edbdf1d3 100644 --- a/sphinx/builders/gettext.py +++ b/sphinx/builders/gettext.py @@ -150,6 +150,7 @@ class LocalTimeZone(tzinfo): def dst(self, dt): return timedelta(0) + ltz = LocalTimeZone() diff --git a/sphinx/builders/html.py b/sphinx/builders/html.py index d1f5792e7..f5d8cf549 100644 --- a/sphinx/builders/html.py +++ b/sphinx/builders/html.py @@ -1181,6 +1181,7 @@ class PickleHTMLBuilder(SerializingHTMLBuilder): globalcontext_filename = 'globalcontext.pickle' searchindex_filename = 'searchindex.pickle' + # compatibility alias WebHTMLBuilder = PickleHTMLBuilder diff --git a/sphinx/builders/linkcheck.py b/sphinx/builders/linkcheck.py index 5ceb8d716..bb7967e83 100644 --- a/sphinx/builders/linkcheck.py +++ b/sphinx/builders/linkcheck.py @@ -48,6 +48,7 @@ class RedirectHandler(HTTPRedirectHandler): req.redirect_code = code return new_req + # create an opener that will simulate a browser user-agent opener = build_opener(RedirectHandler) opener.addheaders = [('User-agent', 'Mozilla/5.0 (X11; Linux x86_64; rv:25.0) ' diff --git a/sphinx/directives/__init__.py b/sphinx/directives/__init__.py index d99a9bc1b..52965c0e2 100644 --- a/sphinx/directives/__init__.py +++ b/sphinx/directives/__init__.py @@ -160,6 +160,7 @@ class ObjectDescription(Directive): self.after_content() return [self.indexnode, node] + # backwards compatible old name DescDirective = ObjectDescription diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py index e210e7266..405d24c88 100644 --- a/sphinx/ext/autodoc.py +++ b/sphinx/ext/autodoc.py @@ -131,6 +131,7 @@ def members_set_option(arg): return ALL return set(x.strip() for x in arg.split(',')) + SUPPRESS = object() diff --git a/sphinx/locale/__init__.py b/sphinx/locale/__init__.py index d2d08c628..d6ce7329b 100644 --- a/sphinx/locale/__init__.py +++ b/sphinx/locale/__init__.py @@ -152,6 +152,7 @@ def lazy_gettext(string): # return string return _TranslationProxy(mygettext, string) + l_ = lazy_gettext diff --git a/sphinx/pycode/__init__.py b/sphinx/pycode/__init__.py index 3da887d6c..7746e11b1 100644 --- a/sphinx/pycode/__init__.py +++ b/sphinx/pycode/__init__.py @@ -35,6 +35,8 @@ pydriver = driver.Driver(pygrammar, convert=nodes.convert) # an object with attributes corresponding to token and symbol names class sym: pass + + for k, v in iteritems(pygrammar.symbol2number): setattr(sym, k, v) for k, v in iteritems(token.tok_name): diff --git a/sphinx/quickstart.py b/sphinx/quickstart.py index 751f87bff..108e59352 100644 --- a/sphinx/quickstart.py +++ b/sphinx/quickstart.py @@ -1516,6 +1516,7 @@ def usage(argv, msg=None): print(msg, file=sys.stderr) print(file=sys.stderr) + USAGE = """\ Sphinx v%s Usage: %%prog [options] [projectdir] @@ -1681,5 +1682,6 @@ def main(argv=sys.argv): generate(d) + if __name__ == '__main__': sys.exit(main(sys.argv)) diff --git a/sphinx/util/__init__.py b/sphinx/util/__init__.py index 0c823fb1a..9c5365aa7 100644 --- a/sphinx/util/__init__.py +++ b/sphinx/util/__init__.py @@ -212,6 +212,7 @@ def copy_extra_entry(source, targetdir, exclude_matchers=()): for file in files: copy_extra_file(os.path.join(root, file), reltargetdir) + _DEBUG_HEADER = '''\ # Sphinx version: %s # Python version: %s (%s) diff --git a/sphinx/util/console.py b/sphinx/util/console.py index 7974ebb2b..593634b11 100644 --- a/sphinx/util/console.py +++ b/sphinx/util/console.py @@ -90,6 +90,7 @@ def create_color_func(name): return colorize(name, text) globals()[name] = inner + _attrs = { 'reset': '39;49;00m', 'bold': '01m', diff --git a/sphinx/util/i18n.py b/sphinx/util/i18n.py index d0cb1f443..5b396820c 100644 --- a/sphinx/util/i18n.py +++ b/sphinx/util/i18n.py @@ -125,6 +125,7 @@ def find_catalog_source_files(locale_dirs, locale, domains=None, gettext_compact return catalogs + # date_format mappings: ustrftime() to bable.dates.format_datetime() date_format_mappings = { '%a': 'EEE', # Weekday as locale’s abbreviated name. diff --git a/sphinx/util/nodes.py b/sphinx/util/nodes.py index 98f84f2bf..e4a2fd73b 100644 --- a/sphinx/util/nodes.py +++ b/sphinx/util/nodes.py @@ -302,4 +302,5 @@ def _new_copy(self): newnode.line = self.line return newnode + nodes.Element.copy = _new_copy diff --git a/sphinx/util/pycompat.py b/sphinx/util/pycompat.py index 44f51eaeb..4503c34e1 100644 --- a/sphinx/util/pycompat.py +++ b/sphinx/util/pycompat.py @@ -147,6 +147,7 @@ class _DeprecationWrapper(object): return self._deprecated[attr] return getattr(self._mod, attr) + sys.modules[__name__] = _DeprecationWrapper(sys.modules[__name__], dict( zip_longest = zip_longest, product = product, diff --git a/sphinx/util/smartypants.py b/sphinx/util/smartypants.py index 2f4acbc8d..dee2f50ba 100644 --- a/sphinx/util/smartypants.py +++ b/sphinx/util/smartypants.py @@ -81,8 +81,8 @@ def sphinx_smarty_pants(t): t = t.replace('"', '"') return t -# Constants for quote education. +# Constants for quote education. punct_class = r"""[!"#\$\%'()*+,-.\/:;<=>?\@\[\\\]\^_`{|}~]""" end_of_word_class = r"""[\s.,;:!?)]""" close_class = r"""[^\ \t\r\n\[\{\(\-]""" From 4583c4b0227e425bca7b3c26b80d904a13a9c714 Mon Sep 17 00:00:00 2001 From: shimizukawa Date: Wed, 16 Nov 2016 11:04:32 +0900 Subject: [PATCH 219/297] insert blank line(s) to adapt latest flake8/pycodestyle --- utils/reindent.py | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/reindent.py b/utils/reindent.py index 7679045cb..9af46d3fc 100755 --- a/utils/reindent.py +++ b/utils/reindent.py @@ -316,5 +316,6 @@ def getlspace(line): i += 1 return i + if __name__ == '__main__': main() From 3c3c8e7533829af03196e710c4ed09003ed701ba Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Wed, 16 Nov 2016 12:02:40 +0900 Subject: [PATCH 220/297] Fix flake8 violation --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index 3fa024634..37c10b345 100644 --- a/setup.py +++ b/setup.py @@ -191,6 +191,7 @@ class CompileGrammarCommand(Command): def sub_commands(self): pass + cmdclass['compile_grammar'] = CompileGrammarCommand From db732ac0b839a028a868a180550bb4f55d6e9b4b Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Mon, 7 Nov 2016 13:15:18 +0900 Subject: [PATCH 221/297] Prepare to type-check using mypy --- .gitignore | 1 + Makefile | 7 +++++-- mypy.ini | 6 ++++++ setup.py | 1 + test-reqs.txt | 1 + tox.ini | 4 ++++ utils/check_sources.py | 3 +++ 7 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 mypy.ini diff --git a/.gitignore b/.gitignore index be28908ec..86a8baf9d 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ *.swp .dir-locals.el +.mypy_cache/ .ropeproject/ TAGS .tags diff --git a/Makefile b/Makefile index 01e3a7837..86226f3b5 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ PYTHON ?= python -.PHONY: all style-check clean clean-pyc clean-patchfiles clean-backupfiles \ +.PHONY: all style-check type-check clean clean-pyc clean-patchfiles clean-backupfiles \ clean-generated pylint reindent test covertest build DONT_CHECK = -i build -i dist -i sphinx/style/jquery.js \ @@ -30,11 +30,14 @@ DONT_CHECK = -i build -i dist -i sphinx/style/jquery.js \ -i sphinx/search/tr.py \ -i .tox -all: clean-pyc clean-backupfiles style-check test +all: clean-pyc clean-backupfiles style-check type-check test style-check: @$(PYTHON) utils/check_sources.py $(DONT_CHECK) . +type-check: + mypy sphinx/ + clean: clean-pyc clean-pycache clean-patchfiles clean-backupfiles clean-generated clean-testfiles clean-buildfiles clean-pyc: diff --git a/mypy.ini b/mypy.ini new file mode 100644 index 000000000..17ded7ab8 --- /dev/null +++ b/mypy.ini @@ -0,0 +1,6 @@ +[mypy] +python_version = 2.7 +silent_imports = True +fast_parser = True +incremental = True +check_untyped_defs = True diff --git a/setup.py b/setup.py index 37c10b345..e23c4fb59 100644 --- a/setup.py +++ b/setup.py @@ -51,6 +51,7 @@ requires = [ 'alabaster>=0.7,<0.8', 'imagesize', 'requests', + 'typing', ] extras_require = { # Environment Marker works for wheel 0.24 or later diff --git a/test-reqs.txt b/test-reqs.txt index b53adbfe5..13cb3a9ff 100644 --- a/test-reqs.txt +++ b/test-reqs.txt @@ -16,3 +16,4 @@ imagesize requests html5lib enum34 +typing diff --git a/tox.ini b/tox.ini index ca3cac99b..957fbcc38 100644 --- a/tox.ini +++ b/tox.ini @@ -47,6 +47,10 @@ deps= {[testenv]deps} [testenv:py35] +deps= + mypy-lang + typed_ast + {[testenv]deps} commands= {envpython} tests/run.py -m '^[tT]est' {posargs} sphinx-build -q -W -b html -d {envtmpdir}/doctrees doc {envtmpdir}/html diff --git a/utils/check_sources.py b/utils/check_sources.py index 18d444057..d4a5ab491 100755 --- a/utils/check_sources.py +++ b/utils/check_sources.py @@ -46,6 +46,7 @@ copyright_2_re = re.compile(r'^ %s(, %s)*[,.]$' % (name_mail_re, name_mail_re)) not_ix_re = re.compile(r'\bnot\s+\S+?\s+i[sn]\s\S+') is_const_re = re.compile(r'if.*?==\s+(None|False|True)\b') +noqa_re = re.compile(r'#\s+NOQA\s*$', re.I) misspellings = ["developement", "adress", # ALLOW-MISSPELLING "verificate", "informations"] # ALLOW-MISSPELLING @@ -81,6 +82,8 @@ def check_syntax(fn, lines): @checker('.py') def check_style(fn, lines): for lno, line in enumerate(lines): + if noqa_re.search(line): + continue if len(line.rstrip('\n')) > 95: yield lno+1, "line too long" if line.strip().startswith('#'): From 8cfb281b05653a32f480799cb39d4c7532d27f05 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Wed, 9 Nov 2016 11:45:12 +0900 Subject: [PATCH 222/297] Add type-check annotations to sphinx.util --- sphinx/util/__init__.py | 42 +++++++++++++++++++++++++++++----------- sphinx/util/console.py | 10 +++++++++- sphinx/util/docfields.py | 23 ++++++++++++++++++++-- sphinx/util/docutils.py | 16 +++++++++++++-- sphinx/util/i18n.py | 30 +++++++++++++++++++++------- sphinx/util/inspect.py | 20 ++++++++++++++----- sphinx/util/jsdump.py | 19 ++++++++++++++---- sphinx/util/matching.py | 15 ++++++++++++-- sphinx/util/nodes.py | 28 ++++++++++++++++++++++++++- sphinx/util/osutil.py | 30 ++++++++++++++++++++++++---- sphinx/util/parallel.py | 26 ++++++++++++++++++------- sphinx/util/pycompat.py | 17 ++++++++++++---- 12 files changed, 226 insertions(+), 50 deletions(-) diff --git a/sphinx/util/__init__.py b/sphinx/util/__init__.py index 7ac5c62f7..f24ffb681 100644 --- a/sphinx/util/__init__.py +++ b/sphinx/util/__init__.py @@ -42,19 +42,25 @@ from sphinx.util.nodes import ( # noqa caption_ref_re) from sphinx.util.matching import patfilter # noqa +if False: + # For type annotation + from typing import Any, Callable, Iterable, Pattern, Sequence, Tuple # NOQA + # Generally useful regular expressions. -ws_re = re.compile(r'\s+') -url_re = re.compile(r'(?P.+)://.*') +ws_re = re.compile(r'\s+') # type: Pattern +url_re = re.compile(r'(?P.+)://.*') # type: Pattern # High-level utility functions. def docname_join(basedocname, docname): + # type: (unicode, unicode) -> unicode return posixpath.normpath( posixpath.join('/' + basedocname, '..', docname))[1:] def path_stabilize(filepath): + # type: (unicode) -> unicode "normalize path separater and unicode string" newpath = filepath.replace(os.path.sep, SEP) if isinstance(newpath, text_type): @@ -63,6 +69,7 @@ def path_stabilize(filepath): def get_matching_files(dirname, exclude_matchers=()): + # type: (unicode, Tuple[Callable[[unicode], bool], ...]) -> Iterable[unicode] """Get all file names in a directory, recursively. Exclude files and dirs matching some matcher in *exclude_matchers*. @@ -75,9 +82,9 @@ def get_matching_files(dirname, exclude_matchers=()): relativeroot = root[dirlen:] qdirs = enumerate(path_stabilize(path.join(relativeroot, dn)) - for dn in dirs) + for dn in dirs) # type: Iterable[Tuple[int, unicode]] qfiles = enumerate(path_stabilize(path.join(relativeroot, fn)) - for fn in files) + for fn in files) # type: Iterable[Tuple[int, unicode]] for matcher in exclude_matchers: qdirs = [entry for entry in qdirs if not matcher(entry[1])] qfiles = [entry for entry in qfiles if not matcher(entry[1])] @@ -89,6 +96,7 @@ def get_matching_files(dirname, exclude_matchers=()): def get_matching_docs(dirname, suffixes, exclude_matchers=()): + # type: (unicode, List[unicode], Tuple[Callable[[unicode], bool], ...]) -> Iterable[unicode] # NOQA """Get all file names (without suffixes) matching a suffix in a directory, recursively. @@ -97,7 +105,7 @@ def get_matching_docs(dirname, suffixes, exclude_matchers=()): suffixpatterns = ['*' + s for s in suffixes] for filename in get_matching_files(dirname, exclude_matchers): for suffixpattern in suffixpatterns: - if fnmatch.fnmatch(filename, suffixpattern): + if fnmatch.fnmatch(filename, suffixpattern): # type: ignore yield filename[:-len(suffixpattern)+1] break @@ -109,9 +117,10 @@ class FilenameUniqDict(dict): appear in. Used for images and downloadable files in the environment. """ def __init__(self): - self._existing = set() + self._existing = set() # type: Set[unicode] def add_file(self, docname, newfile): + # type: (unicode, unicode) -> unicode if newfile in self: self[newfile][0].add(docname) return self[newfile][1] @@ -126,6 +135,7 @@ class FilenameUniqDict(dict): return uniquename def purge_doc(self, docname): + # type: (unicode) -> None for filename, (docs, unique) in list(self.items()): docs.discard(docname) if not docs: @@ -133,6 +143,7 @@ class FilenameUniqDict(dict): self._existing.discard(unique) def merge_other(self, docnames, other): + # type: (List[unicode], Dict[unicode, Tuple[Set[unicode], Any]]) -> None for filename, (docs, unique) in other.items(): for doc in docs & docnames: self.add_file(doc, filename) @@ -146,6 +157,7 @@ class FilenameUniqDict(dict): def copy_static_entry(source, targetdir, builder, context={}, exclude_matchers=(), level=0): + # type: (unicode, unicode, Any, Dict, Tuple[Callable, ...], int) -> None """[DEPRECATED] Copy a HTML builder static_path entry from source to targetdir. Handles all possible cases of files, directories and subdirectories. @@ -183,6 +195,7 @@ _DEBUG_HEADER = '''\ def save_traceback(app): + # type: (Any) -> unicode """Save the current exception's traceback in a temporary file.""" import sphinx import jinja2 @@ -190,7 +203,7 @@ def save_traceback(app): import platform exc = sys.exc_info()[1] if isinstance(exc, SphinxParallelError): - exc_format = '(Error in parallel process)\n' + exc.traceback + exc_format = '(Error in parallel process)\n' + exc.traceback # type: ignore else: exc_format = traceback.format_exc() fd, path = tempfile.mkstemp('.log', 'sphinx-err-') @@ -220,6 +233,7 @@ def save_traceback(app): def get_module_source(modname): + # type: (str) -> Tuple[unicode, unicode] """Try to find the source code for a module. Can return ('file', 'filename') in which case the source is in the given @@ -259,6 +273,7 @@ def get_module_source(modname): def get_full_modname(modname, attribute): + # type: (str, unicode) -> unicode __import__(modname) module = sys.modules[modname] @@ -277,6 +292,7 @@ _coding_re = re.compile(r'coding[:=]\s*([-\w.]+)') def detect_encoding(readline): + # type: (Callable) -> unicode """Like tokenize.detect_encoding() from Py3k, but a bit simplified.""" def read_or_stop(): @@ -433,10 +449,11 @@ def split_index_msg(type, value): def format_exception_cut_frames(x=1): + # type: (int) -> unicode """Format an exception with traceback, but only the last x frames.""" typ, val, tb = sys.exc_info() # res = ['Traceback (most recent call last):\n'] - res = [] + res = [] # type: List[unicode] tbres = traceback.format_tb(tb) res += tbres[-x:] res += traceback.format_exception_only(typ, val) @@ -449,7 +466,7 @@ class PeekableIterator(object): what's the next item. """ def __init__(self, iterable): - self.remaining = deque() + self.remaining = deque() # type: deque self._iterator = iter(iterable) def __iter__(self): @@ -477,6 +494,7 @@ class PeekableIterator(object): def import_object(objname, source=None): + # type: (str, unicode) -> Any try: module, name = objname.rsplit('.', 1) except ValueError as err: @@ -496,7 +514,8 @@ def import_object(objname, source=None): def encode_uri(uri): - split = list(urlsplit(uri)) + # type: (unicode) -> unicode + split = list(urlsplit(uri)) # type: Any split[1] = split[1].encode('idna').decode('ascii') split[2] = quote_plus(split[2].encode('utf-8'), '/').decode('ascii') query = list((q, quote_plus(v.encode('utf-8'))) @@ -506,8 +525,9 @@ def encode_uri(uri): def split_docinfo(text): + # type: (unicode) -> Sequence[unicode] docinfo_re = re.compile('\A((?:\s*:\w+:.*?\n)+)', re.M) - result = docinfo_re.split(text, 1) + result = docinfo_re.split(text, 1) # type: ignore if len(result) == 1: return '', result[0] else: diff --git a/sphinx/util/console.py b/sphinx/util/console.py index 593634b11..b952d7183 100644 --- a/sphinx/util/console.py +++ b/sphinx/util/console.py @@ -20,10 +20,11 @@ except ImportError: colorama = None _ansi_re = re.compile('\x1b\\[(\\d\\d;){0,2}\\d\\dm') -codes = {} +codes = {} # type: Dict[str, str] def get_terminal_width(): + # type: () -> int """Borrowed from the py lib.""" try: import termios @@ -43,6 +44,7 @@ _tw = get_terminal_width() def term_width_line(text): + # type: (str) -> str if not codes: # if no coloring, don't output fancy backspaces return text + '\n' @@ -52,6 +54,7 @@ def term_width_line(text): def color_terminal(): + # type: () -> bool if sys.platform == 'win32' and colorama is not None: colorama.init() return True @@ -68,24 +71,29 @@ def color_terminal(): def nocolor(): + # type: () -> None if sys.platform == 'win32' and colorama is not None: colorama.deinit() codes.clear() def coloron(): + # type: () -> None codes.update(_orig_codes) def colorize(name, text): + # type: (str, str) -> str return codes.get(name, '') + text + codes.get('reset', '') def strip_colors(s): + # type: (str) -> str return re.compile('\x1b.*?m').sub('', s) def create_color_func(name): + # type: (str) -> None def inner(text): return colorize(name, text) globals()[name] = inner diff --git a/sphinx/util/docfields.py b/sphinx/util/docfields.py index d5cb4038f..6bf38ebed 100644 --- a/sphinx/util/docfields.py +++ b/sphinx/util/docfields.py @@ -15,8 +15,14 @@ from docutils import nodes from sphinx import addnodes +if False: + # For type annotation + from typing import Any, Tuple # NOQA + from sphinx.domains import Domain # NOQA + def _is_single_paragraph(node): + # type: (nodes.Node) -> bool """True if the node only contains one paragraph (and system messages).""" if len(node) == 0: return False @@ -47,6 +53,7 @@ class Field(object): def __init__(self, name, names=(), label=None, has_arg=True, rolename=None, bodyrolename=None): + # type: (unicode, Tuple[unicode, ...], unicode, bool, unicode, unicode) -> None self.name = name self.names = names self.label = label @@ -56,6 +63,7 @@ class Field(object): def make_xref(self, rolename, domain, target, innernode=addnodes.literal_emphasis, contnode=None): + # type: (unicode, unicode, unicode, nodes.Node, nodes.Node) -> nodes.Node if not rolename: return contnode or innernode(target, target) refnode = addnodes.pending_xref('', refdomain=domain, refexplicit=False, @@ -65,12 +73,15 @@ class Field(object): def make_xrefs(self, rolename, domain, target, innernode=addnodes.literal_emphasis, contnode=None): + # type: (unicode, unicode, unicode, nodes.Node, nodes.Node) -> List[nodes.Node] return [self.make_xref(rolename, domain, target, innernode, contnode)] def make_entry(self, fieldarg, content): + # type: (List, unicode) -> Tuple[List, unicode] return (fieldarg, content) def make_field(self, types, domain, item): + # type: (List, unicode, Tuple) -> nodes.field fieldarg, content = item fieldname = nodes.field_name('', self.label) if fieldarg: @@ -106,10 +117,12 @@ class GroupedField(Field): def __init__(self, name, names=(), label=None, rolename=None, can_collapse=False): + # type: (unicode, Tuple[unicode, ...], unicode, unicode, bool) -> None Field.__init__(self, name, names, label, True, rolename) self.can_collapse = can_collapse def make_field(self, types, domain, items): + # type: (List, unicode, Tuple) -> nodes.field fieldname = nodes.field_name('', self.label) listnode = self.list_type() for fieldarg, content in items: @@ -151,11 +164,13 @@ class TypedField(GroupedField): def __init__(self, name, names=(), typenames=(), label=None, rolename=None, typerolename=None, can_collapse=False): + # type: (unicode, Tuple[unicode, ...], Tuple[unicode, ...], unicode, unicode, unicode, bool) -> None # NOQA GroupedField.__init__(self, name, names, label, rolename, can_collapse) self.typenames = typenames self.typerolename = typerolename def make_field(self, types, domain, items): + # type: (List, unicode, Tuple) -> nodes.field def handle_item(fieldarg, content): par = nodes.paragraph() par.extend(self.make_xrefs(self.rolename, domain, fieldarg, @@ -196,6 +211,7 @@ class DocFieldTransformer(object): """ def __init__(self, directive): + # type: (Any) -> None self.domain = directive.domain if '_doc_field_type_map' not in directive.__class__.__dict__: directive.__class__._doc_field_type_map = \ @@ -203,6 +219,7 @@ class DocFieldTransformer(object): self.typemap = directive._doc_field_type_map def preprocess_fieldtypes(self, types): + # type: (List) -> Dict[unicode, Tuple[Any, bool]] typemap = {} for fieldtype in types: for name in fieldtype.names: @@ -213,6 +230,7 @@ class DocFieldTransformer(object): return typemap def transform_all(self, node): + # type: (nodes.Node) -> None """Transform all field list children of a node.""" # don't traverse, only handle field lists that are immediate children for child in node: @@ -220,12 +238,13 @@ class DocFieldTransformer(object): self.transform(child) def transform(self, node): + # type: (nodes.Node) -> None """Transform a single field list *node*.""" typemap = self.typemap entries = [] - groupindices = {} - types = {} + groupindices = {} # type: Dict[unicode, int] + types = {} # type: Dict[unicode, Dict] # step 1: traverse all fields and collect field types and content for field in node: diff --git a/sphinx/util/docutils.py b/sphinx/util/docutils.py index be9e2edad..a18d0b560 100644 --- a/sphinx/util/docutils.py +++ b/sphinx/util/docutils.py @@ -12,11 +12,19 @@ from __future__ import absolute_import from copy import copy from contextlib import contextmanager + from docutils.parsers.rst import directives, roles +if False: + # For type annotation + from typing import Any, Callable, Iterator, Tuple # NOQA + from docutils import nodes # NOQA + from sphinx.environment import BuildEnvironment # NOQA + @contextmanager def docutils_namespace(): + # type: () -> Iterator[None] """Create namespace for reST parsers.""" try: _directives = copy(directives._directives) @@ -37,9 +45,10 @@ class sphinx_domains(object): markup takes precedence. """ def __init__(self, env): + # type: (BuildEnvironment) -> None self.env = env - self.directive_func = None - self.roles_func = None + self.directive_func = None # type: Callable + self.roles_func = None # type: Callable def __enter__(self): self.enable() @@ -59,6 +68,7 @@ class sphinx_domains(object): roles.role = self.role_func def lookup_domain_element(self, type, name): + # type: (unicode, unicode) -> Tuple[Any, List] """Lookup a markup element (directive or role), given its name which can be a full name (with domain). """ @@ -87,12 +97,14 @@ class sphinx_domains(object): raise ElementLookupError def lookup_directive(self, name, lang_module, document): + # type: (unicode, unicode, nodes.document) -> Tuple[Any, List] try: return self.lookup_domain_element('directive', name) except ElementLookupError: return self.directive_func(name, lang_module, document) def lookup_role(self, name, lang_module, lineno, reporter): + # type: (unicode, unicode, int, Any) -> Tuple[Any, List] try: return self.lookup_domain_element('role', name) except ElementLookupError: diff --git a/sphinx/util/i18n.py b/sphinx/util/i18n.py index 112353d47..efbbb75f7 100644 --- a/sphinx/util/i18n.py +++ b/sphinx/util/i18n.py @@ -22,9 +22,12 @@ from babel.messages.pofile import read_po from babel.messages.mofile import write_mo from sphinx.errors import SphinxError -from sphinx.util.osutil import walk -from sphinx.util import SEP +from sphinx.util.osutil import SEP, walk +if False: + # For type annotation + from typing import Callable # NOQA + from sphinx.environment import BuildEnvironment # NOQA LocaleFileInfoBase = namedtuple('CatalogInfo', 'base_dir,domain,charset') @@ -33,32 +36,39 @@ class CatalogInfo(LocaleFileInfoBase): @property def po_file(self): + # type: () -> unicode return self.domain + '.po' @property def mo_file(self): + # type: () -> unicode return self.domain + '.mo' @property def po_path(self): + # type: () -> unicode return path.join(self.base_dir, self.po_file) @property def mo_path(self): + # type: () -> unicode return path.join(self.base_dir, self.mo_file) def is_outdated(self): + # type: () -> bool return ( not path.exists(self.mo_path) or path.getmtime(self.mo_path) < path.getmtime(self.po_path)) def write_mo(self, locale): + # type: (unicode) -> None with io.open(self.po_path, 'rt', encoding=self.charset) as po: with io.open(self.mo_path, 'wb') as mo: write_mo(mo, read_po(po, locale)) def find_catalog(docname, compaction): + # type: (unicode, bool) -> unicode if compaction: ret = docname.split(SEP, 1)[0] else: @@ -68,18 +78,20 @@ def find_catalog(docname, compaction): def find_catalog_files(docname, srcdir, locale_dirs, lang, compaction): + # type: (unicode, unicode, List[unicode], unicode, bool) -> List[unicode] if not(lang and locale_dirs): return [] domain = find_catalog(docname, compaction) - files = [gettext.find(domain, path.join(srcdir, dir_), [lang]) - for dir_ in locale_dirs] - files = [path.relpath(f, srcdir) for f in files if f] - return files + files = [gettext.find(domain, path.join(srcdir, dir_), [lang]) # type: ignore + for dir_ in locale_dirs] # type: ignore + files = [path.relpath(f, srcdir) for f in files if f] # type: ignore + return files # type: ignore def find_catalog_source_files(locale_dirs, locale, domains=None, gettext_compact=False, charset='utf-8', force_all=False): + # type: (List[unicode], unicode, List[unicode], bool, unicode, bool) -> Set[CatalogInfo] """ :param list locale_dirs: list of path as `['locale_dir1', 'locale_dir2', ...]` to find @@ -99,7 +111,7 @@ def find_catalog_source_files(locale_dirs, locale, domains=None, gettext_compact if not locale: return [] # locale is not specified - catalogs = set() + catalogs = set() # type: Set[CatalogInfo] for locale_dir in locale_dirs: if not locale_dir: continue # skip system locale directory @@ -158,6 +170,7 @@ date_format_mappings = { def babel_format_date(date, format, locale, warn=None, formatter=babel.dates.format_date): + # type: (datetime, unicode, unicode, Callable, Callable) -> unicode if locale is None: locale = 'en' @@ -180,6 +193,7 @@ def babel_format_date(date, format, locale, warn=None, formatter=babel.dates.for def format_date(format, date=None, language=None, warn=None): + # type: (str, datetime, unicode, Callable) -> unicode if format is None: format = 'medium' @@ -226,6 +240,7 @@ def format_date(format, date=None, language=None, warn=None): def get_image_filename_for_language(filename, env): + # type: (unicode, BuildEnvironment) -> unicode if not env.config.language: return filename @@ -245,6 +260,7 @@ def get_image_filename_for_language(filename, env): def search_image_for_language(filename, env): + # type: (unicode, BuildEnvironment) -> unicode if not env.config.language: return filename diff --git a/sphinx/util/inspect.py b/sphinx/util/inspect.py index 147d43592..4439e09f6 100644 --- a/sphinx/util/inspect.py +++ b/sphinx/util/inspect.py @@ -12,10 +12,14 @@ import re from six import PY3, binary_type -from six.moves import builtins +from six.moves import builtins # type: ignore from sphinx.util import force_decode +if False: + # For type annotation + from typing import Any, Callable, Tuple # NOQA + # this imports the standard library inspect module without resorting to # relatively import this module inspect = __import__('inspect') @@ -67,7 +71,7 @@ else: # 2.7 """Like inspect.getargspec but supports functools.partial as well.""" if inspect.ismethod(func): func = func.__func__ - parts = 0, () + parts = 0, () # type: Tuple[int, Tuple[unicode, ...]] if type(func) is partial: keywords = func.keywords if keywords is None: @@ -101,6 +105,7 @@ except ImportError: def isenumattribute(x): + # type: (Any) -> bool """Check if the object is attribute of enum.""" if enum is None: return False @@ -108,6 +113,7 @@ def isenumattribute(x): def isdescriptor(x): + # type: (Any) -> bool """Check if the object is some kind of descriptor.""" for item in '__get__', '__set__', '__delete__': if hasattr(safe_getattr(x, item, None), '__call__'): @@ -116,6 +122,7 @@ def isdescriptor(x): def safe_getattr(obj, name, *defargs): + # type: (Any, unicode, unicode) -> object """A getattr() that turns all exceptions into AttributeErrors.""" try: return getattr(obj, name, *defargs) @@ -138,8 +145,9 @@ def safe_getattr(obj, name, *defargs): def safe_getmembers(object, predicate=None, attr_getter=safe_getattr): + # type: (Any, Callable[[unicode], bool], Callable) -> List[Tuple[unicode, Any]] """A version of inspect.getmembers() that uses safe_getattr().""" - results = [] + results = [] # type: List[Tuple[unicode, Any]] for key in dir(object): try: value = attr_getter(object, key, None) @@ -152,6 +160,7 @@ def safe_getmembers(object, predicate=None, attr_getter=safe_getattr): def object_description(object): + # type: (Any) -> unicode """A repr() implementation that returns text safe to use in reST context.""" try: s = repr(object) @@ -166,6 +175,7 @@ def object_description(object): def is_builtin_class_method(obj, attr_name): + # type: (Any, unicode) -> bool """If attr_name is implemented at builtin class, return True. >>> is_builtin_class_method(int, '__init__') @@ -177,6 +187,6 @@ def is_builtin_class_method(obj, attr_name): classes = [c for c in inspect.getmro(obj) if attr_name in c.__dict__] cls = classes[0] if classes else object - if not hasattr(builtins, safe_getattr(cls, '__name__', '')): + if not hasattr(builtins, safe_getattr(cls, '__name__', '')): # type: ignore return False - return getattr(builtins, safe_getattr(cls, '__name__', '')) is cls + return getattr(builtins, safe_getattr(cls, '__name__', '')) is cls # type: ignore diff --git a/sphinx/util/jsdump.py b/sphinx/util/jsdump.py index 5a2148c5b..330b5c0ee 100644 --- a/sphinx/util/jsdump.py +++ b/sphinx/util/jsdump.py @@ -16,6 +16,10 @@ from six import iteritems, integer_types, string_types from sphinx.util.pycompat import u +if False: + # For type annotation + from typing import Any, IO, Union # NOQA + _str_re = re.compile(r'"(\\\\|\\"|[^"])*"') _int_re = re.compile(r'\d+') _name_re = re.compile(r'[a-zA-Z_]\w*') @@ -37,6 +41,7 @@ ESCAPED = re.compile(r'\\u.{4}|\\.') def encode_string(s): + # type: (str) -> str def replace(match): s = match.group(0) try: @@ -55,6 +60,7 @@ def encode_string(s): def decode_string(s): + # type: (str) -> str return ESCAPED.sub(lambda m: eval(u + '"' + m.group() + '"'), s) @@ -77,6 +83,7 @@ double in super""".split()) def dumps(obj, key=False): + # type: (Any, bool) -> str if key: if not isinstance(obj, string_types): obj = str(obj) @@ -88,7 +95,7 @@ def dumps(obj, key=False): return 'null' elif obj is True or obj is False: return obj and 'true' or 'false' - elif isinstance(obj, integer_types + (float,)): + elif isinstance(obj, integer_types + (float,)): # type: ignore return str(obj) elif isinstance(obj, dict): return '{%s}' % ','.join(sorted('%s:%s' % ( @@ -100,20 +107,22 @@ def dumps(obj, key=False): elif isinstance(obj, (tuple, list)): return '[%s]' % ','.join(dumps(x) for x in obj) elif isinstance(obj, string_types): - return encode_string(obj) + return encode_string(obj) # type: ignore raise TypeError(type(obj)) def dump(obj, f): + # type: (Any, IO) -> None f.write(dumps(obj)) def loads(x): + # type: (str) -> Any """Loader that can read the JS subset the indexer produces.""" nothing = object() i = 0 n = len(x) - stack = [] + stack = [] # type: List[Union[List, Dict]] obj = nothing key = False keys = [] @@ -164,6 +173,7 @@ def loads(x): raise ValueError("multiple values") key = False else: + y = None # type: Any m = _str_re.match(x, i) if m: y = decode_string(m.group()[1:-1]) @@ -193,11 +203,12 @@ def loads(x): obj[keys[-1]] = y key = False else: - obj.append(y) + obj.append(y) # type: ignore if obj is nothing: raise ValueError("nothing loaded from string") return obj def load(f): + # type: (IO) -> Any return loads(f.read()) diff --git a/sphinx/util/matching.py b/sphinx/util/matching.py index fc7750be9..be4bfee34 100644 --- a/sphinx/util/matching.py +++ b/sphinx/util/matching.py @@ -11,15 +11,20 @@ import re +if False: + # For type annotation + from typing import Callable, Match, Pattern # NOQA + def _translate_pattern(pat): + # type: (unicode) -> unicode """Translate a shell-style glob pattern to a regular expression. Adapted from the fnmatch module, but enhanced so that single stars don't match slashes. """ i, n = 0, len(pat) - res = '' + res = '' # type: unicode while i < n: c = pat[i] i += 1 @@ -59,6 +64,7 @@ def _translate_pattern(pat): def compile_matchers(patterns): + # type: (List[unicode]) -> List[Callable[[unicode], Match[unicode]]] return [re.compile(_translate_pattern(pat)).match for pat in patterns] @@ -70,23 +76,27 @@ class Matcher(object): """ def __init__(self, patterns): + # type: (List[unicode]) -> None expanded = [pat[3:] for pat in patterns if pat.startswith('**/')] self.patterns = compile_matchers(patterns + expanded) def __call__(self, string): + # type: (unicode) -> bool return self.match(string) def match(self, string): + # type: (unicode) -> bool return any(pat(string) for pat in self.patterns) DOTFILES = Matcher(['**/.*']) -_pat_cache = {} +_pat_cache = {} # type: Dict[unicode, Pattern] def patmatch(name, pat): + # type: (unicode, unicode) -> re.Match """Return if name matches pat. Adapted from fnmatch module.""" if pat not in _pat_cache: _pat_cache[pat] = re.compile(_translate_pattern(pat)) @@ -94,6 +104,7 @@ def patmatch(name, pat): def patfilter(names, pat): + # type: (List[unicode], unicode) -> List[unicode] """Return the subset of the list NAMES that match PAT. Adapted from fnmatch module. diff --git a/sphinx/util/nodes.py b/sphinx/util/nodes.py index fe3b0f2f9..2568ea4aa 100644 --- a/sphinx/util/nodes.py +++ b/sphinx/util/nodes.py @@ -13,19 +13,28 @@ from __future__ import absolute_import import re from six import text_type + from docutils import nodes from sphinx import addnodes from sphinx.locale import pairindextypes +if False: + # For type annotation + from typing import Any, Callable, Iterable, Tuple, Union # NOQA + from sphinx.builders import Builder # NOQA + from sphinx.utils.tags import Tags # NOQA + class WarningStream(object): def __init__(self, warnfunc): + # type: (Callable) -> None self.warnfunc = warnfunc self._re = re.compile(r'\((DEBUG|INFO|WARNING|ERROR|SEVERE)/[0-4]\)') def write(self, text): + # type: (str) -> None text = text.strip() if text: self.warnfunc(self._re.sub(r'\1:', text), None, '') @@ -37,6 +46,7 @@ caption_ref_re = explicit_title_re # b/w compat alias def apply_source_workaround(node): + # type: (nodes.Node) -> None # workaround: nodes.term have wrong rawsource if classifier is specified. # The behavior of docutils-0.11, 0.12 is: # * when ``term text : classifier1 : classifier2`` is specified, @@ -87,6 +97,7 @@ IGNORED_NODES = ( def is_pending_meta(node): + # type: (nodes.Node) -> bool if (isinstance(node, nodes.pending) and isinstance(node.details.get('nodes', [None])[0], addnodes.meta)): return True @@ -95,6 +106,7 @@ def is_pending_meta(node): def is_translatable(node): + # type: (nodes.Node) -> bool if isinstance(node, addnodes.translatable): return True @@ -137,6 +149,7 @@ META_TYPE_NODES = ( def extract_messages(doctree): + # type: (nodes.Node) -> Iterable[Tuple[nodes.Node, unicode]] """Extract translatable messages from a document tree.""" for node in doctree.traverse(is_translatable): if isinstance(node, addnodes.translatable): @@ -164,12 +177,14 @@ def extract_messages(doctree): def find_source_node(node): + # type: (nodes.Node) -> unicode for pnode in traverse_parent(node): if pnode.source: return pnode.source def traverse_parent(node, cls=None): + # type: (nodes.Node, Any) -> Iterable[nodes.Node] while node: if cls is None or isinstance(node, cls): yield node @@ -177,6 +192,7 @@ def traverse_parent(node, cls=None): def traverse_translatable_index(doctree): + # type: (nodes.Node) -> Iterable[Tuple[nodes.Node, List[unicode]]] """Traverse translatable index node from a document tree.""" def is_block_index(node): return isinstance(node, addnodes.index) and \ @@ -190,6 +206,7 @@ def traverse_translatable_index(doctree): def nested_parse_with_titles(state, content, node): + # type: (Any, List[unicode], nodes.Node) -> unicode """Version of state.nested_parse() that allows titles and does not require titles to have the same decoration as the calling document. @@ -209,6 +226,7 @@ def nested_parse_with_titles(state, content, node): def clean_astext(node): + # type: (nodes.Node) -> unicode """Like node.astext(), but ignore images.""" node = node.deepcopy() for img in node.traverse(nodes.image): @@ -217,6 +235,7 @@ def clean_astext(node): def split_explicit_title(text): + # type: (str) -> Tuple[bool, unicode, unicode] """Split role content into title and target, if given.""" match = explicit_title_re.match(text) if match: @@ -230,7 +249,8 @@ indextypes = [ def process_index_entry(entry, targetid): - indexentries = [] + # type: (unicode, unicode) -> List[Tuple[unicode, unicode, unicode, unicode, unicode]] + indexentries = [] # type: List[Tuple[unicode, unicode, unicode, unicode, unicode]] entry = entry.strip() oentry = entry main = '' @@ -266,6 +286,7 @@ def process_index_entry(entry, targetid): def inline_all_toctrees(builder, docnameset, docname, tree, colorfunc, traversed): + # type: (Builder, Set[unicode], unicode, nodes.Node, Callable, nodes.Node) -> nodes.Node """Inline all toctrees in the *tree*. Record all docnames in *docnameset*, and output docnames with *colorfunc*. @@ -299,6 +320,7 @@ def inline_all_toctrees(builder, docnameset, docname, tree, colorfunc, traversed def make_refnode(builder, fromdocname, todocname, targetid, child, title=None): + # type: (Builder, unicode, unicode, unicode, nodes.Node, unicode) -> nodes.reference """Shortcut to create a reference node.""" node = nodes.reference('', '', internal=True) if fromdocname == todocname: @@ -313,15 +335,18 @@ def make_refnode(builder, fromdocname, todocname, targetid, child, title=None): def set_source_info(directive, node): + # type: (Any, nodes.Node) -> None node.source, node.line = \ directive.state_machine.get_source_and_line(directive.lineno) def set_role_source_info(inliner, lineno, node): + # type: (Any, unicode, nodes.Node) -> None node.source, node.line = inliner.reporter.get_source_and_line(lineno) def process_only_nodes(doctree, tags, warn_node=None): + # type: (nodes.Node, Tags, Callable) -> None # A comment on the comment() nodes being inserted: replacing by [] would # result in a "Losing ids" exception if there is a target node before # the only node, so we make sure docutils can transfer the id to @@ -345,6 +370,7 @@ def process_only_nodes(doctree, tags, warn_node=None): # monkey-patch Element.copy to copy the rawsource and line def _new_copy(self): + # type: (nodes.Node) -> nodes.Node newnode = self.__class__(self.rawsource, **self.attributes) if isinstance(self, nodes.Element): newnode.source = self.source diff --git a/sphinx/util/osutil.py b/sphinx/util/osutil.py index b8fffb220..5561f0ddb 100644 --- a/sphinx/util/osutil.py +++ b/sphinx/util/osutil.py @@ -21,9 +21,12 @@ import filecmp from os import path import contextlib from io import BytesIO, StringIO - from six import PY2, text_type +if False: + # For type annotation + from typing import Any, Iterator, Tuple, Union # NOQA + # Errnos that we need. EEXIST = getattr(errno, 'EEXIST', 0) ENOENT = getattr(errno, 'ENOENT', 0) @@ -39,15 +42,18 @@ SEP = "/" def os_path(canonicalpath): + # type: (unicode) -> unicode return canonicalpath.replace(SEP, path.sep) def canon_path(nativepath): + # type: (unicode) -> unicode """Return path in OS-independent form""" return nativepath.replace(path.sep, SEP) def relative_uri(base, to): + # type: (unicode, unicode) -> unicode """Return a relative URL from ``base`` to ``to``.""" if to.startswith(SEP): return to @@ -71,6 +77,7 @@ def relative_uri(base, to): def ensuredir(path): + # type: (unicode) -> None """Ensure that a path exists.""" try: os.makedirs(path) @@ -84,6 +91,7 @@ def ensuredir(path): # that check UnicodeError. # The customization obstacle to replace the function with the os.walk. def walk(top, topdown=True, followlinks=False): + # type: (unicode, bool, bool) -> Iterator[Tuple[unicode, List[unicode], List[unicode]]] """Backport of os.walk from 2.6, where the *followlinks* argument was added. """ @@ -115,6 +123,7 @@ def walk(top, topdown=True, followlinks=False): def mtimes_of_files(dirnames, suffix): + # type: (List[unicode], unicode) -> Iterator[float] for dirname in dirnames: for root, dirs, files in os.walk(dirname): for sfile in files: @@ -126,6 +135,7 @@ def mtimes_of_files(dirnames, suffix): def movefile(source, dest): + # type: (unicode, unicode) -> None """Move a file, removing the destination if it exists.""" if os.path.exists(dest): try: @@ -136,6 +146,7 @@ def movefile(source, dest): def copytimes(source, dest): + # type: (unicode, unicode) -> None """Copy a file's modification times.""" st = os.stat(source) if hasattr(os, 'utime'): @@ -143,6 +154,7 @@ def copytimes(source, dest): def copyfile(source, dest): + # type: (unicode, unicode) -> None """Copy a file and its modification times, if possible. Note: ``copyfile`` skips copying if the file has not been changed""" @@ -159,10 +171,12 @@ no_fn_re = re.compile(r'[^a-zA-Z0-9_-]') def make_filename(string): + # type: (str) -> unicode return no_fn_re.sub('', string) or 'sphinx' def ustrftime(format, *args): + # type: (unicode, Any) -> unicode # [DEPRECATED] strftime for unicode strings # It will be removed at Sphinx-1.5 if not args: @@ -171,7 +185,7 @@ def ustrftime(format, *args): source_date_epoch = os.getenv('SOURCE_DATE_EPOCH') if source_date_epoch is not None: time_struct = time.gmtime(float(source_date_epoch)) - args = [time_struct] + args = [time_struct] # type: ignore if PY2: # if a locale is set, the time strings are encoded in the encoding # given by LC_TIME; if that is available, use it @@ -188,16 +202,18 @@ def ustrftime(format, *args): def safe_relpath(path, start=None): + # type: (unicode, unicode) -> unicode try: return os.path.relpath(path, start) except ValueError: return path -fs_encoding = sys.getfilesystemencoding() or sys.getdefaultencoding() +fs_encoding = sys.getfilesystemencoding() or sys.getdefaultencoding() # type: unicode def abspath(pathdir): + # type: (unicode) -> unicode pathdir = path.abspath(pathdir) if isinstance(pathdir, bytes): pathdir = pathdir.decode(fs_encoding) @@ -205,6 +221,7 @@ def abspath(pathdir): def getcwd(): + # type: () -> unicode if hasattr(os, 'getcwdu'): return os.getcwdu() return os.getcwd() @@ -212,6 +229,7 @@ def getcwd(): @contextlib.contextmanager def cd(target_dir): + # type: (unicode) -> Iterator[None] cwd = getcwd() try: os.chdir(target_dir) @@ -233,10 +251,12 @@ class FileAvoidWrite(object): Objects can be used as context managers. """ def __init__(self, path): + # type: (unicode) -> None self._path = path - self._io = None + self._io = None # type: Union[StringIO, BytesIO] def write(self, data): + # type: (Union[str, bytes]) -> None if not self._io: if isinstance(data, text_type): self._io = StringIO() @@ -246,6 +266,7 @@ class FileAvoidWrite(object): self._io.write(data) def close(self): + # type: () -> None """Stop accepting writes and write file, if needed.""" if not self._io: raise Exception('FileAvoidWrite does not support empty files.') @@ -288,6 +309,7 @@ class FileAvoidWrite(object): def rmtree(path): + # type: (unicode) -> None if os.path.isdir(path): shutil.rmtree(path) else: diff --git a/sphinx/util/parallel.py b/sphinx/util/parallel.py index bace0b5fd..814af09b1 100644 --- a/sphinx/util/parallel.py +++ b/sphinx/util/parallel.py @@ -13,16 +13,19 @@ import os import time import traceback from math import sqrt +from six import iteritems try: import multiprocessing except ImportError: multiprocessing = None -from six import iteritems - from sphinx.errors import SphinxParallelError +if False: + # For type annotation + from typing import Any, Callable, Sequence # NOQA + # our parallel functionality only works for the forking Process parallel_available = multiprocessing and (os.name == 'posix') @@ -31,9 +34,11 @@ class SerialTasks(object): """Has the same interface as ParallelTasks, but executes tasks directly.""" def __init__(self, nproc=1): + # type: (int) -> None pass def add_task(self, task_func, arg=None, result_func=None): + # type: (Callable, Any, Callable) -> None if arg is not None: res = task_func(arg) else: @@ -42,6 +47,7 @@ class SerialTasks(object): result_func(res) def join(self): + # type: () -> None pass @@ -49,23 +55,25 @@ class ParallelTasks(object): """Executes *nproc* tasks in parallel after forking.""" def __init__(self, nproc): + # type: (int) -> None self.nproc = nproc # (optional) function performed by each task on the result of main task - self._result_funcs = {} + self._result_funcs = {} # type: Dict[int, Callable] # task arguments - self._args = {} + self._args = {} # type: Dict[int, List[Any]] # list of subprocesses (both started and waiting) - self._procs = {} + self._procs = {} # type: Dict[int, multiprocessing.Process] # list of receiving pipe connections of running subprocesses - self._precvs = {} + self._precvs = {} # type: Dict[int, Any] # list of receiving pipe connections of waiting subprocesses - self._precvsWaiting = {} + self._precvsWaiting = {} # type: Dict[int, Any] # number of working subprocesses self._pworking = 0 # task number of each subprocess self._taskid = 0 def _process(self, pipe, func, arg): + # type: (Any, Callable, Any) -> None try: if arg is None: ret = func() @@ -76,6 +84,7 @@ class ParallelTasks(object): pipe.send((True, (err, traceback.format_exc()))) def add_task(self, task_func, arg=None, result_func=None): + # type: (Callable, Any, Callable) -> None tid = self._taskid self._taskid += 1 self._result_funcs[tid] = result_func or (lambda arg: None) @@ -88,10 +97,12 @@ class ParallelTasks(object): self._join_one() def join(self): + # type: () -> None while self._pworking: self._join_one() def _join_one(self): + # type: () -> None for tid, pipe in iteritems(self._precvs): if pipe.poll(): exc, result = pipe.recv() @@ -111,6 +122,7 @@ class ParallelTasks(object): def make_chunks(arguments, nproc, maxbatch=10): + # type: (Sequence[unicode], int, int) -> List[Any] # determine how many documents to read in one go nargs = len(arguments) chunksize = nargs // nproc diff --git a/sphinx/util/pycompat.py b/sphinx/util/pycompat.py index e3b17ef62..3d31abb1e 100644 --- a/sphinx/util/pycompat.py +++ b/sphinx/util/pycompat.py @@ -14,11 +14,13 @@ import sys import codecs import warnings -from six import class_types +from six import PY3, class_types, text_type, exec_ from six.moves import zip_longest from itertools import product -from six import PY3, text_type, exec_ +if False: + # For type annotation + from typing import Any, Callable # NOQA NoneType = type(None) @@ -33,6 +35,7 @@ if PY3: # safely encode a string for printing to the terminal def terminal_safe(s): + # type: (unicode) -> unicode return s.encode('ascii', 'backslashreplace').decode('ascii') # some kind of default system encoding; should be used with a lenient # error handler @@ -40,6 +43,7 @@ if PY3: # support for running 2to3 over config files def convert_with_2to3(filepath): + # type: (unicode) -> unicode from lib2to3.refactor import RefactoringTool, get_fixers_from_package from lib2to3.pgen2.parse import ParseError fixers = get_fixers_from_package('lib2to3.fixes') @@ -68,13 +72,15 @@ else: # Python 2 u = 'u' # no need to refactor on 2.x versions - convert_with_2to3 = None + convert_with_2to3 = None # type: ignore def TextIOWrapper(stream, encoding): + # type: (file, str) -> unicode return codecs.lookup(encoding or 'ascii')[2](stream) # safely encode a string for printing to the terminal def terminal_safe(s): + # type: (unicode) -> unicode return s.encode('ascii', 'backslashreplace') # some kind of default system encoding; should be used with a lenient # error handler @@ -91,6 +97,7 @@ else: # backport from python3 def indent(text, prefix, predicate=None): + # type: (unicode, unicode, Callable) -> unicode if predicate is None: def predicate(line): return line.strip() @@ -102,6 +109,7 @@ else: def execfile_(filepath, _globals, open=open): + # type: (unicode, Any, Callable) -> None from sphinx.util.osutil import fs_encoding # get config source -- 'b' is a no-op under 2.x, while 'U' is # ignored under 3.x (but 3.x compile() accepts \r\n newlines) @@ -132,6 +140,7 @@ def execfile_(filepath, _globals, open=open): class _DeprecationWrapper(object): def __init__(self, mod, deprecated): + # type: (Any, Dict) -> None self._mod = mod self._deprecated = deprecated @@ -145,7 +154,7 @@ class _DeprecationWrapper(object): return getattr(self._mod, attr) -sys.modules[__name__] = _DeprecationWrapper(sys.modules[__name__], dict( +sys.modules[__name__] = _DeprecationWrapper(sys.modules[__name__], dict( # type: ignore zip_longest = zip_longest, product = product, all = all, From 9c66ac71ab244b227aac8781ec3a734692b96076 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Wed, 9 Nov 2016 11:45:27 +0900 Subject: [PATCH 223/297] Add type-check annotations to sphinx.application --- sphinx/application.py | 132 +++++++++++++++++++++++++++++++----------- 1 file changed, 97 insertions(+), 35 deletions(-) diff --git a/sphinx/application.py b/sphinx/application.py index 93f12f3b6..08075d8e1 100644 --- a/sphinx/application.py +++ b/sphinx/application.py @@ -22,13 +22,13 @@ from collections import deque from six import iteritems, itervalues, text_type from six.moves import cStringIO + from docutils import nodes from docutils.parsers.rst import convert_directive_function, \ directives, roles import sphinx from sphinx import package_dir, locale -from sphinx.roles import XRefRole from sphinx.config import Config from sphinx.errors import SphinxError, SphinxWarning, ExtensionError, \ VersionRequirementError, ConfigError @@ -36,15 +36,25 @@ from sphinx.domains import ObjType from sphinx.domains.std import GenericObject, Target, StandardDomain from sphinx.environment import BuildEnvironment from sphinx.io import SphinxStandaloneReader +from sphinx.roles import XRefRole from sphinx.util import pycompat # noqa: F401 from sphinx.util import import_object from sphinx.util.tags import Tags from sphinx.util.osutil import ENOENT from sphinx.util.logging import is_suppressed_warning -from sphinx.util.console import bold, lightgray, darkgray, darkred, darkgreen, \ - term_width_line +from sphinx.util.console import ( # type: ignore + bold, lightgray, darkgray, darkred, darkgreen, term_width_line +) from sphinx.util.i18n import find_catalog_source_files +if False: + # For type annotation + from typing import Any, Callable, IO, Iterable, Iterator, Tuple, Type, Union # NOQA + from docutils.parsers import Parser # NOQA + from docutils.transform import Transform # NOQA + from sphinx.builders import Builder # NOQA + from sphinx.domains import Domain # NOQA + # List of all known core events. Maps name to arguments description. events = { 'builder-inited': '', @@ -60,7 +70,7 @@ events = { 'html-collect-pages': 'builder', 'html-page-context': 'pagename, context, doctree or None', 'build-finished': 'exception', -} +} # type: Dict[unicode, unicode] builtin_extensions = ( 'sphinx.builders.applehelp', 'sphinx.builders.changes', @@ -90,14 +100,14 @@ builtin_extensions = ( 'sphinx.directives.other', 'sphinx.directives.patches', 'sphinx.roles', -) +) # type: Tuple[unicode, ...] CONFIG_FILENAME = 'conf.py' ENV_PICKLE_FILENAME = 'environment.pickle' # list of deprecated extensions. Keys are extension name. # Values are Sphinx version that merge the extension. -EXTENSION_BLACKLIST = {"sphinxjp.themecore": "1.2"} +EXTENSION_BLACKLIST = {"sphinxjp.themecore": "1.2"} # type: Dict[unicode, unicode] class Sphinx(object): @@ -106,19 +116,20 @@ class Sphinx(object): confoverrides=None, status=sys.stdout, warning=sys.stderr, freshenv=False, warningiserror=False, tags=None, verbosity=0, parallel=0): + # type: (unicode, unicode, unicode, unicode, unicode, Dict, IO, IO, bool, bool, unicode, int, int) -> None # NOQA self.verbosity = verbosity self.next_listener_id = 0 - self._extensions = {} - self._extension_metadata = {} - self._additional_source_parsers = {} - self._listeners = {} - self._setting_up_extension = ['?'] - self.domains = {} + self._extensions = {} # type: Dict[unicode, Any] + self._extension_metadata = {} # type: Dict[unicode, Dict[unicode, Any]] + self._additional_source_parsers = {} # type: Dict[unicode, Parser] + self._listeners = {} # type: Dict[unicode, Dict[int, Callable]] + self._setting_up_extension = ['?'] # type: List[unicode] + self.domains = {} # type: Dict[unicode, Type[Domain]] self.buildername = buildername - self.builderclasses = {} - self.builder = None - self.env = None - self.enumerable_nodes = {} + self.builderclasses = {} # type: Dict[unicode, Type[Builder]] + self.builder = None # type: Builder + self.env = None # type: BuildEnvironment + self.enumerable_nodes = {} # type: Dict[nodes.Node, Tuple[unicode, Callable]] # NOQA self.srcdir = srcdir self.confdir = confdir @@ -128,24 +139,24 @@ class Sphinx(object): self.parallel = parallel if status is None: - self._status = cStringIO() + self._status = cStringIO() # type: IO self.quiet = True else: self._status = status self.quiet = False if warning is None: - self._warning = cStringIO() + self._warning = cStringIO() # type: IO else: self._warning = warning self._warncount = 0 self.warningiserror = warningiserror self._events = events.copy() - self._translators = {} + self._translators = {} # type: Dict[unicode, nodes.GenericNodeVisitor] # keep last few messages for traceback - self.messagelog = deque(maxlen=10) + self.messagelog = deque(maxlen=10) # type: deque # say hello to the world self.info(bold('Running Sphinx v%s' % sphinx.__display_version__)) @@ -246,6 +257,7 @@ class Sphinx(object): self._init_enumerable_nodes() def _init_i18n(self): + # type: () -> None """Load translated strings from the configured localedirs if enabled in the configuration. """ @@ -271,6 +283,7 @@ class Sphinx(object): self.info('not available for built-in messages') def _init_source_parsers(self): + # type: () -> None for suffix, parser in iteritems(self._additional_source_parsers): if suffix not in self.config.source_suffix: self.config.source_suffix.append(suffix) @@ -278,6 +291,7 @@ class Sphinx(object): self.config.source_parsers[suffix] = parser def _init_env(self, freshenv): + # type: (bool) -> None if freshenv: self.env = BuildEnvironment(self.srcdir, self.doctreedir, self.config) self.env.set_warnfunc(self.warn) @@ -304,6 +318,7 @@ class Sphinx(object): return self._init_env(freshenv=True) def _init_builder(self, buildername): + # type: (unicode) -> None if buildername is None: print('No builder selected, using default: html', file=self._status) buildername = 'html' @@ -315,12 +330,14 @@ class Sphinx(object): self.emit('builder-inited') def _init_enumerable_nodes(self): + # type: () -> None for node, settings in iteritems(self.enumerable_nodes): - self.env.domains['std'].enumerable_nodes[node] = settings + self.env.domains['std'].enumerable_nodes[node] = settings # type: ignore # ---- main "build" method ------------------------------------------------- def build(self, force_all=False, filenames=None): + # type: (bool, List[unicode]) -> None try: if force_all: self.builder.compile_all_catalogs() @@ -354,6 +371,7 @@ class Sphinx(object): # ---- logging handling ---------------------------------------------------- def _log(self, message, wfile, nonl=False): + # type: (unicode, IO, bool) -> None try: wfile.write(message) except UnicodeEncodeError: @@ -367,6 +385,7 @@ class Sphinx(object): def warn(self, message, location=None, prefix='WARNING: ', type=None, subtype=None, colorfunc=darkred): + # type: (unicode, unicode, unicode, unicode, unicode, Callable) -> None """Emit a warning. If *location* is given, it should either be a tuple of (docname, lineno) @@ -399,6 +418,7 @@ class Sphinx(object): self._log(colorfunc(warntext), self._warning, True) def info(self, message='', nonl=False): + # type: (unicode, bool) -> None """Emit an informational message. If *nonl* is true, don't emit a newline at the end (which implies that @@ -407,6 +427,7 @@ class Sphinx(object): self._log(message, self._status, nonl) def verbose(self, message, *args, **kwargs): + # type: (unicode, Any, Any) -> None """Emit a verbose informational message. The message will only be emitted for verbosity levels >= 1 (i.e. at @@ -422,6 +443,7 @@ class Sphinx(object): self._log(message, self._status) def debug(self, message, *args, **kwargs): + # type: (unicode, Any, Any) -> None """Emit a debug-level informational message. The message will only be emitted for verbosity levels >= 2 (i.e. at @@ -437,6 +459,7 @@ class Sphinx(object): self._log(darkgray(message), self._status) def debug2(self, message, *args, **kwargs): + # type: (unicode, Any, Any) -> None """Emit a lowlevel debug-level informational message. The message will only be emitted for verbosity level 3 (i.e. three @@ -452,6 +475,7 @@ class Sphinx(object): self._log(lightgray(message), self._status) def _display_chunk(chunk): + # type: (Any) -> unicode if isinstance(chunk, (list, tuple)): if len(chunk) == 1: return text_type(chunk[0]) @@ -460,6 +484,7 @@ class Sphinx(object): def old_status_iterator(self, iterable, summary, colorfunc=darkgreen, stringify_func=_display_chunk): + # type: (Iterable, unicode, Callable, Callable) -> Iterator l = 0 for item in iterable: if l == 0: @@ -473,6 +498,7 @@ class Sphinx(object): # new version with progress info def status_iterator(self, iterable, summary, colorfunc=darkgreen, length=0, stringify_func=_display_chunk): + # type: (Iterable, unicode, Callable, int, Callable) -> Iterable if length == 0: for item in self.old_status_iterator(iterable, summary, colorfunc, stringify_func): @@ -496,6 +522,7 @@ class Sphinx(object): # ---- general extensibility interface ------------------------------------- def setup_extension(self, extension): + # type: (unicode) -> None """Import and setup a Sphinx extension module. No-op if called twice.""" self.debug('[app] setting up extension: %r', extension) if extension in self._extensions: @@ -543,21 +570,25 @@ class Sphinx(object): self._setting_up_extension.pop() def require_sphinx(self, version): + # type: (unicode) -> None # check the Sphinx version if requested if version > sphinx.__display_version__[:3]: raise VersionRequirementError(version) def import_object(self, objname, source=None): + # type: (str, unicode) -> Any """Import an object from a 'module.name' string.""" return import_object(objname, source=None) # event interface def _validate_event(self, event): + # type: (unicode) -> None if event not in self._events: raise ExtensionError('Unknown event name: %s' % event) def connect(self, event, callback): + # type: (unicode, Callable) -> int self._validate_event(event) listener_id = self.next_listener_id if event not in self._listeners: @@ -570,11 +601,13 @@ class Sphinx(object): return listener_id def disconnect(self, listener_id): + # type: (int) -> None self.debug('[app] disconnecting event: [id=%s]', listener_id) for event in itervalues(self._listeners): event.pop(listener_id, None) def emit(self, event, *args): + # type: (unicode, Any) -> List try: self.debug2('[app] emitting event: %r%s', event, repr(args)[:100]) except Exception: @@ -588,6 +621,7 @@ class Sphinx(object): return results def emit_firstresult(self, event, *args): + # type: (unicode, Any) -> Any for result in self.emit(event, *args): if result is not None: return result @@ -596,6 +630,7 @@ class Sphinx(object): # registering addon parts def add_builder(self, builder): + # type: (Type[Builder]) -> None self.debug('[app] adding builder: %r', builder) if not hasattr(builder, 'name'): raise ExtensionError('Builder class %s has no "name" attribute' @@ -607,8 +642,9 @@ class Sphinx(object): self.builderclasses[builder.name] = builder def add_config_value(self, name, default, rebuild, types=()): + # type: (unicode, Any, Union[bool, unicode], Any) -> None self.debug('[app] adding config value: %r', - (name, default, rebuild) + ((types,) if types else ())) + (name, default, rebuild) + ((types,) if types else ())) # type: ignore if name in self.config.values: raise ExtensionError('Config value %r already present' % name) if rebuild in (False, True): @@ -616,16 +652,19 @@ class Sphinx(object): self.config.values[name] = (default, rebuild, types) def add_event(self, name): + # type: (unicode) -> None self.debug('[app] adding event: %r', name) if name in self._events: raise ExtensionError('Event %r already present' % name) self._events[name] = '' def set_translator(self, name, translator_class): + # type: (unicode, Any) -> None self.info(bold('A Translator for the %s builder is changed.' % name)) self._translators[name] = translator_class def add_node(self, node, **kwds): + # type: (nodes.Node, Any) -> None self.debug('[app] adding node: %r', (node, kwds)) if not kwds.pop('override', False) and \ hasattr(nodes.GenericNodeVisitor, 'visit_' + node.__name__): @@ -644,17 +683,15 @@ class Sphinx(object): if translator is not None: pass elif key == 'html': - from sphinx.writers.html import HTMLTranslator as translator + from sphinx.writers.html import HTMLTranslator as translator # type: ignore elif key == 'latex': - from sphinx.writers.latex import LaTeXTranslator as translator + from sphinx.writers.latex import LaTeXTranslator as translator # type: ignore elif key == 'text': - from sphinx.writers.text import TextTranslator as translator + from sphinx.writers.text import TextTranslator as translator # type: ignore elif key == 'man': - from sphinx.writers.manpage import ManualPageTranslator \ - as translator + from sphinx.writers.manpage import ManualPageTranslator as translator # type: ignore # NOQA elif key == 'texinfo': - from sphinx.writers.texinfo import TexinfoTranslator \ - as translator + from sphinx.writers.texinfo import TexinfoTranslator as translator # type: ignore # NOQA else: # ignore invalid keys for compatibility continue @@ -663,14 +700,16 @@ class Sphinx(object): setattr(translator, 'depart_'+node.__name__, depart) def add_enumerable_node(self, node, figtype, title_getter=None, **kwds): + # type: (nodes.Node, unicode, Callable, Any) -> None self.enumerable_nodes[node] = (figtype, title_getter) self.add_node(node, **kwds) def _directive_helper(self, obj, content=None, arguments=None, **options): + # type: (Any, unicode, Any, Any) -> Any if isinstance(obj, (types.FunctionType, types.MethodType)): - obj.content = content - obj.arguments = arguments or (0, 0, False) - obj.options = options + obj.content = content # type: ignore + obj.arguments = arguments or (0, 0, False) # type: ignore + obj.options = options # type: ignore return convert_directive_function(obj) else: if content or arguments or options: @@ -679,6 +718,7 @@ class Sphinx(object): return obj def add_directive(self, name, obj, content=None, arguments=None, **options): + # type: (unicode, Any, unicode, Any, Any) -> None self.debug('[app] adding directive: %r', (name, obj, content, arguments, options)) if name in directives._directives: @@ -690,6 +730,7 @@ class Sphinx(object): name, self._directive_helper(obj, content, arguments, **options)) def add_role(self, name, role): + # type: (unicode, Any) -> None self.debug('[app] adding role: %r', (name, role)) if name in roles._roles: self.warn('while setting up extension %s: role %r is ' @@ -699,6 +740,7 @@ class Sphinx(object): roles.register_local_role(name, role) def add_generic_role(self, name, nodeclass): + # type: (unicode, Any) -> None # don't use roles.register_generic_role because it uses # register_canonical_role self.debug('[app] adding generic role: %r', (name, nodeclass)) @@ -711,12 +753,14 @@ class Sphinx(object): roles.register_local_role(name, role) def add_domain(self, domain): + # type: (Type[Domain]) -> None self.debug('[app] adding domain: %r', domain) if domain.name in self.domains: raise ExtensionError('domain %s already registered' % domain.name) self.domains[domain.name] = domain def override_domain(self, domain): + # type: (Type[Domain]) -> None self.debug('[app] overriding domain: %r', domain) if domain.name not in self.domains: raise ExtensionError('domain %s not yet registered' % domain.name) @@ -727,6 +771,7 @@ class Sphinx(object): def add_directive_to_domain(self, domain, name, obj, content=None, arguments=None, **options): + # type: (unicode, unicode, Any, unicode, Any, Any) -> None self.debug('[app] adding directive to domain: %r', (domain, name, obj, content, arguments, options)) if domain not in self.domains: @@ -735,12 +780,14 @@ class Sphinx(object): self._directive_helper(obj, content, arguments, **options) def add_role_to_domain(self, domain, name, role): + # type: (unicode, unicode, Any) -> None self.debug('[app] adding role to domain: %r', (domain, name, role)) if domain not in self.domains: raise ExtensionError('domain %s not yet registered' % domain) self.domains[domain].roles[name] = role def add_index_to_domain(self, domain, index): + # type: (unicode, unicode) -> None self.debug('[app] adding index to domain: %r', (domain, index)) if domain not in self.domains: raise ExtensionError('domain %s not yet registered' % domain) @@ -749,15 +796,16 @@ class Sphinx(object): def add_object_type(self, directivename, rolename, indextemplate='', parse_node=None, ref_nodeclass=None, objname='', doc_field_types=[]): + # type: (unicode, unicode, unicode, Callable, nodes.Node, unicode, List) -> None self.debug('[app] adding object type: %r', (directivename, rolename, indextemplate, parse_node, ref_nodeclass, objname, doc_field_types)) StandardDomain.object_types[directivename] = \ ObjType(objname or directivename, rolename) # create a subclass of GenericObject as the new directive - new_directive = type(directivename, (GenericObject, object), + new_directive = type(directivename, (GenericObject, object), # type: ignore {'indextemplate': indextemplate, - 'parse_node': staticmethod(parse_node), + 'parse_node': staticmethod(parse_node), # type: ignore 'doc_field_types': doc_field_types}) StandardDomain.directives[directivename] = new_directive # XXX support more options? @@ -768,23 +816,26 @@ class Sphinx(object): def add_crossref_type(self, directivename, rolename, indextemplate='', ref_nodeclass=None, objname=''): + # type: (unicode, unicode, unicode, nodes.Node, unicode) -> None self.debug('[app] adding crossref type: %r', (directivename, rolename, indextemplate, ref_nodeclass, objname)) StandardDomain.object_types[directivename] = \ ObjType(objname or directivename, rolename) # create a subclass of Target as the new directive - new_directive = type(directivename, (Target, object), + new_directive = type(directivename, (Target, object), # type: ignore {'indextemplate': indextemplate}) StandardDomain.directives[directivename] = new_directive # XXX support more options? StandardDomain.roles[rolename] = XRefRole(innernodeclass=ref_nodeclass) def add_transform(self, transform): + # type: (Transform) -> None self.debug('[app] adding transform: %r', transform) SphinxStandaloneReader.transforms.append(transform) def add_javascript(self, filename): + # type: (unicode) -> None self.debug('[app] adding javascript: %r', filename) from sphinx.builders.html import StandaloneHTMLBuilder if '://' in filename: @@ -794,6 +845,7 @@ class Sphinx(object): posixpath.join('_static', filename)) def add_stylesheet(self, filename): + # type: (unicode) -> None self.debug('[app] adding stylesheet: %r', filename) from sphinx.builders.html import StandaloneHTMLBuilder if '://' in filename: @@ -803,10 +855,12 @@ class Sphinx(object): posixpath.join('_static', filename)) def add_latex_package(self, packagename, options=None): + # type: (unicode, unicode) -> None self.debug('[app] adding latex package: %r', packagename) self.builder.usepackages.append((packagename, options)) def add_lexer(self, alias, lexer): + # type: (unicode, Any) -> None self.debug('[app] adding lexer: %r', (alias, lexer)) from sphinx.highlighting import lexers if lexers is None: @@ -814,23 +868,27 @@ class Sphinx(object): lexers[alias] = lexer def add_autodocumenter(self, cls): + # type: (Any) -> None self.debug('[app] adding autodocumenter: %r', cls) from sphinx.ext import autodoc autodoc.add_documenter(cls) self.add_directive('auto' + cls.objtype, autodoc.AutoDirective) def add_autodoc_attrgetter(self, type, getter): + # type: (Any, Callable) -> None self.debug('[app] adding autodoc attrgetter: %r', (type, getter)) from sphinx.ext import autodoc autodoc.AutoDirective._special_attrgetters[type] = getter def add_search_language(self, cls): + # type: (Any) -> None self.debug('[app] adding search language: %r', cls) from sphinx.search import languages, SearchLanguage assert issubclass(cls, SearchLanguage) languages[cls.lang] = cls def add_source_parser(self, suffix, parser): + # type: (unicode, Parser) -> None self.debug('[app] adding search source_parser: %r, %r', suffix, parser) if suffix in self._additional_source_parsers: self.warn('while setting up extension %s: source_parser for %r is ' @@ -847,6 +905,7 @@ class TemplateBridge(object): """ def init(self, builder, theme=None, dirs=None): + # type: (Builder, unicode, List[unicode]) -> None """Called by the builder to initialize the template system. *builder* is the builder object; you'll probably want to look at the @@ -858,6 +917,7 @@ class TemplateBridge(object): raise NotImplementedError('must be implemented in subclasses') def newest_template_mtime(self): + # type: () -> float """Called by the builder to determine if output files are outdated because of template changes. Return the mtime of the newest template file that was changed. The default implementation returns ``0``. @@ -865,12 +925,14 @@ class TemplateBridge(object): return 0 def render(self, template, context): + # type: (unicode, Dict) -> None """Called by the builder to render a template given as a filename with a specified context (a Python dictionary). """ raise NotImplementedError('must be implemented in subclasses') def render_string(self, template, context): + # type: (unicode, Dict) -> unicode """Called by the builder to render a template given as a string with a specified context (a Python dictionary). """ From 2bdaf5c8a0b0ee07bea0724b1ef38420cf219111 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Mon, 7 Nov 2016 14:05:55 +0900 Subject: [PATCH 224/297] Add type-check annotations to sphinx.environment --- sphinx/environment/__init__.py | 194 ++++++++++++++------ sphinx/environment/managers/__init__.py | 15 +- sphinx/environment/managers/indexentries.py | 19 +- sphinx/environment/managers/toctree.py | 29 ++- 4 files changed, 193 insertions(+), 64 deletions(-) diff --git a/sphinx/environment/__init__.py b/sphinx/environment/__init__.py index d750b0284..6dc39e945 100644 --- a/sphinx/environment/__init__.py +++ b/sphinx/environment/__init__.py @@ -21,6 +21,7 @@ from glob import glob from six import iteritems, itervalues, class_types, next from six.moves import cPickle as pickle + from docutils import nodes from docutils.io import NullOutput from docutils.core import Publisher @@ -38,7 +39,7 @@ from sphinx.util.osutil import SEP, getcwd, fs_encoding, ensuredir from sphinx.util.images import guess_mimetype from sphinx.util.i18n import find_catalog_files, get_image_filename_for_language, \ search_image_for_language -from sphinx.util.console import bold, purple +from sphinx.util.console import bold, purple # type: ignore from sphinx.util.docutils import sphinx_domains from sphinx.util.matching import compile_matchers from sphinx.util.parallel import ParallelTasks, parallel_available, make_chunks @@ -49,6 +50,14 @@ from sphinx.transforms import SphinxContentsFilter from sphinx.environment.managers.indexentries import IndexEntries from sphinx.environment.managers.toctree import Toctree +if False: + # For type annotation + from typing import Any, Callable, Iterator, Pattern, Tuple, Type, Union # NOQA + from sphinx.application import Sphinx # NOQA + from sphinx.builders import Builder # NOQA + from sphinx.config import Config # NOQA + from sphinx.domains import Domain # NOQA + from sphinx.environment.managers import EnvironmentManager # NOQA default_settings = { 'embed_stylesheet': False, @@ -75,7 +84,7 @@ versioning_conditions = { 'none': False, 'text': is_translatable, 'commentable': is_commentable, -} +} # type: Dict[unicode, Union[bool, Callable]] class NoUri(Exception): @@ -90,10 +99,13 @@ class BuildEnvironment(object): transformations to resolve links to them. """ + domains = None # type: Dict[unicode, Domain] + # --------- ENVIRONMENT PERSISTENCE ---------------------------------------- @staticmethod def frompickle(srcdir, config, filename): + # type: (unicode, Config, unicode) -> BuildEnvironment with open(filename, 'rb') as picklefile: env = pickle.load(picklefile) if env.version != ENV_VERSION: @@ -104,6 +116,7 @@ class BuildEnvironment(object): return env def topickle(self, filename): + # type: (unicode) -> None # remove unpicklable attributes warnfunc = self._warnfunc self.set_warnfunc(None) @@ -130,16 +143,17 @@ class BuildEnvironment(object): # --------- ENVIRONMENT INITIALIZATION ------------------------------------- def __init__(self, srcdir, doctreedir, config): + # type: (unicode, unicode, Config) -> None self.doctreedir = doctreedir - self.srcdir = srcdir - self.config = config + self.srcdir = srcdir # type: unicode + self.config = config # type: Config # the method of doctree versioning; see set_versioning_method - self.versioning_condition = None - self.versioning_compare = None + self.versioning_condition = None # type: Union[bool, Callable] + self.versioning_compare = None # type: bool # the application object; only set while update() runs - self.app = None + self.app = None # type: Sphinx # all the registered domains, set by the application self.domains = {} @@ -149,7 +163,7 @@ class BuildEnvironment(object): self.settings['env'] = self # the function to write warning messages with - self._warnfunc = None + self._warnfunc = None # type: Callable # this is to invalidate old pickles self.version = ENV_VERSION @@ -157,43 +171,63 @@ class BuildEnvironment(object): # All "docnames" here are /-separated and relative and exclude # the source suffix. - self.found_docs = set() # contains all existing docnames - self.all_docs = {} # docname -> mtime at the time of reading + self.found_docs = set() # type: Set[unicode] + # contains all existing docnames + self.all_docs = {} # type: Dict[unicode, float] + # docname -> mtime at the time of reading # contains all read docnames - self.dependencies = {} # docname -> set of dependent file + self.dependencies = {} # type: Dict[unicode, Set[unicode]] + # docname -> set of dependent file # names, relative to documentation root - self.included = set() # docnames included from other documents - self.reread_always = set() # docnames to re-read unconditionally on + self.included = set() # type: Set[unicode] + # docnames included from other documents + self.reread_always = set() # type: Set[unicode] + # docnames to re-read unconditionally on # next build # File metadata - self.metadata = {} # docname -> dict of metadata items + self.metadata = {} # type: Dict[unicode, Dict[unicode, Any]] + # docname -> dict of metadata items # TOC inventory - self.titles = {} # docname -> title node - self.longtitles = {} # docname -> title node; only different if + self.titles = {} # type: Dict[unicode, nodes.Node] + # docname -> title node + self.longtitles = {} # type: Dict[unicode, nodes.Node] + # docname -> title node; only different if # set differently with title directive - self.tocs = {} # docname -> table of contents nodetree - self.toc_num_entries = {} # docname -> number of real entries + self.tocs = {} # type: Dict[unicode, nodes.Node] + # docname -> table of contents nodetree + self.toc_num_entries = {} # type: Dict[unicode, int] + # docname -> number of real entries + # used to determine when to show the TOC # in a sidebar (don't show if it's only one item) - self.toc_secnumbers = {} # docname -> dict of sectionid -> number - self.toc_fignumbers = {} # docname -> dict of figtype -> + self.toc_secnumbers = {} # type: Dict[unicode, Dict[unicode, Tuple[int, ...]]] + # docname -> dict of sectionid -> number + self.toc_fignumbers = {} # type: Dict[unicode, Dict[unicode, Dict[unicode, Tuple[int, ...]]]] # NOQA + # docname -> dict of figtype -> # dict of figureid -> number - self.toctree_includes = {} # docname -> list of toctree includefiles - self.files_to_rebuild = {} # docname -> set of files + self.toctree_includes = {} # type: Dict[unicode, List[unicode]] + # docname -> list of toctree includefiles + self.files_to_rebuild = {} # type: Dict[unicode, Set[unicode]] + # docname -> set of files # (containing its TOCs) to rebuild too - self.glob_toctrees = set() # docnames that have :glob: toctrees - self.numbered_toctrees = set() # docnames that have :numbered: toctrees + self.glob_toctrees = set() # type: Set[unicode] + # docnames that have :glob: toctrees + self.numbered_toctrees = set() # type: Set[unicode] + # docnames that have :numbered: toctrees # domain-specific inventories, here to be pickled - self.domaindata = {} # domainname -> domain-specific dict + self.domaindata = {} # type: Dict[unicode, Dict] + # domainname -> domain-specific dict # Other inventories - self.indexentries = {} # docname -> list of - # (type, string, target, aliasname) - self.versionchanges = {} # version -> list of (type, docname, + self.indexentries = {} # type: Dict[unicode, List[Tuple[unicode, unicode, unicode, unicode, unicode]]] # NOQA + # docname -> list of + # (type, unicode, target, aliasname) + self.versionchanges = {} # type: Dict[unicode, List[Tuple[unicode, unicode, int, unicode, unicode, unicode]]] # NOQA + # version -> list of (type, docname, # lineno, module, descname, content) # these map absolute path -> (docnames, unique filename) @@ -201,27 +235,31 @@ class BuildEnvironment(object): self.dlfiles = FilenameUniqDict() # temporary data storage while reading a document - self.temp_data = {} + self.temp_data = {} # type: Dict[unicode, Any] # context for cross-references (e.g. current module or class) # this is similar to temp_data, but will for example be copied to # attributes of "any" cross references - self.ref_context = {} + self.ref_context = {} # type: Dict[unicode, Any] - self.managers = {} + self.managers = {} # type: Dict[unicode, EnvironmentManager] self.init_managers() def init_managers(self): + # type: () -> None managers = {} - for manager_class in [IndexEntries, Toctree]: + manager_class = None # type: Type[EnvironmentManager] + for manager_class in [IndexEntries, Toctree]: # type: ignore managers[manager_class.name] = manager_class(self) self.attach_managers(managers) def attach_managers(self, managers): + # type: (Dict[unicode, EnvironmentManager]) -> None for name, manager in iteritems(managers): self.managers[name] = manager manager.attach(self) def detach_managers(self): + # type: () -> Dict[unicode, EnvironmentManager] managers = self.managers self.managers = {} for _, manager in iteritems(managers): @@ -229,10 +267,12 @@ class BuildEnvironment(object): return managers def set_warnfunc(self, func): + # type: (Callable) -> None self._warnfunc = func self.settings['warning_stream'] = WarningStream(func) def set_versioning_method(self, method, compare): + # type: (unicode, bool) -> None """This sets the doctree versioning method for this environment. Versioning methods are a builder property; only builders with the same @@ -251,6 +291,7 @@ class BuildEnvironment(object): self.versioning_compare = compare def warn(self, docname, msg, lineno=None, **kwargs): + # type: (unicode, unicode, int, Any) -> None """Emit a warning. This differs from using ``app.warn()`` in that the warning may not @@ -261,10 +302,12 @@ class BuildEnvironment(object): self._warnfunc(msg, (docname, lineno), **kwargs) def warn_node(self, msg, node, **kwargs): + # type: (unicode, nodes.Node, Any) -> None """Like :meth:`warn`, but with source information taken from *node*.""" self._warnfunc(msg, '%s:%s' % get_source_line(node), **kwargs) def clear_doc(self, docname): + # type: (unicode) -> None """Remove all traces of a source file in the inventory.""" if docname in self.all_docs: self.all_docs.pop(docname, None) @@ -287,12 +330,13 @@ class BuildEnvironment(object): domain.clear_doc(docname) def merge_info_from(self, docnames, other, app): + # type: (List[unicode], BuildEnvironment, Sphinx) -> None """Merge global information gathered about *docnames* while reading them from the *other* environment. This possibly comes from a parallel build process. """ - docnames = set(docnames) + docnames = set(docnames) # type: ignore for docname in docnames: self.all_docs[docname] = other.all_docs[docname] if docname in other.reread_always: @@ -317,6 +361,7 @@ class BuildEnvironment(object): app.emit('env-merge-info', self, docnames, other) def path2doc(self, filename): + # type: (unicode) -> unicode """Return the docname for the filename if the file is document. *filename* should be absolute or relative to the source directory. @@ -324,13 +369,14 @@ class BuildEnvironment(object): if filename.startswith(self.srcdir): filename = filename[len(self.srcdir) + 1:] for suffix in self.config.source_suffix: - if fnmatch.fnmatch(filename, '*' + suffix): - return filename[:-len(suffix)] + if fnmatch.fnmatch(filename, '*' + suffix): # type: ignore + return filename[:-len(suffix)] # type: ignore else: # the file does not have docname return None def doc2path(self, docname, base=True, suffix=None): + # type: (unicode, Union[bool, unicode], unicode) -> unicode """Return the filename for the document name. If *base* is True, return absolute path under self.srcdir. @@ -340,22 +386,24 @@ class BuildEnvironment(object): """ docname = docname.replace(SEP, path.sep) if suffix is None: - for candidate_suffix in self.config.source_suffix: + candidate_suffix = None # type: unicode + for candidate_suffix in self.config.source_suffix: # type: ignore if path.isfile(path.join(self.srcdir, docname) + candidate_suffix): suffix = candidate_suffix break else: # document does not exist - suffix = self.config.source_suffix[0] + suffix = self.config.source_suffix[0] # type: ignore if base is True: return path.join(self.srcdir, docname) + suffix elif base is None: return docname + suffix else: - return path.join(base, docname) + suffix + return path.join(base, docname) + suffix # type: ignore def relfn2path(self, filename, docname=None): + # type: (unicode, unicode) -> Tuple[unicode, unicode] """Return paths to a file referenced from a document, relative to documentation root and absolute. @@ -380,6 +428,7 @@ class BuildEnvironment(object): return rel_fn, path.abspath(path.join(self.srcdir, enc_rel_fn)) def find_files(self, config): + # type: (Config) -> None """Find all source files in the source dir and put them in self.found_docs. """ @@ -390,7 +439,7 @@ class BuildEnvironment(object): ['**/_sources', '.#*', '**/.#*', '*.lproj/**'] ) self.found_docs = set() - for docname in get_matching_docs(self.srcdir, config.source_suffix, + for docname in get_matching_docs(self.srcdir, config.source_suffix, # type: ignore exclude_matchers=matchers): if os.access(self.doc2path(docname), os.R_OK): self.found_docs.add(docname) @@ -409,12 +458,13 @@ class BuildEnvironment(object): self.dependencies.setdefault(docname, set()).add(filename) def get_outdated_files(self, config_changed): + # type: (bool) -> Tuple[Set[unicode], Set[unicode], Set[unicode]] """Return (added, changed, removed) sets.""" # clear all files no longer present removed = set(self.all_docs) - self.found_docs - added = set() - changed = set() + added = set() # type: Set[unicode] + changed = set() # type: Set[unicode] if config_changed: # config values affect e.g. substitutions @@ -459,6 +509,7 @@ class BuildEnvironment(object): return added, changed, removed def update(self, config, srcdir, doctreedir, app): + # type: (Config, unicode, unicode, Sphinx) -> List[unicode] """(Re-)read all files new or changed since last update. Store all environment docnames in the canonical format (ie using SEP as @@ -561,6 +612,7 @@ class BuildEnvironment(object): return sorted(docnames) def _read_serial(self, docnames, app): + # type: (List[unicode], Sphinx) -> None for docname in app.status_iterator(docnames, 'reading sources... ', purple, len(docnames)): # remove all inventory entries for that file @@ -569,14 +621,16 @@ class BuildEnvironment(object): self.read_doc(docname, app) def _read_parallel(self, docnames, app, nproc): + # type: (List[unicode], Sphinx, int) -> None # clear all outdated docs at once for docname in docnames: app.emit('env-purge-doc', self, docname) self.clear_doc(docname) def read_process(docs): + # type: (List[unicode]) -> BuildEnvironment self.app = app - self.warnings = [] + self.warnings = [] # type: List[Tuple] self.set_warnfunc(lambda *args, **kwargs: self.warnings.append((args, kwargs))) for docname in docs: self.read_doc(docname, app) @@ -589,13 +643,14 @@ class BuildEnvironment(object): return self def merge(docs, otherenv): + # type: (List[unicode], BuildEnvironment) -> None warnings.extend(otherenv.warnings) self.merge_info_from(docs, otherenv, app) tasks = ParallelTasks(nproc) chunks = make_chunks(docnames, nproc) - warnings = [] + warnings = [] # type: List[Tuple] for chunk in app.status_iterator( chunks, 'reading sources... ', purple, len(chunks)): tasks.add_task(read_process, chunk, merge) @@ -608,8 +663,9 @@ class BuildEnvironment(object): self._warnfunc(*warning, **kwargs) def check_dependents(self, already): - to_rewrite = (self.toctree.assign_section_numbers() + - self.toctree.assign_figure_numbers()) + # type: (Set[unicode]) -> Iterator[unicode] + to_rewrite = (self.toctree.assign_section_numbers() + # type: ignore + self.toctree.assign_figure_numbers()) # type: ignore for docname in set(to_rewrite): if docname not in already: yield docname @@ -617,6 +673,7 @@ class BuildEnvironment(object): # --------- SINGLE FILE READING -------------------------------------------- def warn_and_replace(self, error): + # type: (Any) -> Tuple """Custom decoding error handler that warns and replaces.""" linestart = error.object.rfind(b'\n', 0, error.start) lineend = error.object.find(b'\n', error.start) @@ -631,6 +688,7 @@ class BuildEnvironment(object): return (u'?', error.end) def read_doc(self, docname, app=None): + # type: (unicode, Sphinx) -> None """Parse a file and add/update inventory entries for the doctree.""" self.temp_data['docname'] = docname @@ -659,7 +717,7 @@ class BuildEnvironment(object): self.warn(docname, 'default role %s not found' % self.config.default_role) - codecs.register_error('sphinx', self.warn_and_replace) + codecs.register_error('sphinx', self.warn_and_replace) # type: ignore # publish manually reader = SphinxStandaloneReader(self.app, parsers=self.config.source_parsers) @@ -740,11 +798,13 @@ class BuildEnvironment(object): @property def docname(self): + # type: () -> unicode """Returns the docname of the document currently being parsed.""" return self.temp_data['docname'] @property def currmodule(self): + # type () -> None """Backwards compatible alias. Will be removed.""" self.warn(self.docname, 'env.currmodule is being referenced by an ' 'extension; this API will be removed in the future') @@ -752,12 +812,14 @@ class BuildEnvironment(object): @property def currclass(self): + # type: () -> None """Backwards compatible alias. Will be removed.""" self.warn(self.docname, 'env.currclass is being referenced by an ' 'extension; this API will be removed in the future') return self.ref_context.get('py:class') def new_serialno(self, category=''): + # type: (unicode) -> int """Return a serial number, e.g. for index entry targets. The number is guaranteed to be unique in the current document. @@ -768,6 +830,7 @@ class BuildEnvironment(object): return cur def note_dependency(self, filename): + # type: (unicode) -> None """Add *filename* as a dependency of the current document. This means that the document will be rebuilt if this file changes. @@ -777,6 +840,7 @@ class BuildEnvironment(object): self.dependencies.setdefault(self.docname, set()).add(filename) def note_included(self, filename): + # type: (unicode) -> None """Add *filename* as a included from other document. This means the document is not orphaned. @@ -786,12 +850,14 @@ class BuildEnvironment(object): self.included.add(self.path2doc(filename)) def note_reread(self): + # type: () -> None """Add the current document to the list of documents that will automatically be re-read at the next build. """ self.reread_always.add(self.docname) def note_versionchange(self, type, version, node, lineno): + # type: (unicode, unicode, nodes.Node, int) -> None self.versionchanges.setdefault(version, []).append( (type, self.temp_data['docname'], lineno, self.ref_context.get('py:module'), @@ -800,6 +866,7 @@ class BuildEnvironment(object): # post-processing of read doctrees def process_dependencies(self, docname, doctree): + # type: (unicode, nodes.Node) -> None """Process docutils-generated dependency info.""" cwd = getcwd() frompath = path.join(path.normpath(self.srcdir), 'dummy') @@ -816,6 +883,7 @@ class BuildEnvironment(object): self.dependencies.setdefault(docname, set()).add(relpath) def process_downloads(self, docname, doctree): + # type: (unicode, nodes.Node) -> None """Process downloadable file paths. """ for node in doctree.traverse(addnodes.download_reference): targetname = node['reftarget'] @@ -829,9 +897,10 @@ class BuildEnvironment(object): node['filename'] = uniquename def process_images(self, docname, doctree): + # type: (unicode, nodes.Node) -> None """Process and rewrite image URIs.""" def collect_candidates(imgpath, candidates): - globbed = {} + globbed = {} # type: Dict[unicode, List[unicode]] for filename in glob(imgpath): new_imgpath = relative_path(path.join(self.srcdir, 'dummy'), filename) @@ -894,11 +963,13 @@ class BuildEnvironment(object): self.images.add_file(docname, imgpath) def process_metadata(self, docname, doctree): + # type: (unicode, nodes.Node) -> None """Process the docinfo part of the doctree as metadata. Keep processing minimal -- just return what docutils says. """ - self.metadata[docname] = md = {} + self.metadata[docname] = {} + md = self.metadata[docname] try: docinfo = doctree[0] except IndexError: @@ -927,6 +998,7 @@ class BuildEnvironment(object): del doctree[0] def create_title_from(self, docname, document): + # type: (unicode, nodes.Node) -> None """Add a title node to the document (just copy the first section title), and store that title in the environment. """ @@ -950,20 +1022,24 @@ class BuildEnvironment(object): self.longtitles[docname] = longtitlenode def note_toctree(self, docname, toctreenode): + # type: (unicode, addnodes.toctree) -> None """Note a TOC tree directive in a document and gather information about file relations from it. """ - self.toctree.note_toctree(docname, toctreenode) + self.toctree.note_toctree(docname, toctreenode) # type: ignore def get_toc_for(self, docname, builder): + # type: (unicode, Builder) -> addnodes.toctree """Return a TOC nodetree -- for use on the same page only!""" - return self.toctree.get_toc_for(docname, builder) + return self.toctree.get_toc_for(docname, builder) # type: ignore def get_toctree_for(self, docname, builder, collapse, **kwds): + # type: (unicode, Builder, bool, Any) -> addnodes.toctree """Return the global TOC nodetree.""" - return self.toctree.get_toctree_for(docname, builder, collapse, **kwds) + return self.toctree.get_toctree_for(docname, builder, collapse, **kwds) # type: ignore def get_domain(self, domainname): + # type: (unicode) -> Domain """Return the domain instance with the specified name. Raises an ExtensionError if the domain is not registered. @@ -976,6 +1052,7 @@ class BuildEnvironment(object): # --------- RESOLVING REFERENCES AND TOCTREES ------------------------------ def get_doctree(self, docname): + # type: (unicode) -> nodes.Node """Read the doctree for a file from the pickle and return it.""" doctree_filename = self.doc2path(docname, self.doctreedir, '.doctree') with open(doctree_filename, 'rb') as f: @@ -987,6 +1064,7 @@ class BuildEnvironment(object): def get_and_resolve_doctree(self, docname, builder, doctree=None, prune_toctrees=True, includehidden=False): + # type: (unicode, Builder, nodes.Node, bool, bool) -> nodes.Node """Read the doctree from the pickle, resolve cross-references and toctrees and return it. """ @@ -1010,6 +1088,7 @@ class BuildEnvironment(object): def resolve_toctree(self, docname, builder, toctree, prune=True, maxdepth=0, titles_only=False, collapse=False, includehidden=False): + # type: (unicode, Builder, addnodes.toctree, bool, int, bool, bool, bool) -> nodes.Node """Resolve a *toctree* node into individual bullet lists with titles as items, returning None (if no containing titles are found) or a new node. @@ -1021,11 +1100,12 @@ class BuildEnvironment(object): If *collapse* is True, all branches not containing docname will be collapsed. """ - return self.toctree.resolve_toctree(docname, builder, toctree, prune, + return self.toctree.resolve_toctree(docname, builder, toctree, prune, # type: ignore maxdepth, titles_only, collapse, includehidden) def resolve_references(self, doctree, fromdocname, builder): + # type: (nodes.Node, unicode, Builder) -> None for node in doctree.traverse(addnodes.pending_xref): contnode = node[0].deepcopy() newnode = None @@ -1068,6 +1148,7 @@ class BuildEnvironment(object): builder.app.emit('doctree-resolved', doctree, fromdocname) def _warn_missing_reference(self, refdoc, typ, target, node, domain): + # type: (unicode, unicode, unicode, nodes.Node, Domain) -> None warn = node.get('refwarn') if self.config.nitpicky: warn = True @@ -1093,6 +1174,7 @@ class BuildEnvironment(object): self.warn_node(msg % {'target': target}, node, type='ref', subtype=typ) def _resolve_doc_reference(self, builder, refdoc, node, contnode): + # type: (Builder, unicode, nodes.Node, nodes.Node) -> nodes.Node # directly reference to document by source name; # can be absolute or relative docname = docname_join(refdoc, node['reftarget']) @@ -1110,9 +1192,10 @@ class BuildEnvironment(object): return newnode def _resolve_any_reference(self, builder, refdoc, node, contnode): + # type: (Builder, unicode, nodes.Node, nodes.Node) -> nodes.Node """Resolve reference generated by the "any" role.""" target = node['reftarget'] - results = [] + results = [] # type: List[Tuple[unicode, nodes.Node]] # first, try resolving as :doc: doc_ref = self._resolve_doc_reference(builder, refdoc, node, contnode) if doc_ref: @@ -1153,9 +1236,11 @@ class BuildEnvironment(object): def create_index(self, builder, group_entries=True, _fixre=re.compile(r'(.*) ([(][^()]*[)])')): - return self.indices.create_index(builder, group_entries=group_entries, _fixre=_fixre) + # type: (Builder, bool, Pattern) -> Any + return self.indices.create_index(builder, group_entries=group_entries, _fixre=_fixre) # type: ignore # NOQA def collect_relations(self): + # type: () -> Dict[unicode, List[unicode]] traversed = set() def traverse_toctree(parent, docname): @@ -1188,6 +1273,7 @@ class BuildEnvironment(object): return relations def check_consistency(self): + # type: () -> None """Do consistency checks.""" for docname in sorted(self.all_docs): if docname not in self.files_to_rebuild: diff --git a/sphinx/environment/managers/__init__.py b/sphinx/environment/managers/__init__.py index 963ec54b8..0822f1091 100644 --- a/sphinx/environment/managers/__init__.py +++ b/sphinx/environment/managers/__init__.py @@ -9,29 +9,42 @@ :license: BSD, see LICENSE for details. """ +if False: + # For type annotation + from typing import Any # NOQA + from docutils import nodes # NOQA + from sphinx.environment import BuildEnvironment # NOQA + class EnvironmentManager(object): """Base class for sphinx.environment managers.""" - name = None + name = None # type: unicode + env = None # type: BuildEnvironment def __init__(self, env): + # type: (BuildEnvironment) -> None self.env = env def attach(self, env): + # type: (BuildEnvironment) -> None self.env = env if self.name: setattr(env, self.name, self) def detach(self, env): + # type: (BuildEnvironment) -> None self.env = None if self.name: delattr(env, self.name) def clear_doc(self, docname): + # type: (unicode) -> None raise NotImplementedError def merge_other(self, docnames, other): + # type: (List[unicode], Any) -> None raise NotImplementedError def process_doc(self, docname, doctree): + # type: (unicode, nodes.Node) -> None raise NotImplementedError diff --git a/sphinx/environment/managers/indexentries.py b/sphinx/environment/managers/indexentries.py index c35a161b4..8cf20f480 100644 --- a/sphinx/environment/managers/indexentries.py +++ b/sphinx/environment/managers/indexentries.py @@ -15,28 +15,38 @@ import string from itertools import groupby from six import text_type - from sphinx import addnodes from sphinx.util import iteritems, split_index_msg, split_into from sphinx.locale import _ from sphinx.environment.managers import EnvironmentManager +if False: + # For type annotation + from typing import Pattern, Tuple # NOQA + from docutils import nodes # NOQA + from sphinx.builders import Builder # NOQA + from sphinx.environment import BuildEnvironment # NOQA + class IndexEntries(EnvironmentManager): name = 'indices' def __init__(self, env): + # type: (BuildEnvironment) -> None super(IndexEntries, self).__init__(env) self.data = env.indexentries def clear_doc(self, docname): + # type: (unicode) -> None self.data.pop(docname, None) def merge_other(self, docnames, other): + # type: (List[unicode], BuildEnvironment) -> None for docname in docnames: self.data[docname] = other.indexentries[docname] def process_doc(self, docname, doctree): + # type: (unicode, nodes.Node) -> None entries = self.data[docname] = [] for node in doctree.traverse(addnodes.index): try: @@ -55,10 +65,11 @@ class IndexEntries(EnvironmentManager): def create_index(self, builder, group_entries=True, _fixre=re.compile(r'(.*) ([(][^()]*[)])')): + # type: (Builder, bool, Pattern) -> List[Tuple[unicode, List[Tuple[unicode, List[unicode]]]]] # NOQA """Create the real index from the collected index entries.""" from sphinx.environment import NoUri - new = {} + new = {} # type: Dict[unicode, List] def add_entry(word, subword, main, link=True, dic=new, key=None): # Force the word to be unicode if it's a ASCII bytestring. @@ -131,8 +142,8 @@ class IndexEntries(EnvironmentManager): # func() # (in module foo) # (in module bar) - oldkey = '' - oldsubitems = None + oldkey = '' # type: unicode + oldsubitems = None # type: Dict[unicode, List] i = 0 while i < len(newlist): key, (targets, subitems, _key) = newlist[i] diff --git a/sphinx/environment/managers/toctree.py b/sphinx/environment/managers/toctree.py index d4848a72c..195349d3e 100644 --- a/sphinx/environment/managers/toctree.py +++ b/sphinx/environment/managers/toctree.py @@ -10,6 +10,7 @@ """ from six import iteritems + from docutils import nodes from sphinx import addnodes @@ -18,11 +19,18 @@ from sphinx.util.nodes import clean_astext, process_only_nodes from sphinx.transforms import SphinxContentsFilter from sphinx.environment.managers import EnvironmentManager +if False: + # For type annotation + from typing import Any, Tuple # NOQA + from sphinx.builders import Builder # NOQA + from sphinx.environment import BuildEnvironment # NOQA + class Toctree(EnvironmentManager): name = 'toctree' def __init__(self, env): + # type: (BuildEnvironment) -> None super(Toctree, self).__init__(env) self.tocs = env.tocs @@ -35,6 +43,7 @@ class Toctree(EnvironmentManager): self.numbered_toctrees = env.numbered_toctrees def clear_doc(self, docname): + # type: (unicode) -> None self.tocs.pop(docname, None) self.toc_secnumbers.pop(docname, None) self.toc_fignumbers.pop(docname, None) @@ -49,6 +58,7 @@ class Toctree(EnvironmentManager): del self.files_to_rebuild[subfn] def merge_other(self, docnames, other): + # type: (List[unicode], BuildEnvironment) -> None for docname in docnames: self.tocs[docname] = other.tocs[docname] self.toc_num_entries[docname] = other.toc_num_entries[docname] @@ -63,6 +73,7 @@ class Toctree(EnvironmentManager): self.files_to_rebuild.setdefault(subfn, set()).update(fnset & docnames) def process_doc(self, docname, doctree): + # type: (unicode, nodes.Node) -> None """Build a TOC from the doctree and store it in the inventory.""" numentries = [0] # nonlocal again... @@ -132,6 +143,7 @@ class Toctree(EnvironmentManager): self.toc_num_entries[docname] = numentries[0] def note_toctree(self, docname, toctreenode): + # type: (unicode, addnodes.toctree) -> None """Note a TOC tree directive in a document and gather information about file relations from it. """ @@ -147,6 +159,7 @@ class Toctree(EnvironmentManager): self.toctree_includes.setdefault(docname, []).extend(includefiles) def get_toc_for(self, docname, builder): + # type: (unicode, Builder) -> None """Return a TOC nodetree -- for use on the same page only!""" tocdepth = self.env.metadata[docname].get('tocdepth', 0) try: @@ -162,6 +175,7 @@ class Toctree(EnvironmentManager): return toc def get_toctree_for(self, docname, builder, collapse, **kwds): + # type: (unicode, Builder, bool, Any) -> nodes.Node """Return the global TOC nodetree.""" doctree = self.env.get_doctree(self.env.config.master_doc) toctrees = [] @@ -184,6 +198,7 @@ class Toctree(EnvironmentManager): def resolve_toctree(self, docname, builder, toctree, prune=True, maxdepth=0, titles_only=False, collapse=False, includehidden=False): + # type: (unicode, Builder, addnodes.toctree, bool, int, bool, bool, bool) -> nodes.Node """Resolve a *toctree* node into individual bullet lists with titles as items, returning None (if no containing titles are found) or a new node. @@ -387,11 +402,12 @@ class Toctree(EnvironmentManager): return newnode def get_toctree_ancestors(self, docname): + # type: (unicode) -> List[unicode] parent = {} for p, children in iteritems(self.toctree_includes): for child in children: parent[child] = p - ancestors = [] + ancestors = [] # type: List[unicode] d = docname while d in parent and d not in ancestors: ancestors.append(d) @@ -399,6 +415,7 @@ class Toctree(EnvironmentManager): return ancestors def _toctree_prune(self, node, depth, maxdepth, collapse=False): + # type: (nodes.Node, int, int, bool) -> None """Utility: Cut a TOC at a specified depth.""" for subnode in node.children[:]: if isinstance(subnode, (addnodes.compact_paragraph, @@ -420,11 +437,12 @@ class Toctree(EnvironmentManager): self._toctree_prune(subnode, depth+1, maxdepth, collapse) def assign_section_numbers(self): + # type: () -> List[unicode] """Assign a section number to each heading under a numbered toctree.""" # a list of all docnames whose section numbers changed rewrite_needed = [] - assigned = set() + assigned = set() # type: Set[unicode] old_secnumbers = self.toc_secnumbers self.toc_secnumbers = self.env.toc_secnumbers = {} @@ -488,14 +506,15 @@ class Toctree(EnvironmentManager): return rewrite_needed def assign_figure_numbers(self): + # type: () -> List[unicode] """Assign a figure number to each figure under a numbered toctree.""" rewrite_needed = [] - assigned = set() + assigned = set() # type: Set[unicode] old_fignumbers = self.toc_fignumbers self.toc_fignumbers = self.env.toc_fignumbers = {} - fignum_counter = {} + fignum_counter = {} # type: Dict[unicode, Dict[Tuple[int], int]] def get_section_number(docname, section): anchorname = '#' + section['ids'][0] @@ -540,7 +559,7 @@ class Toctree(EnvironmentManager): continue - figtype = self.env.domains['std'].get_figtype(subnode) + figtype = self.env.domains['std'].get_figtype(subnode) # type: ignore if figtype and subnode['ids']: register_fignumber(docname, secnum, figtype, subnode) From 8a06a42c311c58dcab1116e06b3afbc2541f49f1 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Mon, 7 Nov 2016 23:58:40 +0900 Subject: [PATCH 225/297] Add type-check annotations to sphinx.domains --- sphinx/domains/__init__.py | 62 ++-- sphinx/domains/c.py | 35 ++- sphinx/domains/cpp.py | 546 ++++++++++++++++++++++++++++++----- sphinx/domains/javascript.py | 23 +- sphinx/domains/python.py | 72 ++++- sphinx/domains/rst.py | 23 +- sphinx/domains/std.py | 84 ++++-- 7 files changed, 710 insertions(+), 135 deletions(-) diff --git a/sphinx/domains/__init__.py b/sphinx/domains/__init__.py index da7e5d9ae..a90ee84aa 100644 --- a/sphinx/domains/__init__.py +++ b/sphinx/domains/__init__.py @@ -17,6 +17,13 @@ from six import iteritems from sphinx.errors import SphinxError from sphinx.locale import _ +if False: + # For type annotation + from typing import Any, Callable, Iterable, Tuple, Type, Union # NOQA + from docutils import nodes # NOQA + from sphinx.builders import Builder # NOQA + from sphinx.environment import BuildEnvironment # NOQA + class ObjType(object): """ @@ -38,9 +45,10 @@ class ObjType(object): } def __init__(self, lname, *roles, **attrs): - self.lname = lname - self.roles = roles - self.attrs = self.known_attrs.copy() + # type: (unicode, Any, Any) -> None + self.lname = lname # type: unicode + self.roles = roles # type: Tuple + self.attrs = self.known_attrs.copy() # type: Dict self.attrs.update(attrs) @@ -59,17 +67,19 @@ class Index(object): domains using :meth:`~sphinx.application.Sphinx.add_index_to_domain()`. """ - name = None - localname = None - shortname = None + name = None # type: unicode + localname = None # type: unicode + shortname = None # type: unicode def __init__(self, domain): + # type: (Domain) -> None if self.name is None or self.localname is None: raise SphinxError('Index subclass %s has no valid name or localname' % self.__class__.__name__) self.domain = domain def generate(self, docnames=None): + # type: (List[unicode]) -> Tuple[List[Tuple[unicode, List[List[Union[unicode, int]]]]], bool] # NOQA """Return entries for the index given by *name*. If *docnames* is given, restrict to entries referring to these docnames. @@ -128,23 +138,26 @@ class Domain(object): #: domain label: longer, more descriptive (used in messages) label = '' #: type (usually directive) name -> ObjType instance - object_types = {} + object_types = {} # type: Dict[unicode, Any] #: directive name -> directive class - directives = {} + directives = {} # type: Dict[unicode, Any] #: role name -> role callable - roles = {} + roles = {} # type: Dict[unicode, Callable] #: a list of Index subclasses - indices = [] + indices = [] # type: List[Type[Index]] #: role name -> a warning message if reference is missing - dangling_warnings = {} + dangling_warnings = {} # type: Dict[unicode, unicode] #: data value for a fresh environment - initial_data = {} + initial_data = {} # type: Dict + #: data value + data = None # type: Dict #: data version, bump this when the format of `self.data` changes data_version = 0 def __init__(self, env): - self.env = env + # type: (BuildEnvironment) -> None + self.env = env # type: BuildEnvironment if self.name not in env.domaindata: assert isinstance(self.initial_data, dict) new_data = copy.deepcopy(self.initial_data) @@ -154,18 +167,19 @@ class Domain(object): self.data = env.domaindata[self.name] if self.data['version'] != self.data_version: raise IOError('data of %r domain out of date' % self.label) - self._role_cache = {} - self._directive_cache = {} - self._role2type = {} - self._type2role = {} + self._role_cache = {} # type: Dict[unicode, Callable] + self._directive_cache = {} # type: Dict[unicode, Callable] + self._role2type = {} # type: Dict[unicode, List[unicode]] + self._type2role = {} # type: Dict[unicode, unicode] for name, obj in iteritems(self.object_types): for rolename in obj.roles: self._role2type.setdefault(rolename, []).append(name) self._type2role[name] = obj.roles[0] if obj.roles else '' - self.objtypes_for_role = self._role2type.get - self.role_for_objtype = self._type2role.get + self.objtypes_for_role = self._role2type.get # type: Callable[[unicode], List[unicode]] # NOQA + self.role_for_objtype = self._type2role.get # type: Callable[[unicode], unicode] def role(self, name): + # type: (unicode) -> Callable """Return a role adapter function that always gives the registered role its full name ('domain:name') as the first argument. """ @@ -183,6 +197,7 @@ class Domain(object): return role_adapter def directive(self, name): + # type: (unicode) -> Callable """Return a directive adapter class that always gives the registered directive its full name ('domain:name') as ``self.name``. """ @@ -193,7 +208,7 @@ class Domain(object): fullname = '%s:%s' % (self.name, name) BaseDirective = self.directives[name] - class DirectiveAdapter(BaseDirective): + class DirectiveAdapter(BaseDirective): # type: ignore def run(self): self.name = fullname return BaseDirective.run(self) @@ -203,10 +218,12 @@ class Domain(object): # methods that should be overwritten def clear_doc(self, docname): + # type: (unicode) -> None """Remove traces of a document in the domain-specific inventories.""" pass def merge_domaindata(self, docnames, otherdata): + # type: (List[unicode], Dict) -> None """Merge in data regarding *docnames* from a different domaindata inventory (coming from a subprocess in parallel builds). """ @@ -215,11 +232,13 @@ class Domain(object): self.__class__) def process_doc(self, env, docname, document): + # type: (BuildEnvironment, unicode, nodes.Node) -> None """Process a document after it is read by the environment.""" pass def resolve_xref(self, env, fromdocname, builder, typ, target, node, contnode): + # type: (BuildEnvironment, unicode, Builder, unicode, unicode, nodes.Node, nodes.Node) -> nodes.Node # NOQA """Resolve the pending_xref *node* with the given *typ* and *target*. This method should return a new node, to replace the xref node, @@ -236,6 +255,7 @@ class Domain(object): pass def resolve_any_xref(self, env, fromdocname, builder, target, node, contnode): + # type: (BuildEnvironment, unicode, Builder, unicode, nodes.Node, nodes.Node) -> List[Tuple[unicode, nodes.Node]] # NOQA """Resolve the pending_xref *node* with the given *target*. The reference comes from an "any" or similar role, which means that we @@ -252,6 +272,7 @@ class Domain(object): raise NotImplementedError def get_objects(self): + # type: () -> Iterable[Tuple[unicode, unicode, unicode, unicode, unicode, int]] """Return an iterable of "object descriptions", which are tuples with five items: @@ -271,6 +292,7 @@ class Domain(object): return [] def get_type_name(self, type, primary=False): + # type: (ObjType, bool) -> unicode """Return full name for given ObjType.""" if primary: return type.lname diff --git a/sphinx/domains/c.py b/sphinx/domains/c.py index 43e869dbc..cf4c23d5d 100644 --- a/sphinx/domains/c.py +++ b/sphinx/domains/c.py @@ -22,6 +22,13 @@ from sphinx.directives import ObjectDescription from sphinx.util.nodes import make_refnode from sphinx.util.docfields import Field, TypedField +if False: + # For type annotation + from typing import Any, Iterator, Tuple # NOQA + from sphinx.application import Sphinx # NOQA + from sphinx.builders import Builder # NOQA + from sphinx.environment import BuildEnvironment # NOQA + # RE to split at word boundaries wsplit_re = re.compile(r'(\W+)') @@ -74,8 +81,9 @@ class CObject(ObjectDescription): )) def _parse_type(self, node, ctype): + # type: (nodes.Node, unicode) -> None # add cross-ref nodes for all words - for part in [_f for _f in wsplit_re.split(ctype) if _f]: + for part in [_f for _f in wsplit_re.split(ctype) if _f]: # type: ignore tnode = nodes.Text(part, part) if part[0] in string.ascii_letters+'_' and \ part not in self.stopwords: @@ -88,11 +96,12 @@ class CObject(ObjectDescription): node += tnode def _parse_arglist(self, arglist): + # type: (unicode) -> Iterator[unicode] while True: - m = c_funcptr_arg_sig_re.match(arglist) + m = c_funcptr_arg_sig_re.match(arglist) # type: ignore if m: yield m.group() - arglist = c_funcptr_arg_sig_re.sub('', arglist) + arglist = c_funcptr_arg_sig_re.sub('', arglist) # type: ignore if ',' in arglist: _, arglist = arglist.split(',', 1) else: @@ -106,11 +115,12 @@ class CObject(ObjectDescription): break def handle_signature(self, sig, signode): + # type: (unicode, addnodes.desc_signature) -> unicode """Transform a C signature into RST nodes.""" # first try the function pointer signature regex, it's more specific - m = c_funcptr_sig_re.match(sig) + m = c_funcptr_sig_re.match(sig) # type: ignore if m is None: - m = c_sig_re.match(sig) + m = c_sig_re.match(sig) # type: ignore if m is None: raise ValueError('no match') rettype, name, arglist, const = m.groups() @@ -151,7 +161,7 @@ class CObject(ObjectDescription): arg = arg.strip() param = addnodes.desc_parameter('', '', noemph=True) try: - m = c_funcptr_arg_sig_re.match(arg) + m = c_funcptr_arg_sig_re.match(arg) # type: ignore if m: self._parse_type(param, m.group(1) + '(') param += nodes.emphasis(m.group(2), m.group(2)) @@ -173,6 +183,7 @@ class CObject(ObjectDescription): return fullname def get_index_text(self, name): + # type: (unicode) -> unicode if self.objtype == 'function': return _('%s (C function)') % name elif self.objtype == 'member': @@ -187,6 +198,7 @@ class CObject(ObjectDescription): return '' def add_target_and_index(self, name, sig, signode): + # type: (unicode, unicode, addnodes.desc_signature) -> None # for C API items we add a prefix since names are usually not qualified # by a module name and so easily clash with e.g. section titles targetname = 'c.' + name @@ -209,6 +221,7 @@ class CObject(ObjectDescription): targetname, '', None)) def before_content(self): + # type: () -> None self.typename_set = False if self.name == 'c:type': if self.names: @@ -216,12 +229,14 @@ class CObject(ObjectDescription): self.typename_set = True def after_content(self): + # type: () -> None if self.typename_set: self.env.ref_context.pop('c:type', None) class CXRefRole(XRefRole): def process_link(self, env, refnode, has_explicit_title, title, target): + # type: (BuildEnvironment, nodes.Node, bool, unicode, unicode) -> Tuple[unicode, unicode] # NOQA if not has_explicit_title: target = target.lstrip('~') # only has a meaning for the title # if the first character is a tilde, don't display the module/class @@ -262,14 +277,16 @@ class CDomain(Domain): } initial_data = { 'objects': {}, # fullname -> docname, objtype - } + } # type: Dict[unicode, Dict[unicode, Tuple[unicode, Any]]] def clear_doc(self, docname): + # type: (unicode) -> None for fullname, (fn, _l) in list(self.data['objects'].items()): if fn == docname: del self.data['objects'][fullname] def merge_domaindata(self, docnames, otherdata): + # type: (List[unicode], Dict) -> None # XXX check duplicates for fullname, (fn, objtype) in otherdata['objects'].items(): if fn in docnames: @@ -277,6 +294,7 @@ class CDomain(Domain): def resolve_xref(self, env, fromdocname, builder, typ, target, node, contnode): + # type: (BuildEnvironment, unicode, Builder, unicode, unicode, nodes.Node, nodes.Node) -> nodes.Node # NOQA # strip pointer asterisk target = target.rstrip(' *') # becase TypedField can generate xrefs @@ -290,6 +308,7 @@ class CDomain(Domain): def resolve_any_xref(self, env, fromdocname, builder, target, node, contnode): + # type: (BuildEnvironment, unicode, Builder, unicode, nodes.Node, nodes.Node) -> List[Tuple[unicode, nodes.Node]] # NOQA # strip pointer asterisk target = target.rstrip(' *') if target not in self.data['objects']: @@ -300,9 +319,11 @@ class CDomain(Domain): contnode, target))] def get_objects(self): + # type: () -> Iterator[Tuple[unicode, unicode, unicode, unicode, unicode, int]] for refname, (docname, type) in list(self.data['objects'].items()): yield (refname, refname, type, docname, 'c.' + refname, 1) def setup(app): + # type: (Sphinx) -> None app.add_domain(CDomain) diff --git a/sphinx/domains/cpp.py b/sphinx/domains/cpp.py index 6c12d6aca..5eeabcb11 100644 --- a/sphinx/domains/cpp.py +++ b/sphinx/domains/cpp.py @@ -13,6 +13,7 @@ import re from copy import deepcopy from six import iteritems, text_type + from docutils import nodes from sphinx import addnodes @@ -25,6 +26,14 @@ from sphinx.util.compat import Directive from sphinx.util.pycompat import UnicodeMixin from sphinx.util.docfields import Field, GroupedField +if False: + # For type annotation + from typing import Any, Iterator, Match, Pattern, Tuple, Union # NOQA + from sphinx.application import Sphinx # NOQA + from sphinx.builders import Builder # NOQA + from sphinx.config import Config # NOQA + from sphinx.environment import BuildEnvironment # NOQA + """ Important note on ids ---------------------------------------------------------------------------- @@ -317,7 +326,7 @@ _id_fundamental_v1 = { 'signed long': 'l', 'unsigned long': 'L', 'bool': 'b' -} +} # type: Dict[unicode, unicode] _id_shorthands_v1 = { 'std::string': 'ss', 'std::ostream': 'os', @@ -325,7 +334,7 @@ _id_shorthands_v1 = { 'std::iostream': 'ios', 'std::vector': 'v', 'std::map': 'm' -} +} # type: Dict[unicode, unicode] _id_operator_v1 = { 'new': 'new-operator', 'new[]': 'new-array-operator', @@ -374,7 +383,7 @@ _id_operator_v1 = { '->': 'pointer-operator', '()': 'call-operator', '[]': 'subscript-operator' -} +} # type: Dict[unicode, unicode] # ------------------------------------------------------------------------------ # Id v2 constants @@ -420,7 +429,7 @@ _id_fundamental_v2 = { 'auto': 'Da', 'decltype(auto)': 'Dc', 'std::nullptr_t': 'Dn' -} +} # type: Dict[unicode, unicode] _id_operator_v2 = { 'new': 'nw', 'new[]': 'na', @@ -469,43 +478,50 @@ _id_operator_v2 = { '->': 'pt', '()': 'cl', '[]': 'ix' -} +} # type: Dict[unicode, unicode] class NoOldIdError(UnicodeMixin, Exception): # Used to avoid implementing unneeded id generation for old id schmes. def __init__(self, description=""): + # type: (unicode) -> None self.description = description def __unicode__(self): + # type: () -> unicode return self.description class DefinitionError(UnicodeMixin, Exception): def __init__(self, description): + # type: (unicode) -> None self.description = description def __unicode__(self): + # type: () -> unicode return self.description class _DuplicateSymbolError(UnicodeMixin, Exception): def __init__(self, symbol, candSymbol): + # type: (Symbol, Symbol) -> None assert symbol assert candSymbol self.symbol = symbol self.candSymbol = candSymbol def __unicode__(self): + # type: () -> unicode return "Internal C++ duplicate symbol error:\n%s" % self.symbol.dump(0) class ASTBase(UnicodeMixin): def __eq__(self, other): + # type: (Any) -> bool if type(self) is not type(other): return False try: - for key, value in iteritems(self.__dict__): + for key, value in iteritems(self.__dict__): # type: ignore if value != getattr(other, key): return False except AttributeError: @@ -513,23 +529,28 @@ class ASTBase(UnicodeMixin): return True def __ne__(self, other): + # type: (Any) -> bool return not self.__eq__(other) - __hash__ = None + __hash__ = None # type: None def clone(self): + # type: () -> ASTBase """Clone a definition expression node.""" return deepcopy(self) def get_id_v1(self): + # type: () -> unicode """Return the v1 id for the node.""" raise NotImplementedError(repr(self)) def get_id_v2(self): + # type: () -> unicode """Return the v2 id for the node.""" raise NotImplementedError(repr(self)) def get_name(self): + # type: () -> unicode """Return the name. Returns either `None` or a node with a name you might call @@ -538,10 +559,12 @@ class ASTBase(UnicodeMixin): raise NotImplementedError(repr(self)) def prefix_nested_name(self, prefix): + # type: (unicode) -> unicode """Prefix a name node (a node returned by :meth:`get_name`).""" raise NotImplementedError(repr(self)) def __unicode__(self): + # type: () -> unicode raise NotImplementedError(repr(self)) def __repr__(self): @@ -549,29 +572,35 @@ class ASTBase(UnicodeMixin): def _verify_description_mode(mode): + # type: (unicode) -> None if mode not in ('lastIsName', 'noneIsName', 'markType', 'param'): raise Exception("Description mode '%s' is invalid." % mode) class ASTCPPAttribute(ASTBase): def __init__(self, arg): + # type: (unicode) -> None self.arg = arg def __unicode__(self): + # type: () -> unicode return "[[" + self.arg + "]]" def describe_signature(self, signode): + # type: (addnodes.desc_signature) -> None txt = text_type(self) signode.append(nodes.Text(txt, txt)) class ASTGnuAttribute(ASTBase): def __init__(self, name, args): + # type: (unicode, Any) -> None self.name = name self.args = args def __unicode__(self): - res = [self.name] + # type: () -> unicode + res = [self.name] # type: List[unicode] if self.args: res.append('(') res.append(text_type(self.args)) @@ -581,10 +610,12 @@ class ASTGnuAttribute(ASTBase): class ASTGnuAttributeList(ASTBase): def __init__(self, attrs): + # type: (List[Any]) -> None self.attrs = attrs def __unicode__(self): - res = ['__attribute__(('] + # type: () -> unicode + res = ['__attribute__(('] # type: List[unicode] first = True for attr in self.attrs: if not first: @@ -595,6 +626,7 @@ class ASTGnuAttributeList(ASTBase): return ''.join(res) def describe_signature(self, signode): + # type: (addnodes.desc_signature) -> None txt = text_type(self) signode.append(nodes.Text(txt, txt)) @@ -603,12 +635,15 @@ class ASTIdAttribute(ASTBase): """For simple attributes defined by the user.""" def __init__(self, id): + # type: (unicode) -> None self.id = id def __unicode__(self): + # type: () -> unicode return self.id def describe_signature(self, signode): + # type: (addnodes.desc_signature) -> None signode.append(nodes.Text(self.id, self.id)) @@ -616,29 +651,35 @@ class ASTParenAttribute(ASTBase): """For paren attributes defined by the user.""" def __init__(self, id, arg): + # type: (unicode, unicode) -> None self.id = id self.arg = arg def __unicode__(self): + # type: () -> unicode return self.id + '(' + self.arg + ')' def describe_signature(self, signode): + # type: (addnodes.desc_signature) -> None txt = text_type(self) signode.append(nodes.Text(txt, txt)) class ASTIdentifier(ASTBase): def __init__(self, identifier): + # type: (unicode) -> None assert identifier is not None self.identifier = identifier def get_id_v1(self): + # type: () -> unicode if self.identifier == 'size_t': return 's' else: return self.identifier def get_id_v2(self): + # type: () -> unicode if self.identifier == "std": return 'St' elif self.identifier[0] == "~": @@ -648,9 +689,11 @@ class ASTIdentifier(ASTBase): return text_type(len(self.identifier)) + self.identifier def __unicode__(self): + # type: () -> unicode return self.identifier def describe_signature(self, signode, mode, env, prefix, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, unicode, Symbol) -> None _verify_description_mode(mode) if mode == 'markType': targetText = prefix + self.identifier @@ -673,6 +716,7 @@ class ASTIdentifier(ASTBase): class ASTTemplateKeyParamPackIdDefault(ASTBase): def __init__(self, key, identifier, parameterPack, default): + # type: (unicode, Any, bool, Any) -> None assert key if parameterPack: assert default is None @@ -682,9 +726,11 @@ class ASTTemplateKeyParamPackIdDefault(ASTBase): self.default = default def get_identifier(self): + # type: () -> unicode return self.identifier def get_id_v2(self): + # type: () -> unicode # this is not part of the normal name mangling in C++ res = [] if self.parameterPack: @@ -694,7 +740,8 @@ class ASTTemplateKeyParamPackIdDefault(ASTBase): return ''.join(res) def __unicode__(self): - res = [self.key] + # type: () -> unicode + res = [self.key] # type: List[unicode] if self.parameterPack: if self.identifier: res.append(' ') @@ -709,6 +756,7 @@ class ASTTemplateKeyParamPackIdDefault(ASTBase): return ''.join(res) def describe_signature(self, signode, mode, env, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, Symbol) -> None signode += nodes.Text(self.key) if self.parameterPack: if self.identifier: @@ -725,18 +773,22 @@ class ASTTemplateKeyParamPackIdDefault(ASTBase): class ASTTemplateParamType(ASTBase): def __init__(self, data): + # type: (Any) -> None assert data self.data = data @property def name(self): + # type: () -> ASTNestedName id = self.get_identifier() return ASTNestedName([ASTNestedNameElement(id, None)], rooted=False) def get_identifier(self): + # type: () -> unicode return self.data.get_identifier() def get_id_v2(self, objectType=None, symbol=None): + # type: (unicode, Symbol) -> unicode # this is not part of the normal name mangling in C++ if symbol: # the anchor will be our parent @@ -745,14 +797,17 @@ class ASTTemplateParamType(ASTBase): return self.data.get_id_v2() def __unicode__(self): + # type: () -> unicode return text_type(self.data) def describe_signature(self, signode, mode, env, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, Symbol) -> None self.data.describe_signature(signode, mode, env, symbol) class ASTTemplateParamTemplateType(ASTBase): def __init__(self, nestedParams, data): + # type: (Any, Any) -> None assert nestedParams assert data self.nestedParams = nestedParams @@ -760,13 +815,16 @@ class ASTTemplateParamTemplateType(ASTBase): @property def name(self): + # type: () -> ASTNestedName id = self.get_identifier() return ASTNestedName([ASTNestedNameElement(id, None)], rooted=False) def get_identifier(self): + # type: () -> unicode return self.data.get_identifier() def get_id_v2(self, objectType=None, symbol=None): + # type: (unicode, Symbol) -> unicode # this is not part of the normal name mangling in C++ if symbol: # the anchor will be our parent @@ -775,9 +833,11 @@ class ASTTemplateParamTemplateType(ASTBase): return self.nestedParams.get_id_v2() + self.data.get_id_v2() def __unicode__(self): + # type: () -> unicode return text_type(self.nestedParams) + text_type(self.data) def describe_signature(self, signode, mode, env, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, Symbol) -> None self.nestedParams.describe_signature(signode, 'noneIsName', env, symbol) signode += nodes.Text(' ') self.data.describe_signature(signode, mode, env, symbol) @@ -785,15 +845,18 @@ class ASTTemplateParamTemplateType(ASTBase): class ASTTemplateParamNonType(ASTBase): def __init__(self, param): + # type: (Any) -> None assert param self.param = param @property def name(self): + # type: () -> ASTNestedName id = self.get_identifier() return ASTNestedName([ASTNestedNameElement(id, None)], rooted=False) def get_identifier(self): + # type: () -> unicode name = self.param.name if name: assert len(name.names) == 1 @@ -804,6 +867,7 @@ class ASTTemplateParamNonType(ASTBase): return None def get_id_v2(self, objectType=None, symbol=None): + # type: (unicode, Symbol) -> unicode # this is not part of the normal name mangling in C++ if symbol: # the anchor will be our parent @@ -812,18 +876,22 @@ class ASTTemplateParamNonType(ASTBase): return '_' + self.param.get_id_v2() def __unicode__(self): + # type: () -> unicode return text_type(self.param) def describe_signature(self, signode, mode, env, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, Symbol) -> None self.param.describe_signature(signode, mode, env, symbol) class ASTTemplateParams(ASTBase): def __init__(self, params): + # type: (Any) -> None assert params is not None self.params = params def get_id_v2(self): + # type: () -> unicode res = [] res.append("I") for param in self.params: @@ -832,6 +900,7 @@ class ASTTemplateParams(ASTBase): return ''.join(res) def __unicode__(self): + # type: () -> unicode res = [] res.append(u"template<") res.append(u", ".join(text_type(a) for a in self.params)) @@ -839,6 +908,7 @@ class ASTTemplateParams(ASTBase): return ''.join(res) def describe_signature(self, signode, mode, env, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, Symbol) -> None signode.sphinx_cpp_tagname = 'templateParams' signode += nodes.Text("template<") first = True @@ -852,13 +922,16 @@ class ASTTemplateParams(ASTBase): class ASTTemplateIntroductionParameter(ASTBase): def __init__(self, identifier, parameterPack): + # type: (Any, Any) -> None self.identifier = identifier self.parameterPack = parameterPack def get_identifier(self): + # type: () -> unicode return self.identifier def get_id_v2(self, objectType=None, symbol=None): + # type: (unicode, Symbol) -> unicode # this is not part of the normal name mangling in C++ if symbol: # the anchor will be our parent @@ -870,6 +943,7 @@ class ASTTemplateIntroductionParameter(ASTBase): return '0' # we need to put something def get_id_v2_as_arg(self): + # type: () -> unicode # used for the implicit requires clause res = self.identifier.get_id_v2() if self.parameterPack: @@ -878,13 +952,15 @@ class ASTTemplateIntroductionParameter(ASTBase): return res def __unicode__(self): - res = [] + # type: () -> unicode + res = [] # type: List[unicode] if self.parameterPack: res.append('...') res.append(text_type(self.identifier)) return ''.join(res) def describe_signature(self, signode, mode, env, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, Symbol) -> None if self.parameterPack: signode += nodes.Text('...') self.identifier.describe_signature(signode, mode, env, '', symbol) @@ -892,6 +968,7 @@ class ASTTemplateIntroductionParameter(ASTBase): class ASTTemplateIntroduction(ASTBase): def __init__(self, concept, params): + # type: (Any, List[Any]) -> None assert len(params) > 0 self.concept = concept self.params = params @@ -899,6 +976,7 @@ class ASTTemplateIntroduction(ASTBase): # id_v1 does not exist def get_id_v2(self): + # type: () -> unicode # first do the same as a normal template parameter list res = [] res.append("I") @@ -916,6 +994,7 @@ class ASTTemplateIntroduction(ASTBase): return ''.join(res) def __unicode__(self): + # type: () -> unicode res = [] res.append(text_type(self.concept)) res.append('{') @@ -924,6 +1003,7 @@ class ASTTemplateIntroduction(ASTBase): return ''.join(res) def describe_signature(self, signode, mode, env, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, Symbol) -> None signode.sphinx_cpp_tagname = 'templateIntroduction' self.concept.describe_signature(signode, 'markType', env, symbol) signode += nodes.Text('{') @@ -938,6 +1018,7 @@ class ASTTemplateIntroduction(ASTBase): class ASTTemplateDeclarationPrefix(ASTBase): def __init__(self, templates): + # type: (List[Any]) -> None assert templates is not None assert len(templates) > 0 self.templates = templates @@ -945,6 +1026,7 @@ class ASTTemplateDeclarationPrefix(ASTBase): # id_v1 does not exist def get_id_v2(self): + # type: () -> unicode # this is not part of a normal name mangling system res = [] for t in self.templates: @@ -952,12 +1034,14 @@ class ASTTemplateDeclarationPrefix(ASTBase): return u''.join(res) def __unicode__(self): + # type: () -> unicode res = [] for t in self.templates: res.append(text_type(t)) return u''.join(res) def describe_signature(self, signode, mode, env, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, Symbol) -> None _verify_description_mode(mode) for t in self.templates: templateNode = addnodes.desc_signature_line() @@ -967,30 +1051,36 @@ class ASTTemplateDeclarationPrefix(ASTBase): class ASTOperatorBuildIn(ASTBase): def __init__(self, op): + # type: (unicode) -> None self.op = op def is_operator(self): + # type: () -> bool return True def get_id_v1(self): + # type: () -> unicode if self.op not in _id_operator_v1: raise Exception('Internal error: Build-in operator "%s" can not ' 'be mapped to an id.' % self.op) return _id_operator_v1[self.op] def get_id_v2(self): + # type: () -> unicode if self.op not in _id_operator_v2: raise Exception('Internal error: Build-in operator "%s" can not ' 'be mapped to an id.' % self.op) return _id_operator_v2[self.op] def __unicode__(self): + # type: () -> unicode if self.op in ('new', 'new[]', 'delete', 'delete[]'): return u'operator ' + self.op else: return u'operator' + self.op def describe_signature(self, signode, mode, env, prefix, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, unicode, Symbol) -> None _verify_description_mode(mode) identifier = text_type(self) if mode == 'lastIsName': @@ -1001,24 +1091,31 @@ class ASTOperatorBuildIn(ASTBase): class ASTOperatorType(ASTBase): def __init__(self, type): + # type: (Any) -> None self.type = type def is_operator(self): + # type: () -> bool return True def get_id_v1(self): + # type: () -> unicode return u'castto-%s-operator' % self.type.get_id_v1() def get_id_v2(self): + # type: () -> unicode return u'cv' + self.type.get_id_v2() def __unicode__(self): + # type: () -> unicode return u''.join(['operator ', text_type(self.type)]) def get_name_no_template(self): + # type: () -> unicode return text_type(self) def describe_signature(self, signode, mode, env, prefix, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, unicode, Symbol) -> None _verify_description_mode(mode) identifier = text_type(self) if mode == 'lastIsName': @@ -1029,21 +1126,27 @@ class ASTOperatorType(ASTBase): class ASTOperatorLiteral(ASTBase): def __init__(self, identifier): + # type: (Any) -> None self.identifier = identifier def is_operator(self): + # type: () -> bool return True def get_id_v1(self): + # type: () -> unicode raise NoOldIdError() def get_id_v2(self): + # type: () -> unicode return u'li' + self.identifier.get_id_v2() def __unicode__(self): + # type: () -> unicode return u'operator""' + text_type(self.identifier) def describe_signature(self, signode, mode, env, prefix, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, unicode, Symbol) -> None _verify_description_mode(mode) identifier = text_type(self) if mode == 'lastIsName': @@ -1054,38 +1157,46 @@ class ASTOperatorLiteral(ASTBase): class ASTTemplateArgConstant(ASTBase): def __init__(self, value): + # type: (Any) -> None self.value = value def __unicode__(self): + # type: () -> unicode return text_type(self.value) def get_id_v1(self): + # type: () -> unicode return text_type(self).replace(u' ', u'-') def get_id_v2(self): + # type: () -> unicode # TODO: doing this properly needs parsing of expressions, let's just # juse it verbatim for now return u'X' + text_type(self) + u'E' def describe_signature(self, signode, mode, env, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, Symbol) -> None _verify_description_mode(mode) signode += nodes.Text(text_type(self)) class ASTTemplateArgs(ASTBase): def __init__(self, args): + # type: (List[Any]) -> None assert args is not None assert len(args) > 0 self.args = args def get_id_v1(self): - res = [] + # type: () -> unicode + res = [] # type: List[unicode] res.append(':') res.append(u'.'.join(a.get_id_v1() for a in self.args)) res.append(':') return u''.join(res) def get_id_v2(self): + # type: () -> unicode res = [] res.append('I') for a in self.args: @@ -1094,10 +1205,12 @@ class ASTTemplateArgs(ASTBase): return u''.join(res) def __unicode__(self): + # type: () -> unicode res = ', '.join(text_type(a) for a in self.args) return '<' + res + '>' def describe_signature(self, signode, mode, env, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, Symbol) -> None _verify_description_mode(mode) signode += nodes.Text('<') first = True @@ -1111,31 +1224,37 @@ class ASTTemplateArgs(ASTBase): class ASTNestedNameElement(ASTBase): def __init__(self, identifier, templateArgs): + # type: (Any, Any) -> None self.identifier = identifier self.templateArgs = templateArgs def is_operator(self): + # type: () -> bool return False def get_id_v1(self): + # type: () -> unicode res = self.identifier.get_id_v1() if self.templateArgs: res += self.templateArgs.get_id_v1() return res def get_id_v2(self): + # type: () -> unicode res = self.identifier.get_id_v2() if self.templateArgs: res += self.templateArgs.get_id_v2() return res def __unicode__(self): + # type: () -> unicode res = text_type(self.identifier) if self.templateArgs: res += text_type(self.templateArgs) return res def describe_signature(self, signode, mode, env, prefix, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, unicode, Symbol) -> None self.identifier.describe_signature(signode, mode, env, prefix, symbol) if self.templateArgs: self.templateArgs.describe_signature(signode, mode, env, symbol) @@ -1143,15 +1262,18 @@ class ASTNestedNameElement(ASTBase): class ASTNestedName(ASTBase): def __init__(self, names, rooted): + # type: (List[Any], bool) -> None assert len(names) > 0 self.names = names self.rooted = rooted @property def name(self): + # type: () -> ASTNestedName return self def num_templates(self): + # type: () -> int count = 0 for n in self.names: if n.is_operator(): @@ -1161,6 +1283,7 @@ class ASTNestedName(ASTBase): return count def get_id_v1(self): + # type: () -> unicode tt = text_type(self) if tt in _id_shorthands_v1: return _id_shorthands_v1[tt] @@ -1168,7 +1291,8 @@ class ASTNestedName(ASTBase): return u'::'.join(n.get_id_v1() for n in self.names) def get_id_v2(self, modifiers=""): - res = [] + # type: (unicode) -> unicode + res = [] # type: List[unicode] if len(self.names) > 1 or len(modifiers) > 0: res.append('N') res.append(modifiers) @@ -1179,7 +1303,8 @@ class ASTNestedName(ASTBase): return u''.join(res) def __unicode__(self): - res = [] + # type: () -> unicode + res = [] # type: List[unicode] if self.rooted: res.append('') for n in self.names: @@ -1187,15 +1312,16 @@ class ASTNestedName(ASTBase): return '::'.join(res) def describe_signature(self, signode, mode, env, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, Symbol) -> None _verify_description_mode(mode) # just print the name part, with template args, not template params if mode == 'lastIsName': - addname = [] + addname = [] # type: List[unicode] if self.rooted: addname.append('') for n in self.names[:-1]: addname.append(text_type(n)) - addname = '::'.join(addname) + addname = '::'.join(addname) # type: ignore if len(self.names) > 1: addname += '::' signode += addnodes.desc_addname(addname, addname) @@ -1209,7 +1335,7 @@ class ASTNestedName(ASTBase): # each element should be a pending xref targeting the complete # prefix. however, only the identifier part should be a link, such # that template args can be a link as well. - prefix = '' + prefix = '' # type: unicode first = True for name in self.names: if not first: @@ -1217,7 +1343,7 @@ class ASTNestedName(ASTBase): prefix += '::' first = False if name != '': - name.describe_signature(signode, mode, env, prefix, symbol) + name.describe_signature(signode, mode, env, prefix, symbol) # type: ignore prefix += text_type(name) else: raise Exception('Unknown description mode: %s' % mode) @@ -1225,12 +1351,15 @@ class ASTNestedName(ASTBase): class ASTTrailingTypeSpecFundamental(ASTBase): def __init__(self, name): + # type: (unicode) -> None self.name = name def __unicode__(self): + # type: () -> unicode return self.name def get_id_v1(self): + # type: () -> unicode res = [] for a in self.name.split(' '): if a in _id_fundamental_v1: @@ -1240,6 +1369,7 @@ class ASTTrailingTypeSpecFundamental(ASTBase): return u'-'.join(res) def get_id_v2(self): + # type: () -> unicode if self.name not in _id_fundamental_v2: raise Exception( 'Semi-internal error: Fundamental type "%s" can not be mapped ' @@ -1248,26 +1378,32 @@ class ASTTrailingTypeSpecFundamental(ASTBase): return _id_fundamental_v2[self.name] def describe_signature(self, signode, mode, env, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, Symbol) -> None signode += nodes.Text(text_type(self.name)) class ASTTrailingTypeSpecName(ASTBase): def __init__(self, prefix, nestedName): + # type: (unicode, Any) -> None self.prefix = prefix self.nestedName = nestedName @property def name(self): + # type: () -> Any return self.nestedName def get_id_v1(self): + # type: () -> unicode return self.nestedName.get_id_v1() def get_id_v2(self): + # type: () -> unicode return self.nestedName.get_id_v2() def __unicode__(self): - res = [] + # type: () -> unicode + res = [] # type: List[unicode] if self.prefix: res.append(self.prefix) res.append(' ') @@ -1275,6 +1411,7 @@ class ASTTrailingTypeSpecName(ASTBase): return u''.join(res) def describe_signature(self, signode, mode, env, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, Symbol) -> None if self.prefix: signode += addnodes.desc_annotation(self.prefix, self.prefix) signode += nodes.Text(' ') @@ -1283,28 +1420,33 @@ class ASTTrailingTypeSpecName(ASTBase): class ASTFunctinoParameter(ASTBase): def __init__(self, arg, ellipsis=False): + # type: (Any, bool) -> None self.arg = arg self.ellipsis = ellipsis def get_id_v1(self): + # type: () -> unicode if self.ellipsis: return 'z' else: return self.arg.get_id_v1() def get_id_v2(self): + # type: () -> unicode if self.ellipsis: return 'z' else: return self.arg.get_id_v2() def __unicode__(self): + # type: () -> unicode if self.ellipsis: return '...' else: return text_type(self.arg) def describe_signature(self, signode, mode, env, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, Symbol) -> None _verify_description_mode(mode) if self.ellipsis: signode += nodes.Text('...') @@ -1315,6 +1457,7 @@ class ASTFunctinoParameter(ASTBase): class ASTParametersQualifiers(ASTBase): def __init__(self, args, volatile, const, refQual, exceptionSpec, override, final, initializer): + # type: (List[Any], bool, bool, unicode, unicode, bool, bool, unicode) -> None self.args = args self.volatile = volatile self.const = const @@ -1327,6 +1470,7 @@ class ASTParametersQualifiers(ASTBase): # Id v1 ------------------------------------------------------------------ def get_modifiers_id_v1(self): + # type: () -> unicode res = [] if self.volatile: res.append('V') @@ -1339,6 +1483,7 @@ class ASTParametersQualifiers(ASTBase): return u''.join(res) def get_param_id_v1(self): + # type: () -> unicode if len(self.args) == 0: return '' else: @@ -1347,6 +1492,7 @@ class ASTParametersQualifiers(ASTBase): # Id v2 ------------------------------------------------------------------ def get_modifiers_id_v2(self): + # type: () -> unicode res = [] if self.volatile: res.append('V') @@ -1359,13 +1505,15 @@ class ASTParametersQualifiers(ASTBase): return u''.join(res) def get_param_id_v2(self): + # type: () -> unicode if len(self.args) == 0: return 'v' else: return u''.join(a.get_id_v2() for a in self.args) def __unicode__(self): - res = [] + # type: () -> unicode + res = [] # type: List[unicode] res.append('(') first = True for a in self.args: @@ -1394,6 +1542,7 @@ class ASTParametersQualifiers(ASTBase): return u''.join(res) def describe_signature(self, signode, mode, env, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, Symbol) -> None _verify_description_mode(mode) paramlist = addnodes.desc_parameterlist() for arg in self.args: @@ -1431,6 +1580,7 @@ class ASTParametersQualifiers(ASTBase): class ASTDeclSpecsSimple(ASTBase): def __init__(self, storage, threadLocal, inline, virtual, explicit, constexpr, volatile, const, friend, attrs): + # type: (unicode, bool, bool, bool, bool, bool, bool, bool, bool, List[Any]) -> None self.storage = storage self.threadLocal = threadLocal self.inline = inline @@ -1443,6 +1593,7 @@ class ASTDeclSpecsSimple(ASTBase): self.attrs = attrs def mergeWith(self, other): + # type: (ASTDeclSpecsSimple) -> ASTDeclSpecsSimple if not other: return self return ASTDeclSpecsSimple(self.storage or other.storage, @@ -1457,7 +1608,8 @@ class ASTDeclSpecsSimple(ASTBase): self.attrs + other.attrs) def __unicode__(self): - res = [] + # type: () -> unicode + res = [] # type: List[unicode] res.extend(text_type(attr) for attr in self.attrs) if self.storage: res.append(self.storage) @@ -1480,6 +1632,7 @@ class ASTDeclSpecsSimple(ASTBase): return u' '.join(res) def describe_signature(self, modifiers): + # type: (List[nodes.Node]) -> None def _add(modifiers, text): if len(modifiers) > 0: modifiers.append(nodes.Text(' ')) @@ -1520,9 +1673,11 @@ class ASTDeclSpecs(ASTBase): @property def name(self): + # type: () -> unicode return self.trailingTypeSpec.name def get_id_v1(self): + # type: () -> unicode res = [] res.append(self.trailingTypeSpec.get_id_v1()) if self.allSpecs.volatile: @@ -1532,6 +1687,7 @@ class ASTDeclSpecs(ASTBase): return u''.join(res) def get_id_v2(self): + # type: () -> unicode res = [] if self.leftSpecs.volatile or self.rightSpecs.volatile: res.append('V') @@ -1541,7 +1697,8 @@ class ASTDeclSpecs(ASTBase): return u''.join(res) def __unicode__(self): - res = [] + # type: () -> unicode + res = [] # type: List[unicode] l = text_type(self.leftSpecs) if len(l) > 0: if len(res) > 0: @@ -1559,8 +1716,9 @@ class ASTDeclSpecs(ASTBase): return "".join(res) def describe_signature(self, signode, mode, env, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, Symbol) -> None _verify_description_mode(mode) - modifiers = [] + modifiers = [] # type: List[nodes.Node] def _add(modifiers, text): if len(modifiers) > 0: @@ -1586,15 +1744,19 @@ class ASTDeclSpecs(ASTBase): class ASTArray(ASTBase): def __init__(self, size): + # type: (unicode) -> None self.size = size def __unicode__(self): + # type: () -> unicode return u''.join(['[', text_type(self.size), ']']) def get_id_v1(self): + # type: () -> unicode return u'A' def get_id_v2(self): + # type: () -> unicode # TODO: this should maybe be done differently return u'A' + text_type(self.size) + u'_' @@ -1605,6 +1767,7 @@ class ASTArray(ASTBase): class ASTDeclaratorPtr(ASTBase): def __init__(self, next, volatile, const): + # type: (Any, bool, bool) -> None assert next self.next = next self.volatile = volatile @@ -1612,14 +1775,17 @@ class ASTDeclaratorPtr(ASTBase): @property def name(self): + # type: () -> unicode return self.next.name def require_space_after_declSpecs(self): + # type: () -> bool # TODO: if has paramPack, then False ? return True def __unicode__(self): - res = ['*'] + # type: () -> unicode + res = ['*'] # type: List[unicode] if self.volatile: res.append('volatile') if self.const: @@ -1635,12 +1801,15 @@ class ASTDeclaratorPtr(ASTBase): # Id v1 ------------------------------------------------------------------ def get_modifiers_id_v1(self): + # type: () -> unicode return self.next.get_modifiers_id_v1() def get_param_id_v1(self): + # type: () -> unicode return self.next.get_param_id_v1() def get_ptr_suffix_id_v1(self): + # type: () -> unicode res = 'P' if self.volatile: res += 'V' @@ -1651,13 +1820,16 @@ class ASTDeclaratorPtr(ASTBase): # Id v2 ------------------------------------------------------------------ def get_modifiers_id_v2(self): + # type: () -> unicode return self.next.get_modifiers_id_v2() def get_param_id_v2(self): + # type: () -> unicode return self.next.get_param_id_v2() def get_ptr_suffix_id_v2(self): - res = [self.next.get_ptr_suffix_id_v2()] + # type: () -> unicode + res = [self.next.get_ptr_suffix_id_v2()] # type: List[unicode] res.append('P') if self.volatile: res.append('V') @@ -1666,8 +1838,9 @@ class ASTDeclaratorPtr(ASTBase): return u''.join(res) def get_type_id_v2(self, returnTypeId): + # type: (unicode) -> unicode # ReturnType *next, so we are part of the return type of 'next - res = ['P'] + res = ['P'] # type: List[unicode] if self.volatile: res.append('V') if self.const: @@ -1678,9 +1851,11 @@ class ASTDeclaratorPtr(ASTBase): # ------------------------------------------------------------------------ def is_function_type(self): + # type: () -> bool return self.next.is_function_type() def describe_signature(self, signode, mode, env, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, Symbol) -> None _verify_description_mode(mode) signode += nodes.Text("*") @@ -1700,51 +1875,64 @@ class ASTDeclaratorPtr(ASTBase): class ASTDeclaratorRef(ASTBase): def __init__(self, next): + # type: (Any) -> None assert next self.next = next @property def name(self): + # type: () -> unicode return self.next.name def require_space_after_declSpecs(self): + # type: () -> bool return self.next.require_space_after_declSpecs() def __unicode__(self): + # type: () -> unicode return '&' + text_type(self.next) # Id v1 ------------------------------------------------------------------ def get_modifiers_id_v1(self): + # type: () -> unicode return self.next.get_modifiers_id_v1() def get_param_id_v1(self): # only the parameters (if any) + # type: () -> unicode return self.next.get_param_id_v1() def get_ptr_suffix_id_v1(self): + # type: () -> unicode return u'R' + self.next.get_ptr_suffix_id_v1() # Id v2 ------------------------------------------------------------------ def get_modifiers_id_v2(self): + # type: () -> unicode return self.next.get_modifiers_id_v2() def get_param_id_v2(self): # only the parameters (if any) + # type: () -> unicode return self.next.get_param_id_v2() def get_ptr_suffix_id_v2(self): + # type: () -> unicode return self.next.get_ptr_suffix_id_v2() + u'R' def get_type_id_v2(self, returnTypeId): + # type: (unicode) -> unicode # ReturnType &next, so we are part of the return type of 'next return self.next.get_type_id_v2(returnTypeId=u'R' + returnTypeId) # ------------------------------------------------------------------------ def is_function_type(self): + # type: () -> bool return self.next.is_function_type() def describe_signature(self, signode, mode, env, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, Symbol) -> None _verify_description_mode(mode) signode += nodes.Text("&") self.next.describe_signature(signode, mode, env, symbol) @@ -1752,17 +1940,21 @@ class ASTDeclaratorRef(ASTBase): class ASTDeclaratorParamPack(ASTBase): def __init__(self, next): + # type: (Any) -> None assert next self.next = next @property def name(self): + # type: () -> unicode return self.next.name def require_space_after_declSpecs(self): + # type: () -> bool return False def __unicode__(self): + # type: () -> unicode res = text_type(self.next) if self.next.name: res = ' ' + res @@ -1771,35 +1963,43 @@ class ASTDeclaratorParamPack(ASTBase): # Id v1 ------------------------------------------------------------------ def get_modifiers_id_v1(self): + # type: () -> unicode return self.next.get_modifiers_id_v1() def get_param_id_v1(self): # only the parameters (if any) + # type: () -> unicode return self.next.get_param_id_v1() def get_ptr_suffix_id_v1(self): + # type: () -> unicode return 'Dp' + self.next.get_ptr_suffix_id_v2() # Id v2 ------------------------------------------------------------------ def get_modifiers_id_v2(self): + # type: () -> unicode return self.next.get_modifiers_id_v2() def get_param_id_v2(self): # only the parameters (if any) return self.next.get_param_id_v2() def get_ptr_suffix_id_v2(self): + # type: () -> unicode return self.next.get_ptr_suffix_id_v2() + u'Dp' def get_type_id_v2(self, returnTypeId): + # type: (unicode) -> unicode # ReturnType... next, so we are part of the return type of 'next return self.next.get_type_id_v2(returnTypeId=u'Dp' + returnTypeId) # ------------------------------------------------------------------------ def is_function_type(self): + # type: () -> bool return self.next.is_function_type() def describe_signature(self, signode, mode, env, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, Symbol) -> None _verify_description_mode(mode) signode += nodes.Text("...") if self.next.name: @@ -1809,6 +2009,7 @@ class ASTDeclaratorParamPack(ASTBase): class ASTDeclaratorMemPtr(ASTBase): def __init__(self, className, const, volatile, next): + # type: (Any, bool, bool, Any) -> None assert className assert next self.className = className @@ -1818,12 +2019,15 @@ class ASTDeclaratorMemPtr(ASTBase): @property def name(self): + # type: () -> unicode return self.next.name def require_space_after_declSpecs(self): + # type: () -> bool return True def __unicode__(self): + # type: () -> unicode res = [] res.append(text_type(self.className)) res.append('::*') @@ -1839,29 +2043,36 @@ class ASTDeclaratorMemPtr(ASTBase): # Id v1 ------------------------------------------------------------------ def get_modifiers_id_v1(self): + # type: () -> unicode raise NoOldIdError() def get_param_id_v1(self): # only the parameters (if any) + # type: () -> unicode raise NoOldIdError() def get_ptr_suffix_id_v1(self): + # type: () -> unicode raise NoOldIdError() # Id v2 ------------------------------------------------------------------ def get_modifiers_id_v2(self): + # type: () -> unicode return self.next.get_modifiers_id_v2() def get_param_id_v2(self): # only the parameters (if any) + # type: () -> unicode return self.next.get_param_id_v2() def get_ptr_suffix_id_v2(self): + # type: () -> unicode raise NotImplementedError() return self.next.get_ptr_suffix_id_v2() + u'Dp' def get_type_id_v2(self, returnTypeId): + # type: (unicode) -> unicode # ReturnType name::* next, so we are part of the return type of next - nextReturnTypeId = '' + nextReturnTypeId = '' # type: unicode if self.volatile: nextReturnTypeId += 'V' if self.const: @@ -1874,9 +2085,11 @@ class ASTDeclaratorMemPtr(ASTBase): # ------------------------------------------------------------------------ def is_function_type(self): + # type: () -> bool return self.next.is_function_type() def describe_signature(self, signode, mode, env, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, Symbol) -> None _verify_description_mode(mode) self.className.describe_signature(signode, mode, env, symbol) signode += nodes.Text('::*') @@ -1897,6 +2110,7 @@ class ASTDeclaratorMemPtr(ASTBase): class ASTDeclaratorParen(ASTBase): def __init__(self, inner, next): + # type: (Any, Any) -> None assert inner assert next self.inner = inner @@ -1905,13 +2119,16 @@ class ASTDeclaratorParen(ASTBase): @property def name(self): + # type: () -> unicode return self.inner.name def require_space_after_declSpecs(self): + # type: () -> bool return True def __unicode__(self): - res = ['('] + # type: () -> unicode + res = ['('] # type: List[unicode] res.append(text_type(self.inner)) res.append(')') res.append(text_type(self.next)) @@ -1920,12 +2137,15 @@ class ASTDeclaratorParen(ASTBase): # Id v1 ------------------------------------------------------------------ def get_modifiers_id_v1(self): + # type: () -> unicode return self.inner.get_modifiers_id_v1() def get_param_id_v1(self): # only the parameters (if any) + # type: () -> unicode return self.inner.get_param_id_v1() def get_ptr_suffix_id_v1(self): + # type: () -> unicode raise NoOldIdError() # TODO: was this implemented before? return self.next.get_ptr_suffix_id_v2() + \ self.inner.get_ptr_suffix_id_v2() @@ -1933,16 +2153,20 @@ class ASTDeclaratorParen(ASTBase): # Id v2 ------------------------------------------------------------------ def get_modifiers_id_v2(self): + # type: () -> unicode return self.inner.get_modifiers_id_v2() def get_param_id_v2(self): # only the parameters (if any) + # type: () -> unicode return self.inner.get_param_id_v2() def get_ptr_suffix_id_v2(self): + # type: () -> unicode return self.inner.get_ptr_suffix_id_v2() + \ self.next.get_ptr_suffix_id_v2() def get_type_id_v2(self, returnTypeId): + # type: (unicode) -> unicode # ReturnType (inner)next, so 'inner' returns everything outside nextId = self.next.get_type_id_v2(returnTypeId) return self.inner.get_type_id_v2(returnTypeId=nextId) @@ -1950,9 +2174,11 @@ class ASTDeclaratorParen(ASTBase): # ------------------------------------------------------------------------ def is_function_type(self): + # type: () -> bool return self.inner.is_function_type() def describe_signature(self, signode, mode, env, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, Symbol) -> None _verify_description_mode(mode) signode += nodes.Text('(') self.inner.describe_signature(signode, mode, env, symbol) @@ -1962,17 +2188,20 @@ class ASTDeclaratorParen(ASTBase): class ASTDecleratorNameParamQual(ASTBase): def __init__(self, declId, arrayOps, paramQual): + # type: (Any, List[Any], Any) -> None self.declId = declId self.arrayOps = arrayOps self.paramQual = paramQual @property def name(self): + # type: () -> unicode return self.declId # Id v1 ------------------------------------------------------------------ def get_modifiers_id_v1(self): # only the modifiers for a function, e.g., + # type: () -> unicode # cv-qualifiers if self.paramQual: return self.paramQual.get_modifiers_id_v1() @@ -1980,17 +2209,20 @@ class ASTDecleratorNameParamQual(ASTBase): "This should only be called on a function: %s" % text_type(self)) def get_param_id_v1(self): # only the parameters (if any) + # type: () -> unicode if self.paramQual: return self.paramQual.get_param_id_v1() else: return '' def get_ptr_suffix_id_v1(self): # only the array specifiers + # type: () -> unicode return u''.join(a.get_id_v1() for a in self.arrayOps) # Id v2 ------------------------------------------------------------------ def get_modifiers_id_v2(self): # only the modifiers for a function, e.g., + # type: () -> unicode # cv-qualifiers if self.paramQual: return self.paramQual.get_modifiers_id_v2() @@ -1998,15 +2230,18 @@ class ASTDecleratorNameParamQual(ASTBase): "This should only be called on a function: %s" % text_type(self)) def get_param_id_v2(self): # only the parameters (if any) + # type: () -> unicode if self.paramQual: return self.paramQual.get_param_id_v2() else: return '' def get_ptr_suffix_id_v2(self): # only the array specifiers + # type: () -> unicode return u''.join(a.get_id_v2() for a in self.arrayOps) def get_type_id_v2(self, returnTypeId): + # type: (unicode) -> unicode res = [] # TOOD: can we actually have both array ops and paramQual? res.append(self.get_ptr_suffix_id_v2()) @@ -2023,12 +2258,15 @@ class ASTDecleratorNameParamQual(ASTBase): # ------------------------------------------------------------------------ def require_space_after_declSpecs(self): + # type: () -> bool return self.declId is not None def is_function_type(self): + # type: () -> bool return self.paramQual is not None def __unicode__(self): + # type: () -> unicode res = [] if self.declId: res.append(text_type(self.declId)) @@ -2039,6 +2277,7 @@ class ASTDecleratorNameParamQual(ASTBase): return u''.join(res) def describe_signature(self, signode, mode, env, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, Symbol) -> None _verify_description_mode(mode) if self.declId: self.declId.describe_signature(signode, mode, env, symbol) @@ -2050,18 +2289,22 @@ class ASTDecleratorNameParamQual(ASTBase): class ASTInitializer(ASTBase): def __init__(self, value): + # type: (unicode) -> None self.value = value def __unicode__(self): + # type: () -> unicode return u''.join([' = ', text_type(self.value)]) def describe_signature(self, signode, mode): + # type: (addnodes.desc_signature, unicode) -> None _verify_description_mode(mode) signode += nodes.Text(text_type(self)) class ASTType(ASTBase): def __init__(self, declSpecs, decl): + # type: (Any, Any) -> None assert declSpecs assert decl self.declSpecs = declSpecs @@ -2069,10 +2312,12 @@ class ASTType(ASTBase): @property def name(self): + # type: () -> unicode name = self.decl.name return name def get_id_v1(self, objectType=None, symbol=None): + # type: (unicode, Symbol) -> unicode res = [] if objectType: # needs the name if objectType == 'function': # also modifiers @@ -2097,6 +2342,7 @@ class ASTType(ASTBase): return u''.join(res) def get_id_v2(self, objectType=None, symbol=None): + # type: (unicode, Symbol) -> unicode res = [] if objectType: # needs the name if objectType == 'function': # also modifiers @@ -2117,6 +2363,7 @@ class ASTType(ASTBase): return u''.join(res) def __unicode__(self): + # type: () -> unicode res = [] declSpecs = text_type(self.declSpecs) res.append(declSpecs) @@ -2126,12 +2373,14 @@ class ASTType(ASTBase): return u''.join(res) def get_type_declaration_prefix(self): + # type: () -> unicode if self.declSpecs.trailingTypeSpec: return 'typedef' else: return 'type' def describe_signature(self, signode, mode, env, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, Symbol) -> None _verify_description_mode(mode) self.declSpecs.describe_signature(signode, 'markType', env, symbol) if (self.decl.require_space_after_declSpecs() and @@ -2142,14 +2391,17 @@ class ASTType(ASTBase): class ASTTypeWithInit(ASTBase): def __init__(self, type, init): + # type: (Any, Any) -> None self.type = type self.init = init @property def name(self): + # type: () -> unicode return self.type.name def get_id_v1(self, objectType=None, symbol=None): + # type: (unicode, Symbol) -> unicode if objectType == 'member': return symbol.get_full_nested_name().get_id_v1() + u'__' \ + self.type.get_id_v1() @@ -2157,12 +2409,14 @@ class ASTTypeWithInit(ASTBase): return self.type.get_id_v1(objectType) def get_id_v2(self, objectType=None, symbol=None): + # type: (unicode, Symbol) -> unicode if objectType == 'member': return symbol.get_full_nested_name().get_id_v2() else: return self.type.get_id_v2() def __unicode__(self): + # type: () -> unicode res = [] res.append(text_type(self.type)) if self.init: @@ -2170,6 +2424,7 @@ class ASTTypeWithInit(ASTBase): return u''.join(res) def describe_signature(self, signode, mode, env, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, Symbol) -> None _verify_description_mode(mode) self.type.describe_signature(signode, mode, env, symbol=symbol) if self.init: @@ -2178,16 +2433,20 @@ class ASTTypeWithInit(ASTBase): class ASTTypeUsing(ASTBase): def __init__(self, name, type): + # type: (Any, Any) -> None self.name = name self.type = type def get_id_v1(self, objectType=None, symbol=None): + # type: (unicode, Symbol) -> unicode raise NoOldIdError() def get_id_v2(self, objectType=None, symbol=None): + # type: (unicode, Symbol) -> unicode return symbol.get_full_nested_name().get_id_v2() def __unicode__(self): + # type: () -> unicode res = [] res.append(text_type(self.name)) if self.type: @@ -2196,9 +2455,11 @@ class ASTTypeUsing(ASTBase): return u''.join(res) def get_type_declaration_prefix(self): + # type: () -> unicode return 'using' def describe_signature(self, signode, mode, env, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, Symbol) -> None _verify_description_mode(mode) self.name.describe_signature(signode, mode, env, symbol=symbol) if self.type: @@ -2208,21 +2469,26 @@ class ASTTypeUsing(ASTBase): class ASTConcept(ASTBase): def __init__(self, nestedName, isFunction, initializer): + # type: (Any, bool, Any) -> None self.nestedName = nestedName self.isFunction = isFunction # otherwise it's a variable concept self.initializer = initializer @property def name(self): + # type: () -> unicode return self.nestedName def get_id_v1(self, objectType=None, symbol=None): + # type: (unicode, Symbol) -> unicode raise NoOldIdError() - def get_id_v2(self, objectType, symbol): + def get_id_v2(self, objectType, symbol): # type: ignore + # type: (unicode, Symbol) -> unicode return symbol.get_full_nested_name().get_id_v2() def __unicode__(self): + # type: () -> unicode res = text_type(self.nestedName) if self.isFunction: res += "()" @@ -2231,6 +2497,7 @@ class ASTConcept(ASTBase): return res def describe_signature(self, signode, mode, env, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, Symbol) -> None signode += nodes.Text(text_type("bool ")) self.nestedName.describe_signature(signode, mode, env, symbol) if self.isFunction: @@ -2241,13 +2508,15 @@ class ASTConcept(ASTBase): class ASTBaseClass(ASTBase): def __init__(self, name, visibility, virtual, pack): + # type: (Any, unicode, bool, bool) -> None self.name = name self.visibility = visibility self.virtual = virtual self.pack = pack def __unicode__(self): - res = [] + # type: () -> unicode + res = [] # type: List[unicode] if self.visibility != 'private': res.append(self.visibility) res.append(' ') @@ -2259,6 +2528,7 @@ class ASTBaseClass(ASTBase): return u''.join(res) def describe_signature(self, signode, mode, env, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, Symbol) -> None _verify_description_mode(mode) if self.visibility != 'private': signode += addnodes.desc_annotation(self.visibility, @@ -2274,17 +2544,21 @@ class ASTBaseClass(ASTBase): class ASTClass(ASTBase): def __init__(self, name, final, bases): + # type: (Any, bool, List[Any]) -> None self.name = name self.final = final self.bases = bases - def get_id_v1(self, objectType, symbol): + def get_id_v1(self, objectType, symbol): # type: ignore + # type: (unicode, Symbol) -> unicode return symbol.get_full_nested_name().get_id_v1() - def get_id_v2(self, objectType, symbol): + def get_id_v2(self, objectType, symbol): # type: ignore + # type: (unicode, Symbol) -> unicode return symbol.get_full_nested_name().get_id_v2() def __unicode__(self): + # type: () -> unicode res = [] res.append(text_type(self.name)) if self.final: @@ -2300,6 +2574,7 @@ class ASTClass(ASTBase): return u''.join(res) def describe_signature(self, signode, mode, env, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, Symbol) -> None _verify_description_mode(mode) self.name.describe_signature(signode, mode, env, symbol=symbol) if self.final: @@ -2315,18 +2590,22 @@ class ASTClass(ASTBase): class ASTEnum(ASTBase): def __init__(self, name, scoped, underlyingType): + # type: (Any, unicode, Any) -> None self.name = name self.scoped = scoped self.underlyingType = underlyingType - def get_id_v1(self, objectType, symbol): + def get_id_v1(self, objectType, symbol): # type: ignore + # type: (unicode, Symbol) -> unicode raise NoOldIdError() - def get_id_v2(self, objectType, symbol): + def get_id_v2(self, objectType, symbol): # type: ignore + # type: (unicode, Symbol) -> unicode return symbol.get_full_nested_name().get_id_v2() def __unicode__(self): - res = [] + # type: () -> unicode + res = [] # type: List[unicode] if self.scoped: res.append(self.scoped) res.append(' ') @@ -2337,6 +2616,7 @@ class ASTEnum(ASTBase): return u''.join(res) def describe_signature(self, signode, mode, env, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, Symbol) -> None _verify_description_mode(mode) # self.scoped has been done by the CPPEnumObject self.name.describe_signature(signode, mode, env, symbol=symbol) @@ -2348,16 +2628,20 @@ class ASTEnum(ASTBase): class ASTEnumerator(ASTBase): def __init__(self, name, init): + # type: (Any, Any) -> None self.name = name self.init = init - def get_id_v1(self, objectType, symbol): + def get_id_v1(self, objectType, symbol): # type: ignore + # type: (unicode, Symbol) -> unicode raise NoOldIdError() - def get_id_v2(self, objectType, symbol): + def get_id_v2(self, objectType, symbol): # type: ignore + # type: (unicode, Symbol) -> unicode return symbol.get_full_nested_name().get_id_v2() def __unicode__(self): + # type: () -> unicode res = [] res.append(text_type(self.name)) if self.init: @@ -2365,6 +2649,7 @@ class ASTEnumerator(ASTBase): return u''.join(res) def describe_signature(self, signode, mode, env, symbol): + # type: (addnodes.desc_signature, unicode, BuildEnvironment, Symbol) -> None _verify_description_mode(mode) self.name.describe_signature(signode, mode, env, symbol=symbol) if self.init: @@ -2373,16 +2658,18 @@ class ASTEnumerator(ASTBase): class ASTDeclaration(ASTBase): def __init__(self, objectType, visibility, templatePrefix, declaration): + # type: (unicode, unicode, Any, Any) -> None self.objectType = objectType self.visibility = visibility self.templatePrefix = templatePrefix self.declaration = declaration - self.symbol = None + self.symbol = None # type: Symbol # set by CPPObject._add_enumerator_to_parent - self.enumeratorScopedSymbol = None + self.enumeratorScopedSymbol = None # type: Any def clone(self): + # type: () -> ASTDeclaration if self.templatePrefix: templatePrefixClone = self.templatePrefix.clone() else: @@ -2393,9 +2680,11 @@ class ASTDeclaration(ASTBase): @property def name(self): + # type: () -> unicode return self.declaration.name def get_id_v1(self): + # type: () -> unicode if self.templatePrefix: raise NoOldIdError() if self.objectType == 'enumerator' and self.enumeratorScopedSymbol: @@ -2403,6 +2692,7 @@ class ASTDeclaration(ASTBase): return self.declaration.get_id_v1(self.objectType, self.symbol) def get_id_v2(self, prefixed=True): + # type: (bool) -> unicode if self.objectType == 'enumerator' and self.enumeratorScopedSymbol: return self.enumeratorScopedSymbol.declaration.get_id_v2(prefixed) if prefixed: @@ -2415,10 +2705,12 @@ class ASTDeclaration(ASTBase): return u''.join(res) def get_newest_id(self): + # type: () -> unicode return self.get_id_v2() def __unicode__(self): - res = [] + # type: () -> unicode + res = [] # type: List[unicode] if self.visibility and self.visibility != "public": res.append(self.visibility) res.append(u' ') @@ -2428,6 +2720,7 @@ class ASTDeclaration(ASTBase): return u''.join(res) def describe_signature(self, signode, mode, env): + # type: (addnodes.desc_signature, unicode, BuildEnvironment) -> None _verify_description_mode(mode) # The caller of the domain added a desc_signature node. # Always enable multiline: @@ -2459,8 +2752,8 @@ class ASTDeclaration(ASTBase): mainDeclNode += addnodes.desc_annotation('class ', 'class ') elif self.objectType == 'enum': prefix = 'enum ' - if self.scoped: - prefix += self.scoped + if self.scoped: # type: ignore + prefix += self.scoped # type: ignore prefix += ' ' mainDeclNode += addnodes.desc_annotation(prefix, prefix) elif self.objectType == 'enumerator': @@ -2473,12 +2766,14 @@ class ASTDeclaration(ASTBase): class ASTNamespace(ASTBase): def __init__(self, nestedName, templatePrefix): + # type: (Any, Any) -> None self.nestedName = nestedName self.templatePrefix = templatePrefix class Symbol(object): def _assert_invariants(self): + # type: () -> None if not self.parent: # parent == None means global scope, so declaration means a parent assert not self.identifier @@ -2495,6 +2790,7 @@ class Symbol(object): def __init__(self, parent, identifier, templateParams, templateArgs, declaration, docname): + # type: (Any, Any, Any, Any, Any, unicode) -> None self.parent = parent self.identifier = identifier self.templateParams = templateParams # template @@ -2503,7 +2799,7 @@ class Symbol(object): self.docname = docname self._assert_invariants() - self.children = [] + self.children = [] # type: List[Any] if self.parent: self.parent.children.append(self) if self.declaration: @@ -2524,6 +2820,7 @@ class Symbol(object): self._add_symbols(nn, [], decl, docname) def _fill_empty(self, declaration, docname): + # type: (Any, unicode) -> None self._assert_invariants() assert not self.declaration assert not self.docname @@ -2535,6 +2832,7 @@ class Symbol(object): self._assert_invariants() def clear_doc(self, docname): + # type: (unicode) -> None newChildren = [] for sChild in self.children: sChild.clear_doc(docname) @@ -2550,12 +2848,14 @@ class Symbol(object): self.children = newChildren def get_all_symbols(self): + # type: () -> Iterator[Any] yield self for sChild in self.children: for s in sChild.get_all_symbols(): yield s def get_lookup_key(self): + # type: () -> List[Tuple[ASTNestedNameElement, Any]] if not self.parent: # specialise for the root return None @@ -2576,6 +2876,7 @@ class Symbol(object): return key def get_full_nested_name(self): + # type: () -> ASTNestedName names = [] for nne, templateParams in self.get_lookup_key(): names.append(nne) @@ -2584,6 +2885,7 @@ class Symbol(object): def _find_named_symbol(self, identifier, templateParams, templateArgs, operator, templateShorthand, matchSelf): + # type: (Any, Any, Any, Any, Any, bool) -> Symbol assert (identifier is None) != (operator is None) def matches(s): @@ -2624,6 +2926,7 @@ class Symbol(object): return None def _add_symbols(self, nestedName, templateDecls, declaration, docname): + # type: (Any, List[Any], Any, unicode) -> Symbol # This condition should be checked at the parser level. # Each template argument list must have a template parameter list. # But to declare a template there must be an additional template parameter list. @@ -2722,6 +3025,7 @@ class Symbol(object): return symbol def merge_with(self, other, docnames, env): + # type: (Any, List[unicode], BuildEnvironment) -> None assert other is not None for otherChild in other.children: if not otherChild.identifier: @@ -2765,6 +3069,7 @@ class Symbol(object): ourChild.merge_with(otherChild, docnames, env) def add_name(self, nestedName, templatePrefix=None): + # type: (unicode, Any) -> Symbol if templatePrefix: templateDecls = templatePrefix.templates else: @@ -2773,6 +3078,7 @@ class Symbol(object): declaration=None, docname=None) def add_declaration(self, declaration, docname): + # type: (Any, unicode) -> Symbol assert declaration assert docname nestedName = declaration.name @@ -2783,6 +3089,7 @@ class Symbol(object): return self._add_symbols(nestedName, templateDecls, declaration, docname) def find_identifier(self, identifier, matchSelf): + # type: (Any, bool) -> Symbol if matchSelf and self.identifier and self.identifier == identifier: return self for s in self.children: @@ -2791,6 +3098,7 @@ class Symbol(object): return None def direct_lookup(self, key): + # type: (List[Tuple[Any, Any]]) -> Symbol s = self for name, templateParams in key: if name.is_operator(): @@ -2810,6 +3118,7 @@ class Symbol(object): return s def find_name(self, nestedName, templateDecls, templateShorthand, matchSelf): + # type: (Any, Any, Any, bool) -> Symbol # templateShorthand: missing template parameter lists for templates is ok # TODO: unify this with the _add_symbols @@ -2885,7 +3194,8 @@ class Symbol(object): assert False # should have returned in the loop def to_string(self, indent): - res = ['\t'*indent] + # type: (int) -> unicode + res = ['\t'*indent] # type: List[unicode] if not self.parent: res.append('::') else: @@ -2910,6 +3220,7 @@ class Symbol(object): return ''.join(res) def dump(self, indent): + # type: (int) -> unicode res = [self.to_string(indent)] for c in self.children: res.append(c.dump(indent + 1)) @@ -2927,16 +3238,18 @@ class DefinitionParser(object): _prefix_keys = ('class', 'struct', 'enum', 'union', 'typename') def __init__(self, definition, warnEnv, config): + # type: (Any, Any, Config) -> None self.definition = definition.strip() self.pos = 0 self.end = len(self.definition) - self.last_match = None - self._previous_state = (0, None) + self.last_match = None # type: Match + self._previous_state = (0, None) # type: Tuple[int, Match] self.warnEnv = warnEnv self.config = config def _make_multi_error(self, errors, header): + # type: (List[Any], unicode) -> DefinitionError if len(errors) == 1: return DefinitionError(header + '\n' + errors[0][0].description) result = [header, '\n'] @@ -2956,23 +3269,27 @@ class DefinitionParser(object): return DefinitionError(''.join(result)) def status(self, msg): + # type: (unicode) -> unicode # for debugging indicator = '-' * self.pos + '^' print("%s\n%s\n%s" % (msg, self.definition, indicator)) def fail(self, msg): + # type: (unicode) -> None indicator = '-' * self.pos + '^' raise DefinitionError( 'Invalid definition: %s [error at %d]\n %s\n %s' % (msg, self.pos, self.definition, indicator)) def warn(self, msg): + # type: (unicode) -> None if self.warnEnv: self.warnEnv.warn(msg) else: print("Warning: %s" % msg) def match(self, regex): + # type: (Pattern) -> bool match = regex.match(self.definition, self.pos) if match is not None: self._previous_state = (self.pos, self.last_match) @@ -2982,9 +3299,11 @@ class DefinitionParser(object): return False def backout(self): + # type: () -> None self.pos, self.last_match = self._previous_state def skip_string(self, string): + # type: (unicode) -> bool strlen = len(string) if self.definition[self.pos:self.pos + strlen] == string: self.pos += strlen @@ -2992,18 +3311,22 @@ class DefinitionParser(object): return False def skip_word(self, word): + # type: (unicode) -> bool return self.match(re.compile(r'\b%s\b' % re.escape(word))) def skip_ws(self): + # type: (unicode) -> bool return self.match(_whitespace_re) def skip_word_and_ws(self, word): + # type: (unicode) -> bool if self.skip_word(word): self.skip_ws() return True return False def skip_string_and_ws(self, string): + # type: (unicode) -> bool if self.skip_string(string): self.skip_ws() return True @@ -3011,10 +3334,12 @@ class DefinitionParser(object): @property def eof(self): + # type: () -> bool return self.pos >= self.end @property def current_char(self): + # type: () -> unicode try: return self.definition[self.pos] except IndexError: @@ -3022,24 +3347,28 @@ class DefinitionParser(object): @property def matched_text(self): + # type: () -> unicode if self.last_match is not None: return self.last_match.group() def read_rest(self): + # type: () -> unicode rv = self.definition[self.pos:] self.pos = self.end return rv def assert_end(self): + # type: () -> None self.skip_ws() if not self.eof: self.fail('Expected end of definition.') def _parse_balanced_token_seq(self, end): + # type: (List[unicode]) -> unicode # TODO: add handling of string literals and similar - brackets = {'(': ')', '[': ']', '{': '}'} + brackets = {'(': ')', '[': ']', '{': '}'} # type: Dict[unicode, unicode] startPos = self.pos - symbols = [] + symbols = [] # type: List[unicode] while not self.eof: if len(symbols) == 0 and self.current_char in end: break @@ -3056,6 +3385,7 @@ class DefinitionParser(object): return self.definition[startPos:self.pos] def _parse_attribute(self): + # type: () -> Any self.skip_ws() # try C++11 style startPos = self.pos @@ -3115,6 +3445,7 @@ class DefinitionParser(object): return None def _parse_expression(self, end): + # type: (List[unicode]) -> unicode # Stupidly "parse" an expression. # 'end' should be a list of characters which ends the expression. assert end @@ -3124,8 +3455,8 @@ class DefinitionParser(object): value = self.matched_text else: # TODO: add handling of more bracket-like things, and quote handling - brackets = {'(': ')', '[': ']'} - symbols = [] + brackets = {'(': ')', '[': ']'} # type: Dict[unicode, unicode] + symbols = [] # type: List[unicode] while not self.eof: if (len(symbols) == 0 and self.current_char in end): break @@ -3141,6 +3472,7 @@ class DefinitionParser(object): return value.strip() def _parse_operator(self): + # type: () -> Any self.skip_ws() # adapted from the old code # thank god, a regular operator definition @@ -3173,11 +3505,12 @@ class DefinitionParser(object): return ASTOperatorType(type) def _parse_template_argument_list(self): + # type: () -> ASTTemplateArgs self.skip_ws() if not self.skip_string('<'): return None prevErrors = [] - templateArgs = [] + templateArgs = [] # type: List while 1: pos = self.pos parsedComma = False @@ -3216,6 +3549,7 @@ class DefinitionParser(object): return ASTTemplateArgs(templateArgs) def _parse_nested_name(self, memberPointer=False): + # type: (bool) -> ASTNestedName names = [] self.skip_ws() @@ -3240,7 +3574,7 @@ class DefinitionParser(object): self.fail("Expected identifier in nested name, " "got keyword: %s" % identifier) templateArgs = self._parse_template_argument_list() - identifier = ASTIdentifier(identifier) + identifier = ASTIdentifier(identifier) # type: ignore names.append(ASTNestedNameElement(identifier, templateArgs)) self.skip_ws() @@ -3251,6 +3585,7 @@ class DefinitionParser(object): return ASTNestedName(names, rooted) def _parse_trailing_type_spec(self): + # type: () -> Any # fundemental types self.skip_ws() for t in self._simple_fundemental_types: @@ -3296,6 +3631,7 @@ class DefinitionParser(object): return ASTTrailingTypeSpecName(prefix, nestedName) def _parse_parameters_and_qualifiers(self, paramMode): + # type: (unicode) -> ASTParametersQualifiers self.skip_ws() if not self.skip_string('('): if paramMode == 'function': @@ -3385,6 +3721,7 @@ class DefinitionParser(object): initializer) def _parse_decl_specs_simple(self, outer, typed): + # type: (unicode, bool) -> ASTDeclSpecsSimple """Just parse the simple ones.""" storage = None threadLocal = None @@ -3459,6 +3796,7 @@ class DefinitionParser(object): friend, attrs) def _parse_decl_specs(self, outer, typed=True): + # type: (unicode, bool) -> ASTDeclSpecs if outer: if outer not in ('type', 'member', 'function', 'templateParam'): raise Exception('Internal error, unknown outer "%s".' % outer) @@ -3486,6 +3824,7 @@ class DefinitionParser(object): return ASTDeclSpecs(outer, leftSpecs, rightSpecs, trailing) def _parse_declarator_name_param_qual(self, named, paramMode, typed): + # type: (Union[bool, unicode], unicode, bool) -> ASTDecleratorNameParamQual # now we should parse the name, and then suffixes if named == 'maybe': pos = self.pos @@ -3525,6 +3864,7 @@ class DefinitionParser(object): paramQual=paramQual) def _parse_declerator(self, named, paramMode, typed=True): + # type: (Union[bool, unicode], unicode, bool) -> Any # 'typed' here means 'parse return type stuff' if paramMode not in ('type', 'function', 'operatorCast'): raise Exception( @@ -3625,13 +3965,14 @@ class DefinitionParser(object): raise self._make_multi_error(prevErrors, header) def _parse_initializer(self, outer=None): + # type: (unicode) -> ASTInitializer self.skip_ws() # TODO: support paren and brace initialization for memberObject if not self.skip_string('='): return None else: if outer == 'member': - value = self.read_rest().strip() + value = self.read_rest().strip() # type: unicode elif outer == 'templateParam': value = self._parse_expression(end=[',', '>']) elif outer is None: # function parameter @@ -3642,6 +3983,7 @@ class DefinitionParser(object): return ASTInitializer(value) def _parse_type(self, named, outer=None): + # type: (Union[bool, unicode], unicode) -> ASTType """ named=False|'maybe'|True: 'maybe' is e.g., for function objects which doesn't need to name the arguments @@ -3725,6 +4067,7 @@ class DefinitionParser(object): return ASTType(declSpecs, decl) def _parse_type_with_init(self, named, outer): + # type: (Union[bool, unicode], unicode) -> ASTTypeWithInit if outer: assert outer in ('type', 'member', 'function', 'templateParam') type = self._parse_type(outer=outer, named=named) @@ -3732,6 +4075,7 @@ class DefinitionParser(object): return ASTTypeWithInit(type, init) def _parse_type_using(self): + # type: () -> ASTTypeUsing name = self._parse_nested_name() self.skip_ws() if not self.skip_string('='): @@ -3740,6 +4084,7 @@ class DefinitionParser(object): return ASTTypeUsing(name, type) def _parse_concept(self): + # type: () -> ASTConcept nestedName = self._parse_nested_name() isFunction = False @@ -3757,6 +4102,7 @@ class DefinitionParser(object): return ASTConcept(nestedName, isFunction, initializer) def _parse_class(self): + # type: () -> ASTClass name = self._parse_nested_name() self.skip_ws() final = self.skip_word_and_ws('final') @@ -3765,7 +4111,7 @@ class DefinitionParser(object): if self.skip_string(':'): while 1: self.skip_ws() - visibility = 'private' + visibility = 'private' # type: unicode virtual = False pack = False if self.skip_word_and_ws('virtual'): @@ -3787,7 +4133,8 @@ class DefinitionParser(object): return ASTClass(name, final, bases) def _parse_enum(self): - scoped = None # is set by CPPEnumObject + # type: () -> ASTEnum + scoped = None # type: unicode # is set by CPPEnumObject self.skip_ws() name = self._parse_nested_name() self.skip_ws() @@ -3797,6 +4144,7 @@ class DefinitionParser(object): return ASTEnum(name, scoped, underlyingType) def _parse_enumerator(self): + # type: () -> ASTEnumerator name = self._parse_nested_name() self.skip_ws() init = None @@ -3806,9 +4154,10 @@ class DefinitionParser(object): return ASTEnumerator(name, init) def _parse_template_parameter_list(self): + # type: () -> ASTTemplateParams # only: '<' parameter-list '>' # we assume that 'template' has just been parsed - templateParams = [] + templateParams = [] # type: List self.skip_ws() if not self.skip_string("<"): self.fail("Expected '<' after 'template'") @@ -3847,7 +4196,7 @@ class DefinitionParser(object): parameterPack, default) if nestedParams: # template type - param = ASTTemplateParamTemplateType(nestedParams, data) + param = ASTTemplateParamTemplateType(nestedParams, data) # type: Any else: # type param = ASTTemplateParamType(data) @@ -3875,6 +4224,7 @@ class DefinitionParser(object): raise self._make_multi_error(prevErrors, header) def _parse_template_introduction(self): + # type: () -> ASTTemplateIntroduction pos = self.pos try: concept = self._parse_nested_name() @@ -3899,7 +4249,7 @@ class DefinitionParser(object): if identifier in _keywords: self.fail("Expected identifier in template introduction list, " "got keyword: %s" % identifier) - identifier = ASTIdentifier(identifier) + identifier = ASTIdentifier(identifier) # type: ignore params.append(ASTTemplateIntroductionParameter(identifier, parameterPack)) self.skip_ws() @@ -3913,13 +4263,14 @@ class DefinitionParser(object): return ASTTemplateIntroduction(concept, params) def _parse_template_declaration_prefix(self, objectType): - templates = [] + # type: (unicode) -> ASTTemplateDeclarationPrefix + templates = [] # type: List while 1: self.skip_ws() # the saved position is only used to provide a better error message pos = self.pos if self.skip_word("template"): - params = self._parse_template_parameter_list() + params = self._parse_template_parameter_list() # type: Any else: params = self._parse_template_introduction() if not params: @@ -3937,6 +4288,7 @@ class DefinitionParser(object): def _check_template_consistency(self, nestedName, templatePrefix, fullSpecShorthand): + # type: (Any, Any, bool) -> ASTTemplateDeclarationPrefix numArgs = nestedName.num_templates() if not templatePrefix: numParams = 0 @@ -3952,7 +4304,7 @@ class DefinitionParser(object): msg = "Too many template argument lists compared to parameter" \ " lists. Argument lists: %d, Parameter lists: %d," \ " Extra empty parameters lists prepended: %d." \ - % (numArgs, numParams, numExtra) + % (numArgs, numParams, numExtra) # type: unicode msg += " Declaration:\n\t" if templatePrefix: msg += "%s\n\t" % text_type(templatePrefix) @@ -3968,12 +4320,13 @@ class DefinitionParser(object): return templatePrefix def parse_declaration(self, objectType): + # type: (unicode) -> ASTDeclaration if objectType not in ('type', 'concept', 'member', 'function', 'class', 'enum', 'enumerator'): raise Exception('Internal error, unknown objectType "%s".' % objectType) visibility = None templatePrefix = None - declaration = None + declaration = None # type: Any self.skip_ws() if self.match(_visibility_re): @@ -4021,6 +4374,7 @@ class DefinitionParser(object): templatePrefix, declaration) def parse_namespace_object(self): + # type: () -> ASTNamespace templatePrefix = self._parse_template_declaration_prefix(objectType="namespace") name = self._parse_nested_name() templatePrefix = self._check_template_consistency(name, templatePrefix, @@ -4030,6 +4384,7 @@ class DefinitionParser(object): return res def parse_xref_object(self): + # type: () -> ASTNamespace templatePrefix = self._parse_template_declaration_prefix(objectType="xref") name = self._parse_nested_name() templatePrefix = self._check_template_consistency(name, templatePrefix, @@ -4040,6 +4395,7 @@ class DefinitionParser(object): def _make_phony_error_name(): + # type: () -> ASTNestedName nne = ASTNestedNameElement(ASTIdentifier("PhonyNameDueToError"), None) return ASTNestedName([nne], rooted=False) @@ -4062,9 +4418,11 @@ class CPPObject(ObjectDescription): ] def warn(self, msg): + # type: (unicode) -> None self.state_machine.reporter.warning(msg, line=self.lineno) def _add_enumerator_to_parent(self, ast): + # type: (Any) -> None assert ast.objectType == 'enumerator' # find the parent, if it exists && is an enum # && it's unscoped, @@ -4106,6 +4464,7 @@ class CPPObject(ObjectDescription): docname=self.env.docname) def add_target_and_index(self, ast, sig, signode): + # type: (Any, unicode, addnodes.desc_signature) -> None # general note: name must be lstrip(':')'ed, to remove "::" try: id_v1 = ast.get_id_v1() @@ -4152,12 +4511,15 @@ class CPPObject(ObjectDescription): self.state.document.note_explicit_target(signode) def parse_definition(self, parser): + # type: (Any) -> Any raise NotImplementedError() def describe_signature(self, signode, ast, parentScope): + # type: (addnodes.desc_signature, Any, Any) -> None raise NotImplementedError() def handle_signature(self, sig, signode): + # type: (unicode, addnodes.desc_signature) -> Any if 'cpp:parent_symbol' not in self.env.ref_context: root = self.env.domaindata['cpp']['root_symbol'] self.env.ref_context['cpp:parent_symbol'] = root @@ -4191,75 +4553,94 @@ class CPPObject(ObjectDescription): return ast def before_content(self): + # type: () -> None lastSymbol = self.env.ref_context['cpp:last_symbol'] assert lastSymbol self.oldParentSymbol = self.env.ref_context['cpp:parent_symbol'] self.env.ref_context['cpp:parent_symbol'] = lastSymbol def after_content(self): + # type: () -> None self.env.ref_context['cpp:parent_symbol'] = self.oldParentSymbol class CPPTypeObject(CPPObject): def get_index_text(self, name): + # type: (unicode) -> unicode return _('%s (C++ type)') % name def parse_definition(self, parser): + # type: (Any) -> Any return parser.parse_declaration("type") - def describe_signature(self, signode, ast): + def describe_signature(self, signode, ast): # type: ignore + # type: (addnodes.desc_signature, Any) -> None ast.describe_signature(signode, 'lastIsName', self.env) class CPPConceptObject(CPPObject): def get_index_text(self, name): + # type: (unicode) -> unicode return _('%s (C++ concept)') % name def parse_definition(self, parser): + # type: (Any) -> Any return parser.parse_declaration("concept") - def describe_signature(self, signode, ast): + def describe_signature(self, signode, ast): # type: ignore + # type: (addnodes.desc_signature, Any) -> None ast.describe_signature(signode, 'lastIsName', self.env) class CPPMemberObject(CPPObject): def get_index_text(self, name): + # type: (unicode) -> unicode return _('%s (C++ member)') % name def parse_definition(self, parser): + # type: (Any) -> Any return parser.parse_declaration("member") - def describe_signature(self, signode, ast): + def describe_signature(self, signode, ast): # type: ignore + # type: (addnodes.desc_signature, Any) -> None ast.describe_signature(signode, 'lastIsName', self.env) class CPPFunctionObject(CPPObject): def get_index_text(self, name): + # type: (unicode) -> unicode return _('%s (C++ function)') % name def parse_definition(self, parser): + # type: (Any) -> Any return parser.parse_declaration("function") - def describe_signature(self, signode, ast): + def describe_signature(self, signode, ast): # type: ignore + # type: (addnodes.desc_signature, Any) -> None ast.describe_signature(signode, 'lastIsName', self.env) class CPPClassObject(CPPObject): def get_index_text(self, name): + # type: (unicode) -> unicode return _('%s (C++ class)') % name def parse_definition(self, parser): + # type: (Any) -> Any return parser.parse_declaration("class") - def describe_signature(self, signode, ast): + def describe_signature(self, signode, ast): # type: ignore + # type: (addnodes.desc_signature, Any) -> None ast.describe_signature(signode, 'lastIsName', self.env) class CPPEnumObject(CPPObject): def get_index_text(self, name): + # type: (unicode) -> unicode return _('%s (C++ enum)') % name def parse_definition(self, parser): + # type: (Any) -> Any ast = parser.parse_declaration("enum") # self.objtype is set by ObjectDescription in run() if self.objtype == "enum": @@ -4272,18 +4653,22 @@ class CPPEnumObject(CPPObject): assert False return ast - def describe_signature(self, signode, ast): + def describe_signature(self, signode, ast): # type: ignore + # type: (addnodes.desc_signature, Any) -> None ast.describe_signature(signode, 'lastIsName', self.env) class CPPEnumeratorObject(CPPObject): def get_index_text(self, name): + # type: (unicode) -> unicode return _('%s (C++ enumerator)') % name def parse_definition(self, parser): + # type: (Any) -> Any return parser.parse_declaration("enumerator") - def describe_signature(self, signode, ast): + def describe_signature(self, signode, ast): # type: ignore + # type: (addnodes.desc_signature, Any) -> None ast.describe_signature(signode, 'lastIsName', self.env) @@ -4297,17 +4682,19 @@ class CPPNamespaceObject(Directive): required_arguments = 1 optional_arguments = 0 final_argument_whitespace = True - option_spec = {} + option_spec = {} # type: Dict def warn(self, msg): + # type: (unicode) -> None self.state_machine.reporter.warning(msg, line=self.lineno) def run(self): + # type: () -> List[nodes.Node] env = self.state.document.settings.env rootSymbol = env.domaindata['cpp']['root_symbol'] if self.arguments[0].strip() in ('NULL', '0', 'nullptr'): symbol = rootSymbol - stack = [] + stack = [] # type: List[Symbol] else: parser = DefinitionParser(self.arguments[0], self, env.config) try: @@ -4329,12 +4716,14 @@ class CPPNamespacePushObject(Directive): required_arguments = 1 optional_arguments = 0 final_argument_whitespace = True - option_spec = {} + option_spec = {} # type: Dict def warn(self, msg): + # type: (unicode) -> None self.state_machine.reporter.warning(msg, line=self.lineno) def run(self): + # type: () -> List[nodes.Node] env = self.state.document.settings.env if self.arguments[0].strip() in ('NULL', '0', 'nullptr'): return @@ -4362,12 +4751,14 @@ class CPPNamespacePopObject(Directive): required_arguments = 0 optional_arguments = 0 final_argument_whitespace = True - option_spec = {} + option_spec = {} # type: Dict def warn(self, msg): + # type: (unicode) -> None self.state_machine.reporter.warning(msg, line=self.lineno) def run(self): + # type: () -> List[nodes.Node] env = self.state.document.settings.env stack = env.temp_data.get('cpp:namespace_stack', None) if not stack or len(stack) == 0: @@ -4386,6 +4777,7 @@ class CPPNamespacePopObject(Directive): class CPPXRefRole(XRefRole): def process_link(self, env, refnode, has_explicit_title, title, target): + # type: (BuildEnvironment, nodes.Node, bool, unicode, unicode) -> Tuple[unicode, unicode] # NOQA parent = env.ref_context.get('cpp:parent_symbol', None) if parent: refnode['cpp:parent_key'] = parent.get_lookup_key() @@ -4455,6 +4847,7 @@ class CPPDomain(Domain): } def clear_doc(self, docname): + # type: (unicode) -> None rootSymbol = self.data['root_symbol'] rootSymbol.clear_doc(docname) for name, nDocname in list(self.data['names'].items()): @@ -4462,12 +4855,14 @@ class CPPDomain(Domain): del self.data['names'][name] def process_doc(self, env, docname, document): + # type: (BuildEnvironment, unicode, nodes.Node) -> None # just for debugging # print(docname) # print(self.data['root_symbol'].dump(0)) pass def merge_domaindata(self, docnames, otherdata): + # type: (List[unicode], Dict) -> None self.data['root_symbol'].merge_with(otherdata['root_symbol'], docnames, self.env) ourNames = self.data['names'] @@ -4483,6 +4878,7 @@ class CPPDomain(Domain): def _resolve_xref_inner(self, env, fromdocname, builder, typ, target, node, contnode, emitWarnings=True): + # type: (BuildEnvironment, unicode, Builder, unicode, unicode, nodes.Node, nodes.Node, bool) -> nodes.Node # NOQA class Warner(object): def warn(self, msg): if emitWarnings: @@ -4562,11 +4958,13 @@ class CPPDomain(Domain): def resolve_xref(self, env, fromdocname, builder, typ, target, node, contnode): + # type: (BuildEnvironment, unicode, Builder, unicode, unicode, nodes.Node, nodes.Node) -> nodes.Node # NOQA return self._resolve_xref_inner(env, fromdocname, builder, typ, target, node, contnode)[0] def resolve_any_xref(self, env, fromdocname, builder, target, node, contnode): + # type: (BuildEnvironment, unicode, Builder, unicode, nodes.Node, nodes.Node) -> List[Tuple[unicode, nodes.Node]] # NOQA node, objtype = self._resolve_xref_inner(env, fromdocname, builder, 'any', target, node, contnode, emitWarnings=False) @@ -4575,6 +4973,7 @@ class CPPDomain(Domain): return [] def get_objects(self): + # type: () -> Iterator[Tuple[unicode, unicode, unicode, unicode, unicode, int]] rootSymbol = self.data['root_symbol'] for symbol in rootSymbol.get_all_symbols(): if symbol.declaration is None: @@ -4588,6 +4987,7 @@ class CPPDomain(Domain): def setup(app): + # type: (Sphinx) -> None app.add_domain(CPPDomain) app.add_config_value("cpp_index_common_prefix", [], 'env') app.add_config_value("cpp_id_attributes", [], 'env') diff --git a/sphinx/domains/javascript.py b/sphinx/domains/javascript.py index ade6e4224..5c2eead01 100644 --- a/sphinx/domains/javascript.py +++ b/sphinx/domains/javascript.py @@ -18,6 +18,14 @@ from sphinx.domains.python import _pseudo_parse_arglist from sphinx.util.nodes import make_refnode from sphinx.util.docfields import Field, GroupedField, TypedField +if False: + # For type annotation + from typing import Iterator, Tuple # NOQA + from docutils import nodes # NOQA + from sphinx.application import Sphinx # NOQA + from sphinx.builders import Builder # NOQA + from sphinx.environment import BuildEnvironment # NOQA + class JSObject(ObjectDescription): """ @@ -28,9 +36,10 @@ class JSObject(ObjectDescription): has_arguments = False #: what is displayed right before the documentation entry - display_prefix = None + display_prefix = None # type: unicode def handle_signature(self, sig, signode): + # type: (unicode, addnodes.desc_signature) -> Tuple[unicode, unicode] sig = sig.strip() if '(' in sig and sig[-1:] == ')': prefix, arglist = sig.split('(', 1) @@ -76,6 +85,7 @@ class JSObject(ObjectDescription): return fullname, nameprefix def add_target_and_index(self, name_obj, sig, signode): + # type: (Tuple[unicode, unicode], unicode, addnodes.desc_signature) -> None objectname = self.options.get( 'object', self.env.ref_context.get('js:object')) fullname = name_obj[0] @@ -100,6 +110,7 @@ class JSObject(ObjectDescription): '', None)) def get_index_text(self, objectname, name_obj): + # type: (unicode, Tuple[unicode, unicode]) -> unicode name, obj = name_obj if self.objtype == 'function': if not obj: @@ -139,6 +150,7 @@ class JSConstructor(JSCallable): class JSXRefRole(XRefRole): def process_link(self, env, refnode, has_explicit_title, title, target): + # type: (BuildEnvironment, nodes.Node, bool, unicode, unicode) -> Tuple[unicode, unicode] # NOQA # basically what sphinx.domains.python.PyXRefRole does refnode['js:object'] = env.ref_context.get('js:object') if not has_explicit_title: @@ -180,20 +192,23 @@ class JavaScriptDomain(Domain): } initial_data = { 'objects': {}, # fullname -> docname, objtype - } + } # type: Dict[unicode, Dict[unicode, Tuple[unicode, unicode]]] def clear_doc(self, docname): + # type: (unicode) -> None for fullname, (fn, _l) in list(self.data['objects'].items()): if fn == docname: del self.data['objects'][fullname] def merge_domaindata(self, docnames, otherdata): + # type: (List[unicode], Dict) -> None # XXX check duplicates for fullname, (fn, objtype) in otherdata['objects'].items(): if fn in docnames: self.data['objects'][fullname] = (fn, objtype) def find_obj(self, env, obj, name, typ, searchorder=0): + # type: (BuildEnvironment, unicode, unicode, unicode, int) -> Tuple[unicode, Tuple[unicode, unicode]] # NOQA if name[-2:] == '()': name = name[:-2] objects = self.data['objects'] @@ -212,6 +227,7 @@ class JavaScriptDomain(Domain): def resolve_xref(self, env, fromdocname, builder, typ, target, node, contnode): + # type: (BuildEnvironment, unicode, Builder, unicode, unicode, nodes.Node, nodes.Node) -> nodes.Node # NOQA objectname = node.get('js:object') searchorder = node.hasattr('refspecific') and 1 or 0 name, obj = self.find_obj(env, objectname, target, typ, searchorder) @@ -222,6 +238,7 @@ class JavaScriptDomain(Domain): def resolve_any_xref(self, env, fromdocname, builder, target, node, contnode): + # type: (BuildEnvironment, unicode, Builder, unicode, nodes.Node, nodes.Node) -> List[Tuple[unicode, nodes.Node]] # NOQA objectname = node.get('js:object') name, obj = self.find_obj(env, objectname, target, None, 1) if not obj: @@ -231,10 +248,12 @@ class JavaScriptDomain(Domain): name.replace('$', '_S_'), contnode, name))] def get_objects(self): + # type: () -> Iterator[Tuple[unicode, unicode, unicode, unicode, unicode, int]] for refname, (docname, type) in list(self.data['objects'].items()): yield refname, refname, type, docname, \ refname.replace('$', '_S_'), 1 def setup(app): + # type: (Sphinx) -> None app.add_domain(JavaScriptDomain) diff --git a/sphinx/domains/python.py b/sphinx/domains/python.py index d37e55fa3..4f0d0f1ae 100644 --- a/sphinx/domains/python.py +++ b/sphinx/domains/python.py @@ -12,6 +12,7 @@ import re from six import iteritems + from docutils import nodes from docutils.parsers.rst import directives @@ -24,6 +25,13 @@ from sphinx.util.nodes import make_refnode from sphinx.util.compat import Directive from sphinx.util.docfields import Field, GroupedField, TypedField +if False: + # For type annotation + from typing import Any, Iterator, Tuple, Union # NOQA + from sphinx.application import Sphinx # NOQA + from sphinx.builders import Builder # NOQA + from sphinx.environment import BuildEnvironment # NOQA + # REs for Python signatures py_sig_re = re.compile( @@ -36,6 +44,7 @@ py_sig_re = re.compile( def _pseudo_parse_arglist(signode, arglist): + # type: (addnodes.desc_signature, unicode) -> None """"Parse" a list of arguments separated by commas. Arguments can have "optional" annotations given by enclosing them in @@ -87,7 +96,8 @@ def _pseudo_parse_arglist(signode, arglist): class PyXrefMixin(object): def make_xref(self, rolename, domain, target, innernode=nodes.emphasis, contnode=None): - result = super(PyXrefMixin, self).make_xref(rolename, domain, target, + # type: (unicode, unicode, unicode, nodes.Node, nodes.Node) -> nodes.Node + result = super(PyXrefMixin, self).make_xref(rolename, domain, target, # type: ignore innernode, contnode) result['refspecific'] = True if target.startswith(('.', '~')): @@ -103,6 +113,7 @@ class PyXrefMixin(object): def make_xrefs(self, rolename, domain, target, innernode=nodes.emphasis, contnode=None): + # type: (unicode, unicode, unicode, nodes.Node, nodes.Node) -> List[nodes.Node] delims = '(\s*[\[\]\(\),](?:\s*or\s)?\s*|\s+or\s+)' delims_re = re.compile(delims) sub_targets = re.split(delims, target) @@ -114,7 +125,7 @@ class PyXrefMixin(object): if split_contnode: contnode = nodes.Text(sub_target) - if delims_re.match(sub_target): + if delims_re.match(sub_target): # type: ignore results.append(contnode or innernode(sub_target, sub_target)) else: results.append(self.make_xref(rolename, domain, sub_target, @@ -165,18 +176,21 @@ class PyObject(ObjectDescription): ] def get_signature_prefix(self, sig): + # type: (unicode) -> unicode """May return a prefix to put before the object name in the signature. """ return '' def needs_arglist(self): + # type: () -> bool """May return true if an empty argument list is to be generated even if the document contains none. """ return False - def handle_signature(self, sig, signode): + def handle_signature(self, sig, signode): # type: ignore + # type: (unicode, addnodes.desc_signature) -> Tuple[unicode, unicode] """Transform a Python signature into RST nodes. Return (fully qualified name of the thing, classname if any). @@ -185,7 +199,7 @@ class PyObject(ObjectDescription): * it is stripped from the displayed name if present * it is added to the full name (return value) if not present """ - m = py_sig_re.match(sig) + m = py_sig_re.match(sig) # type: ignore if m is None: raise ValueError name_prefix, name, arglist, retann = m.groups() @@ -256,10 +270,12 @@ class PyObject(ObjectDescription): return fullname, name_prefix def get_index_text(self, modname, name): + # type: (unicode, unicode) -> unicode """Return the text for the index entry of the object.""" raise NotImplementedError('must be implemented in subclasses') def add_target_and_index(self, name_cls, sig, signode): + # type: (unicode, unicode, addnodes.desc_signature) -> None modname = self.options.get( 'module', self.env.ref_context.get('py:module')) fullname = (modname and modname + '.' or '') + name_cls[0] @@ -285,10 +301,12 @@ class PyObject(ObjectDescription): fullname, '', None)) def before_content(self): + # type: () -> None # needed for automatic qualification of members (reset in subclasses) self.clsname_set = False def after_content(self): + # type: () -> None if self.clsname_set: self.env.ref_context.pop('py:class', None) @@ -299,9 +317,11 @@ class PyModulelevel(PyObject): """ def needs_arglist(self): + # type: () -> bool return self.objtype == 'function' def get_index_text(self, modname, name_cls): + # type: (unicode, unicode) -> unicode if self.objtype == 'function': if not modname: return _('%s() (built-in function)') % name_cls[0] @@ -320,9 +340,11 @@ class PyClasslike(PyObject): """ def get_signature_prefix(self, sig): + # type: (unicode) -> unicode return self.objtype + ' ' def get_index_text(self, modname, name_cls): + # type: (unicode, unicode) -> unicode if self.objtype == 'class': if not modname: return _('%s (built-in class)') % name_cls[0] @@ -333,6 +355,7 @@ class PyClasslike(PyObject): return '' def before_content(self): + # type: () -> None PyObject.before_content(self) if self.names: self.env.ref_context['py:class'] = self.names[0][0] @@ -345,9 +368,11 @@ class PyClassmember(PyObject): """ def needs_arglist(self): + # type: () -> bool return self.objtype.endswith('method') def get_signature_prefix(self, sig): + # type: (unicode) -> unicode if self.objtype == 'staticmethod': return 'static ' elif self.objtype == 'classmethod': @@ -355,6 +380,7 @@ class PyClassmember(PyObject): return '' def get_index_text(self, modname, name_cls): + # type: (unicode, unicode) -> unicode name, cls = name_cls add_modules = self.env.config.add_module_names if self.objtype == 'method': @@ -411,6 +437,7 @@ class PyClassmember(PyObject): return '' def before_content(self): + # type: () -> None PyObject.before_content(self) lastname = self.names and self.names[-1][1] if lastname and not self.env.ref_context.get('py:class'): @@ -423,11 +450,13 @@ class PyDecoratorMixin(object): Mixin for decorator directives. """ def handle_signature(self, sig, signode): - ret = super(PyDecoratorMixin, self).handle_signature(sig, signode) + # type: (unicode, addnodes.desc_signature) -> Tuple[unicode, unicode] + ret = super(PyDecoratorMixin, self).handle_signature(sig, signode) # type: ignore signode.insert(0, addnodes.desc_addname('@', '@')) return ret def needs_arglist(self): + # type: () -> bool return False @@ -436,6 +465,7 @@ class PyDecoratorFunction(PyDecoratorMixin, PyModulelevel): Directive to mark functions meant to be used as decorators. """ def run(self): + # type: () -> List[nodes.Node] # a decorator function is a function after all self.name = 'py:function' return PyModulelevel.run(self) @@ -446,6 +476,7 @@ class PyDecoratorMethod(PyDecoratorMixin, PyClassmember): Directive to mark methods meant to be used as decorators. """ def run(self): + # type: () -> List[nodes.Node] self.name = 'py:method' return PyClassmember.run(self) @@ -467,6 +498,7 @@ class PyModule(Directive): } def run(self): + # type: () -> List[nodes.Node] env = self.state.document.settings.env modname = self.arguments[0].strip() noindex = 'noindex' in self.options @@ -502,9 +534,10 @@ class PyCurrentModule(Directive): required_arguments = 1 optional_arguments = 0 final_argument_whitespace = False - option_spec = {} + option_spec = {} # type: Dict def run(self): + # type: () -> List[nodes.Node] env = self.state.document.settings.env modname = self.arguments[0].strip() if modname == 'None': @@ -516,6 +549,7 @@ class PyCurrentModule(Directive): class PyXRefRole(XRefRole): def process_link(self, env, refnode, has_explicit_title, title, target): + # type: (BuildEnvironment, nodes.Node, bool, unicode, unicode) -> Tuple[unicode, unicode] # NOQA refnode['py:module'] = env.ref_context.get('py:module') refnode['py:class'] = env.ref_context.get('py:class') if not has_explicit_title: @@ -546,9 +580,11 @@ class PythonModuleIndex(Index): shortname = l_('modules') def generate(self, docnames=None): - content = {} + # type: (List[unicode]) -> Tuple[List[Tuple[unicode, List[List[Union[unicode, int]]]]], bool] # NOQA + content = {} # type: Dict[unicode, List] # list of prefixes to ignore - ignores = self.domain.env.config['modindex_common_prefix'] + ignores = None # type: List[unicode] + ignores = self.domain.env.config['modindex_common_prefix'] # type: ignore ignores = sorted(ignores, key=len, reverse=True) # list of all modules, sorted by module name modules = sorted(iteritems(self.domain.data['modules']), @@ -601,9 +637,9 @@ class PythonModuleIndex(Index): collapse = len(modules) - num_toplevels < num_toplevels # sort by first letter - content = sorted(iteritems(content)) + sorted_content = sorted(iteritems(content)) - return content, collapse + return sorted_content, collapse class PythonDomain(Domain): @@ -620,7 +656,7 @@ class PythonDomain(Domain): 'staticmethod': ObjType(l_('static method'), 'meth', 'obj'), 'attribute': ObjType(l_('attribute'), 'attr', 'obj'), 'module': ObjType(l_('module'), 'mod', 'obj'), - } + } # type: Dict[unicode, ObjType] directives = { 'function': PyModulelevel, @@ -650,12 +686,13 @@ class PythonDomain(Domain): initial_data = { 'objects': {}, # fullname -> docname, objtype 'modules': {}, # modname -> docname, synopsis, platform, deprecated - } + } # type: Dict[unicode, Dict[unicode, Tuple[Any]]] indices = [ PythonModuleIndex, ] def clear_doc(self, docname): + # type: (unicode) -> None for fullname, (fn, _l) in list(self.data['objects'].items()): if fn == docname: del self.data['objects'][fullname] @@ -664,6 +701,7 @@ class PythonDomain(Domain): del self.data['modules'][modname] def merge_domaindata(self, docnames, otherdata): + # type: (List[unicode], Dict) -> None # XXX check duplicates? for fullname, (fn, objtype) in otherdata['objects'].items(): if fn in docnames: @@ -673,6 +711,7 @@ class PythonDomain(Domain): self.data['modules'][modname] = data def find_obj(self, env, modname, classname, name, type, searchmode=0): + # type: (BuildEnvironment, unicode, unicode, unicode, unicode, int) -> List[Tuple[unicode, Any]] # NOQA """Find a Python object for "name", perhaps using the given module and/or classname. Returns a list of (name, object entry) tuples. """ @@ -684,7 +723,7 @@ class PythonDomain(Domain): return [] objects = self.data['objects'] - matches = [] + matches = [] # type: List[Tuple[unicode, Any]] newname = None if searchmode == 1: @@ -737,6 +776,7 @@ class PythonDomain(Domain): def resolve_xref(self, env, fromdocname, builder, type, target, node, contnode): + # type: (BuildEnvironment, unicode, Builder, unicode, unicode, nodes.Node, nodes.Node) -> nodes.Node # NOQA modname = node.get('py:module') clsname = node.get('py:class') searchmode = node.hasattr('refspecific') and 1 or 0 @@ -760,9 +800,10 @@ class PythonDomain(Domain): def resolve_any_xref(self, env, fromdocname, builder, target, node, contnode): + # type: (BuildEnvironment, unicode, Builder, unicode, nodes.Node, nodes.Node) -> List[Tuple[unicode, nodes.Node]] # NOQA modname = node.get('py:module') clsname = node.get('py:class') - results = [] + results = [] # type: List[Tuple[unicode, nodes.Node]] # always search in "refspecific" mode with the :any: role matches = self.find_obj(env, modname, clsname, target, None, 1) @@ -778,6 +819,7 @@ class PythonDomain(Domain): return results def _make_module_refnode(self, builder, fromdocname, name, contnode): + # type: (Builder, unicode, unicode, nodes.Node) -> nodes.Node # get additional info for modules docname, synopsis, platform, deprecated = self.data['modules'][name] title = name @@ -791,6 +833,7 @@ class PythonDomain(Domain): 'module-' + name, contnode, title) def get_objects(self): + # type: () -> Iterator[Tuple[unicode, unicode, unicode, unicode, unicode, int]] for modname, info in iteritems(self.data['modules']): yield (modname, modname, 'module', info[0], 'module-' + modname, 0) for refname, (docname, type) in iteritems(self.data['objects']): @@ -799,4 +842,5 @@ class PythonDomain(Domain): def setup(app): + # type: (Sphinx) -> None app.add_domain(PythonDomain) diff --git a/sphinx/domains/rst.py b/sphinx/domains/rst.py index 526ae18a7..fa3353aa6 100644 --- a/sphinx/domains/rst.py +++ b/sphinx/domains/rst.py @@ -20,6 +20,14 @@ from sphinx.directives import ObjectDescription from sphinx.roles import XRefRole from sphinx.util.nodes import make_refnode +if False: + # For type annotation + from typing import Iterator, Tuple # NOQA + from docutils import nodes # NOQA + from sphinx.application import Sphinx # NOQA + from sphinx.builders import Builder # NOQA + from sphinx.environment import BuildEnvironment # NOQA + dir_sig_re = re.compile(r'\.\. (.+?)::(.*)$') @@ -30,6 +38,7 @@ class ReSTMarkup(ObjectDescription): """ def add_target_and_index(self, name, sig, signode): + # type: (unicode, unicode, addnodes.desc_signature) -> None targetname = self.objtype + '-' + name if targetname not in self.state.document.ids: signode['names'].append(targetname) @@ -51,6 +60,7 @@ class ReSTMarkup(ObjectDescription): targetname, '', None)) def get_index_text(self, objectname, name): + # type: (unicode, unicode) -> unicode if self.objtype == 'directive': return _('%s (directive)') % name elif self.objtype == 'role': @@ -59,6 +69,7 @@ class ReSTMarkup(ObjectDescription): def parse_directive(d): + # type: (unicode) -> Tuple[unicode, unicode] """Parse a directive signature. Returns (directive, arguments) string tuple. If no arguments are given, @@ -68,7 +79,7 @@ def parse_directive(d): if not dir.startswith('.'): # Assume it is a directive without syntax return (dir, '') - m = dir_sig_re.match(dir) + m = dir_sig_re.match(dir) # type: ignore if not m: return (dir, '') parsed_dir, parsed_args = m.groups() @@ -80,6 +91,7 @@ class ReSTDirective(ReSTMarkup): Description of a reST directive. """ def handle_signature(self, sig, signode): + # type: (unicode, addnodes.desc_signature) -> unicode name, args = parse_directive(sig) desc_name = '.. %s::' % name signode += addnodes.desc_name(desc_name, desc_name) @@ -93,6 +105,7 @@ class ReSTRole(ReSTMarkup): Description of a reST role. """ def handle_signature(self, sig, signode): + # type: (unicode, addnodes.desc_signature) -> unicode signode += addnodes.desc_name(':%s:' % sig, ':%s:' % sig) return sig @@ -116,14 +129,16 @@ class ReSTDomain(Domain): } initial_data = { 'objects': {}, # fullname -> docname, objtype - } + } # type: Dict[unicode, Dict[unicode, Tuple[unicode, ObjType]]] def clear_doc(self, docname): + # type: (unicode) -> None for (typ, name), doc in list(self.data['objects'].items()): if doc == docname: del self.data['objects'][typ, name] def merge_domaindata(self, docnames, otherdata): + # type: (List[unicode], Dict) -> None # XXX check duplicates for (typ, name), doc in otherdata['objects'].items(): if doc in docnames: @@ -131,6 +146,7 @@ class ReSTDomain(Domain): def resolve_xref(self, env, fromdocname, builder, typ, target, node, contnode): + # type: (BuildEnvironment, unicode, Builder, unicode, unicode, nodes.Node, nodes.Node) -> nodes.Node # NOQA objects = self.data['objects'] objtypes = self.objtypes_for_role(typ) for objtype in objtypes: @@ -142,6 +158,7 @@ class ReSTDomain(Domain): def resolve_any_xref(self, env, fromdocname, builder, target, node, contnode): + # type: (BuildEnvironment, unicode, Builder, unicode, nodes.Node, nodes.Node) -> List[nodes.Node] # NOQA objects = self.data['objects'] results = [] for objtype in self.object_types: @@ -154,9 +171,11 @@ class ReSTDomain(Domain): return results def get_objects(self): + # type: () -> Iterator[Tuple[unicode, unicode, unicode, unicode, unicode, int]] for (typ, name), docname in iteritems(self.data['objects']): yield name, name, typ, docname, typ + '-' + name, 1 def setup(app): + # type: (Sphinx) -> None app.add_domain(ReSTDomain) diff --git a/sphinx/domains/std.py b/sphinx/domains/std.py index b7f2597d4..6044b5d59 100644 --- a/sphinx/domains/std.py +++ b/sphinx/domains/std.py @@ -12,7 +12,8 @@ import re import unicodedata -from six import iteritems +from six import PY3, iteritems + from docutils import nodes from docutils.parsers.rst import directives from docutils.statemachine import ViewList @@ -26,6 +27,21 @@ from sphinx.util import ws_re from sphinx.util.nodes import clean_astext, make_refnode from sphinx.util.compat import Directive +if False: + # For type annotation + from typing import Any, Callable, Dict, Iterator, List, Tuple, Type, Union # NOQA + from docutils.parsers.rst.states import Inliner # NOQA + from sphinx.application import Sphinx # NOQA + from sphinx.builders import Builder # NOQA + from sphinx.environment import BuildEnvironment # NOQA + from sphinx.util.typing import Role # NOQA + + if PY3: + unicode = str + + RoleFunction = Callable[[unicode, unicode, unicode, int, Inliner, Dict, List[unicode]], + Tuple[List[nodes.Node], List[nodes.Node]]] + # RE for option descriptions option_desc_re = re.compile(r'((?:/|--|-|\+)?[-\.?@#_a-zA-Z0-9]+)(=?\s*.*)') @@ -38,9 +54,10 @@ class GenericObject(ObjectDescription): A generic x-ref directive registered with Sphinx.add_object_type(). """ indextemplate = '' - parse_node = None + parse_node = None # type: Callable[[GenericObject, BuildEnvironment, unicode, addnodes.desc_signature], unicode] # NOQA def handle_signature(self, sig, signode): + # type: (unicode, addnodes.desc_signature) -> unicode if self.parse_node: name = self.parse_node(self.env, sig, signode) else: @@ -51,6 +68,7 @@ class GenericObject(ObjectDescription): return name def add_target_and_index(self, name, sig, signode): + # type: (unicode, unicode, addnodes.desc_signature) -> None targetname = '%s-%s' % (self.objtype, name) signode['ids'].append(targetname) self.state.document.note_explicit_target(signode) @@ -78,6 +96,7 @@ class EnvVarXRefRole(XRefRole): """ def result_nodes(self, document, env, node, is_ref): + # type: (nodes.Node, BuildEnvironment, nodes.Node, bool) -> Tuple[List[nodes.Node], List[nodes.Node]] # NOQA if not is_ref: return [node], [] varname = node['reftarget'] @@ -102,9 +121,10 @@ class Target(Directive): required_arguments = 1 optional_arguments = 0 final_argument_whitespace = True - option_spec = {} + option_spec = {} # type: Dict def run(self): + # type: () -> List[nodes.Node] env = self.state.document.settings.env # normalize whitespace in fullname like XRefRole does fullname = ws_re.sub(' ', self.arguments[0].strip()) @@ -136,12 +156,13 @@ class Cmdoption(ObjectDescription): """ def handle_signature(self, sig, signode): + # type: (unicode, addnodes.desc_signature) -> unicode """Transform an option description into RST nodes.""" count = 0 firstname = '' for potential_option in sig.split(', '): potential_option = potential_option.strip() - m = option_desc_re.match(potential_option) + m = option_desc_re.match(potential_option) # type: ignore if not m: self.env.warn( self.env.docname, @@ -166,6 +187,7 @@ class Cmdoption(ObjectDescription): return firstname def add_target_and_index(self, firstname, sig, signode): + # type: (unicode, unicode, addnodes.desc_signature) -> None currprogram = self.env.ref_context.get('std:program') for optname in signode.get('allnames', []): targetname = optname.replace('/', '-') @@ -197,9 +219,10 @@ class Program(Directive): required_arguments = 1 optional_arguments = 0 final_argument_whitespace = True - option_spec = {} + option_spec = {} # type: Dict def run(self): + # type: () -> List[nodes.Node] env = self.state.document.settings.env program = ws_re.sub('-', self.arguments[0].strip()) if program == 'None': @@ -211,17 +234,20 @@ class Program(Directive): class OptionXRefRole(XRefRole): def process_link(self, env, refnode, has_explicit_title, title, target): + # type: (BuildEnvironment, nodes.Node, bool, unicode, unicode) -> Tuple[unicode, unicode] # NOQA refnode['std:program'] = env.ref_context.get('std:program') return title, target def split_term_classifiers(line): + # type: (unicode) -> List[Union[unicode, None]] # split line into a term and classifiers. if no classifier, None is used.. parts = re.split(' +: +', line) + [None] return parts def make_glossary_term(env, textnodes, index_key, source, lineno, new_id=None): + # type: (BuildEnvironment, List[nodes.Node], unicode, unicode, int, unicode) -> nodes.term # get a text-only representation of the term and register it # as a cross-reference target term = nodes.term('', '', *textnodes) @@ -265,6 +291,7 @@ class Glossary(Directive): } def run(self): + # type: () -> List[nodes.Node] env = self.state.document.settings.env node = addnodes.glossary() node.document = self.state.document @@ -275,7 +302,7 @@ class Glossary(Directive): # be* a definition list. # first, collect single entries - entries = [] + entries = [] # type: List[Tuple[List[Tuple[unicode, unicode, int]], ViewList]] in_definition = True was_empty = True messages = [] @@ -329,7 +356,7 @@ class Glossary(Directive): for terms, definition in entries: termtexts = [] termnodes = [] - system_messages = [] + system_messages = [] # type: List[unicode] for line, source, lineno in terms: parts = split_term_classifiers(line) # parse the term with inline markup @@ -365,9 +392,10 @@ class Glossary(Directive): def token_xrefs(text): + # type: (unicode) -> List[nodes.Node] retnodes = [] pos = 0 - for m in token_re.finditer(text): + for m in token_re.finditer(text): # type: ignore if m.start() > pos: txt = text[pos:m.start()] retnodes.append(nodes.Text(txt, txt)) @@ -390,13 +418,14 @@ class ProductionList(Directive): required_arguments = 1 optional_arguments = 0 final_argument_whitespace = True - option_spec = {} + option_spec = {} # type: Dict def run(self): + # type: () -> List[nodes.Node] env = self.state.document.settings.env objects = env.domaindata['std']['objects'] node = addnodes.productionlist() - messages = [] + messages = [] # type: List[nodes.Node] i = 0 for rule in self.arguments[0].split('\n'): @@ -437,7 +466,7 @@ class StandardDomain(Domain): searchprio=-1), 'envvar': ObjType(l_('environment variable'), 'envvar'), 'cmdoption': ObjType(l_('program option'), 'option'), - } + } # type: Dict[unicode, ObjType] directives = { 'program': Program, @@ -446,7 +475,7 @@ class StandardDomain(Domain): 'envvar': EnvVar, 'glossary': Glossary, 'productionlist': ProductionList, - } + } # type: Dict[unicode, Type[Directive]] roles = { 'option': OptionXRefRole(warn_dangling=True), 'envvar': EnvVarXRefRole(), @@ -463,7 +492,7 @@ class StandardDomain(Domain): warn_dangling=True), # links to labels, without a different title 'keyword': XRefRole(warn_dangling=True), - } + } # type: Dict[unicode, Union[RoleFunction, XRefRole]] initial_data = { 'progoptions': {}, # (program, name) -> docname, labelid @@ -495,9 +524,10 @@ class StandardDomain(Domain): nodes.figure: ('figure', None), nodes.table: ('table', None), nodes.container: ('code-block', None), - } + } # type: Dict[nodes.Node, Tuple[unicode, Callable]] def clear_doc(self, docname): + # type: (unicode) -> None for key, (fn, _l) in list(self.data['progoptions'].items()): if fn == docname: del self.data['progoptions'][key] @@ -515,6 +545,7 @@ class StandardDomain(Domain): del self.data['anonlabels'][key] def merge_domaindata(self, docnames, otherdata): + # type: (List[unicode], Dict) -> None # XXX duplicates? for key, data in otherdata['progoptions'].items(): if data[0] in docnames: @@ -533,10 +564,12 @@ class StandardDomain(Domain): self.data['anonlabels'][key] = data def process_doc(self, env, docname, document): + # type: (BuildEnvironment, unicode, nodes.Node) -> None self.note_citations(env, docname, document) self.note_labels(env, docname, document) def note_citations(self, env, docname, document): + # type: (BuildEnvironment, unicode, nodes.Node) -> None for node in document.traverse(nodes.citation): label = node[0].astext() if label in self.data['citations']: @@ -546,6 +579,7 @@ class StandardDomain(Domain): self.data['citations'][label] = (docname, node['ids'][0]) def note_labels(self, env, docname, document): + # type: (BuildEnvironment, unicode, nodes.Node) -> None labels, anonlabels = self.data['labels'], self.data['anonlabels'] for name, explicit in iteritems(document.nametypes): if not explicit: @@ -585,6 +619,7 @@ class StandardDomain(Domain): def build_reference_node(self, fromdocname, builder, docname, labelid, sectname, rolename, **options): + # type: (unicode, Builder, unicode, unicode, unicode, unicode, Any) -> nodes.Node nodeclass = options.pop('nodeclass', nodes.reference) newnode = nodeclass('', '', internal=True, **options) innernode = nodes.inline(sectname, sectname) @@ -608,6 +643,7 @@ class StandardDomain(Domain): return newnode def resolve_xref(self, env, fromdocname, builder, typ, target, node, contnode): + # type: (BuildEnvironment, unicode, Builder, unicode, unicode, nodes.Node, nodes.Node) -> nodes.Node # NOQA if typ == 'ref': resolver = self._resolve_ref_xref elif typ == 'numref': @@ -624,6 +660,7 @@ class StandardDomain(Domain): return resolver(env, fromdocname, builder, typ, target, node, contnode) def _resolve_ref_xref(self, env, fromdocname, builder, typ, target, node, contnode): + # type: (BuildEnvironment, unicode, Builder, unicode, unicode, nodes.Node, nodes.Node) -> nodes.Node # NOQA if node['refexplicit']: # reference to anonymous label; the reference uses # the supplied link caption @@ -641,6 +678,7 @@ class StandardDomain(Domain): docname, labelid, sectname, 'ref') def _resolve_numref_xref(self, env, fromdocname, builder, typ, target, node, contnode): + # type: (BuildEnvironment, unicode, Builder, unicode, unicode, nodes.Node, nodes.Node) -> nodes.Node # NOQA if target in self.data['labels']: docname, labelid, figname = self.data['labels'].get(target, ('', '', '')) else: @@ -700,6 +738,7 @@ class StandardDomain(Domain): title=title) def _resolve_keyword_xref(self, env, fromdocname, builder, typ, target, node, contnode): + # type: (BuildEnvironment, unicode, Builder, unicode, unicode, nodes.Node, nodes.Node) -> nodes.Node # NOQA # keywords are oddballs: they are referenced by named labels docname, labelid, _ = self.data['labels'].get(target, ('', '', '')) if not docname: @@ -708,13 +747,14 @@ class StandardDomain(Domain): labelid, contnode) def _resolve_option_xref(self, env, fromdocname, builder, typ, target, node, contnode): + # type: (BuildEnvironment, unicode, Builder, unicode, unicode, nodes.Node, nodes.Node) -> nodes.Node # NOQA progname = node.get('std:program') target = target.strip() docname, labelid = self.data['progoptions'].get((progname, target), ('', '')) if not docname: commands = [] - while ws_re.search(target): - subcommand, target = ws_re.split(target, 1) + while ws_re.search(target): # type: ignore + subcommand, target = ws_re.split(target, 1) # type: ignore commands.append(subcommand) progname = "-".join(commands) @@ -729,6 +769,7 @@ class StandardDomain(Domain): labelid, contnode) def _resolve_citation_xref(self, env, fromdocname, builder, typ, target, node, contnode): + # type: (BuildEnvironment, unicode, Builder, unicode, unicode, nodes.Node, nodes.Node) -> nodes.Node # NOQA from sphinx.environment import NoUri docname, labelid = self.data['citations'].get(target, ('', '')) @@ -751,6 +792,7 @@ class StandardDomain(Domain): raise def _resolve_obj_xref(self, env, fromdocname, builder, typ, target, node, contnode): + # type: (BuildEnvironment, unicode, Builder, unicode, unicode, nodes.Node, nodes.Node) -> nodes.Node # NOQA objtypes = self.objtypes_for_role(typ) or [] for objtype in objtypes: if (objtype, target) in self.data['objects']: @@ -764,7 +806,8 @@ class StandardDomain(Domain): labelid, contnode) def resolve_any_xref(self, env, fromdocname, builder, target, node, contnode): - results = [] + # type: (BuildEnvironment, unicode, Builder, unicode, nodes.Node, nodes.Node) -> List[Tuple[unicode, nodes.Node]] # NOQA + results = [] # type: List[Tuple[unicode, nodes.Node]] ltarget = target.lower() # :ref: lowercases its target automatically for role in ('ref', 'option'): # do not try "keyword" res = self.resolve_xref(env, fromdocname, builder, role, @@ -785,6 +828,7 @@ class StandardDomain(Domain): return results def get_objects(self): + # type: () -> Iterator[Tuple[unicode, unicode, unicode, unicode, unicode, int]] # handle the special 'doc' reference here for doc in self.env.all_docs: yield (doc, clean_astext(self.env.titles[doc]), 'doc', doc, '', -1) @@ -802,13 +846,16 @@ class StandardDomain(Domain): yield (name, name, 'label', info[0], info[1], -1) def get_type_name(self, type, primary=False): + # type: (ObjType, bool) -> unicode # never prepend "Default" return type.lname def is_enumerable_node(self, node): + # type: (nodes.Node) -> bool return node.__class__ in self.enumerable_nodes def get_numfig_title(self, node): + # type: (nodes.Node) -> unicode """Get the title of enumerable nodes to refer them using its title""" if self.is_enumerable_node(node): _, title_getter = self.enumerable_nodes.get(node.__class__, (None, None)) @@ -822,6 +869,7 @@ class StandardDomain(Domain): return None def get_figtype(self, node): + # type: (nodes.Node) -> unicode """Get figure type of nodes.""" def has_child(node, cls): return any(isinstance(child, cls) for child in node) @@ -838,6 +886,7 @@ class StandardDomain(Domain): return figtype def get_fignumber(self, env, builder, figtype, docname, target_node): + # type: (BuildEnvironment, Builder, unicode, unicode, nodes.Node) -> Tuple[int, ...] if figtype == 'section': if builder.name == 'latex': return tuple() @@ -861,4 +910,5 @@ class StandardDomain(Domain): def setup(app): + # type: (Sphinx) -> None app.add_domain(StandardDomain) From 23b1c3d5f203972d1d7a254594f0e7ca4baf7b59 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Tue, 8 Nov 2016 17:47:52 +0900 Subject: [PATCH 226/297] Add type-check annotations to sphinx.builders --- sphinx/builders/__init__.py | 61 ++++++++++++++---- sphinx/builders/applehelp.py | 12 +++- sphinx/builders/changes.py | 29 ++++++--- sphinx/builders/devhelp.py | 18 +++++- sphinx/builders/epub.py | 79 ++++++++++++++++------- sphinx/builders/gettext.py | 53 ++++++++++++---- sphinx/builders/html.py | 119 +++++++++++++++++++++++++++-------- sphinx/builders/latex.py | 34 +++++++--- sphinx/builders/linkcheck.py | 47 ++++++++++---- sphinx/builders/manpage.py | 18 +++++- sphinx/builders/qthelp.py | 37 +++++++---- sphinx/builders/texinfo.py | 27 ++++++-- sphinx/builders/text.py | 2 + 13 files changed, 410 insertions(+), 126 deletions(-) diff --git a/sphinx/builders/__init__.py b/sphinx/builders/__init__.py index fe0c9c665..78ce7d89e 100644 --- a/sphinx/builders/__init__.py +++ b/sphinx/builders/__init__.py @@ -22,7 +22,7 @@ from docutils import nodes from sphinx.util import i18n, path_stabilize from sphinx.util.osutil import SEP, relative_uri from sphinx.util.i18n import find_catalog -from sphinx.util.console import bold, darkgreen +from sphinx.util.console import bold, darkgreen # type: ignore from sphinx.util.parallel import ParallelTasks, SerialTasks, make_chunks, \ parallel_available @@ -30,6 +30,15 @@ from sphinx.util.parallel import ParallelTasks, SerialTasks, make_chunks, \ from sphinx import roles # noqa from sphinx import directives # noqa +if False: + # For type annotation + from typing import Any, Callable, Iterable, Sequence, Tuple, Union # NOQA + from sphinx.application import Sphinx # NOQA + from sphinx.config import Config # NOQA + from sphinx.environment import BuildEnvironment # NOQA + from sphinx.util.i18n import CatalogInfo # NOQA + from sphinx.util.tags import Tags # NOQA + class Builder(object): """ @@ -47,7 +56,8 @@ class Builder(object): allow_parallel = False def __init__(self, app): - self.env = app.env + # type: (Sphinx) -> None + self.env = app.env # type: BuildEnvironment self.env.set_versioning_method(self.versioning_method, self.versioning_compare) self.srcdir = app.srcdir @@ -57,11 +67,11 @@ class Builder(object): if not path.isdir(self.doctreedir): os.makedirs(self.doctreedir) - self.app = app - self.warn = app.warn - self.info = app.info - self.config = app.config - self.tags = app.tags + self.app = app # type: Sphinx + self.warn = app.warn # type: Callable + self.info = app.info # type: Callable + self.config = app.config # type: Config + self.tags = app.tags # type: Tags self.tags.add(self.format) self.tags.add(self.name) self.tags.add("format_%s" % self.format) @@ -71,7 +81,7 @@ class Builder(object): self.old_status_iterator = app.old_status_iterator # images that need to be copied over (source -> dest) - self.images = {} + self.images = {} # type: Dict[unicode, unicode] # basename of images directory self.imagedir = "" # relative path to image directory from current docname (used at writing docs) @@ -79,7 +89,7 @@ class Builder(object): # these get set later self.parallel_ok = False - self.finish_tasks = None + self.finish_tasks = None # type: Any # load default translator class self.translator_class = app._translators.get(self.name) @@ -88,12 +98,14 @@ class Builder(object): # helper methods def init(self): + # type: () -> None """Load necessary templates and perform initialization. The default implementation does nothing. """ pass def create_template_bridge(self): + # type: () -> None """Return the template bridge configured.""" if self.config.template_bridge: self.templates = self.app.import_object( @@ -103,6 +115,7 @@ class Builder(object): self.templates = BuiltinTemplateLoader() def get_target_uri(self, docname, typ=None): + # type: (unicode, unicode) -> unicode """Return the target URI for a document name. *typ* can be used to qualify the link characteristic for individual @@ -111,6 +124,7 @@ class Builder(object): raise NotImplementedError def get_relative_uri(self, from_, to, typ=None): + # type: (unicode, unicode, unicode) -> unicode """Return a relative URI between two source filenames. May raise environment.NoUri if there's no way to return a sensible URI. @@ -119,6 +133,7 @@ class Builder(object): self.get_target_uri(to, typ)) def get_outdated_docs(self): + # type: () -> Union[unicode, Iterable[unicode]] """Return an iterable of output files that are outdated, or a string describing what an update build will build. @@ -128,9 +143,10 @@ class Builder(object): """ raise NotImplementedError - supported_image_types = [] + supported_image_types = [] # type: List[unicode] def post_process_images(self, doctree): + # type: (nodes.Node) -> None """Pick the best candidate for all image URIs.""" for node in doctree.traverse(nodes.image): if '?' in node['candidates']: @@ -157,6 +173,7 @@ class Builder(object): # compile po methods def compile_catalogs(self, catalogs, message): + # type: (Set[CatalogInfo], unicode) -> None if not self.config.gettext_auto_build: return @@ -170,6 +187,7 @@ class Builder(object): catalog.write_mo(self.config.language) def compile_all_catalogs(self): + # type: () -> None catalogs = i18n.find_catalog_source_files( [path.join(self.srcdir, x) for x in self.config.locale_dirs], self.config.language, @@ -180,6 +198,7 @@ class Builder(object): self.compile_catalogs(catalogs, message) def compile_specific_catalogs(self, specified_files): + # type: (List[unicode]) -> None def to_domain(fpath): docname, _ = path.splitext(path_stabilize(fpath)) dom = find_catalog(docname, self.config.gettext_compact) @@ -196,6 +215,7 @@ class Builder(object): self.compile_catalogs(catalogs, message) def compile_update_catalogs(self): + # type: () -> None catalogs = i18n.find_catalog_source_files( [path.join(self.srcdir, x) for x in self.config.locale_dirs], self.config.language, @@ -207,16 +227,19 @@ class Builder(object): # build methods def build_all(self): + # type: () -> None """Build all source files.""" self.build(None, summary='all source files', method='all') def build_specific(self, filenames): + # type: (List[unicode]) -> None """Only rebuild as much as needed for changes in the *filenames*.""" # bring the filenames to the canonical format, that is, # relative to the source directory and without source_suffix. dirlen = len(self.srcdir) + 1 to_write = [] - suffixes = tuple(self.config.source_suffix) + suffixes = None # type: Tuple[unicode] + suffixes = tuple(self.config.source_suffix) # type: ignore for filename in filenames: filename = path.normpath(path.abspath(filename)) if not filename.startswith(self.srcdir): @@ -240,6 +263,7 @@ class Builder(object): 'line' % len(to_write)) def build_update(self): + # type: () -> None """Only rebuild what was changed or added since last build.""" to_build = self.get_outdated_docs() if isinstance(to_build, str): @@ -251,6 +275,7 @@ class Builder(object): 'out of date' % len(to_build)) def build(self, docnames, summary=None, method='update'): + # type: (Iterable[unicode], unicode, unicode) -> None """Main build method. First updates the environment, and then calls :meth:`write`. @@ -328,6 +353,7 @@ class Builder(object): self.finish_tasks.join() def write(self, build_docnames, updated_docnames, method='update'): + # type: (Iterable[unicode], Sequence[unicode], unicode) -> None if build_docnames is None or build_docnames == ['__all__']: # build_all build_docnames = self.env.found_docs @@ -349,7 +375,7 @@ class Builder(object): self.prepare_writing(docnames) self.info('done') - warnings = [] + warnings = [] # type: List[Tuple[Tuple, Dict]] self.env.set_warnfunc(lambda *args, **kwargs: warnings.append((args, kwargs))) if self.parallel_ok: # number of subprocesses is parallel-1 because the main process @@ -361,6 +387,7 @@ class Builder(object): self.env.set_warnfunc(self.warn) def _write_serial(self, docnames, warnings): + # type: (Sequence[unicode], List[Tuple[Tuple, Dict]]) -> None for docname in self.app.status_iterator( docnames, 'writing output... ', darkgreen, len(docnames)): doctree = self.env.get_and_resolve_doctree(docname, self) @@ -370,7 +397,9 @@ class Builder(object): self.warn(*warning, **kwargs) def _write_parallel(self, docnames, warnings, nproc): + # type: (Iterable[unicode], List[Tuple[Tuple, Dict]], int) -> None def write_process(docs): + # type: (List[Tuple[unicode, nodes.Node]]) -> List[Tuple[Tuple, Dict]] local_warnings = [] def warnfunc(*args, **kwargs): @@ -384,7 +413,7 @@ class Builder(object): warnings.extend(wlist) # warm up caches/compile templates using the first document - firstname, docnames = docnames[0], docnames[1:] + firstname, docnames = docnames[0], docnames[1:] # type: ignore doctree = self.env.get_and_resolve_doctree(firstname, self) self.write_doc_serialized(firstname, doctree) self.write_doc(firstname, doctree) @@ -409,20 +438,24 @@ class Builder(object): self.warn(*warning, **kwargs) def prepare_writing(self, docnames): + # type: (Set[unicode]) -> None """A place where you can add logic before :meth:`write_doc` is run""" raise NotImplementedError def write_doc(self, docname, doctree): + # type: (unicode, nodes.Node) -> None """Where you actually write something to the filesystem.""" raise NotImplementedError def write_doc_serialized(self, docname, doctree): + # type: (unicode, nodes.Node) -> None """Handle parts of write_doc that must be called in the main process if parallel build is active. """ pass def finish(self): + # type: () -> None """Finish the building process. The default implementation does nothing. @@ -430,6 +463,7 @@ class Builder(object): pass def cleanup(self): + # type: () -> None """Cleanup any resources. The default implementation does nothing. @@ -437,6 +471,7 @@ class Builder(object): pass def get_builder_config(self, option, default): + # type: (unicode, unicode) -> Any """Return a builder specific option. This method allows customization of common builder settings by diff --git a/sphinx/builders/applehelp.py b/sphinx/builders/applehelp.py index 7db086953..c674204fc 100644 --- a/sphinx/builders/applehelp.py +++ b/sphinx/builders/applehelp.py @@ -19,7 +19,7 @@ import shlex from sphinx.builders.html import StandaloneHTMLBuilder from sphinx.config import string_classes from sphinx.util.osutil import copyfile, ensuredir, make_filename -from sphinx.util.console import bold +from sphinx.util.console import bold # type: ignore from sphinx.util.fileutil import copy_asset from sphinx.util.pycompat import htmlescape from sphinx.util.matching import Matcher @@ -28,10 +28,13 @@ from sphinx.errors import SphinxError import plistlib import subprocess +if False: + # For type annotation + from sphinx.application import Sphinx # NOQA # Use plistlib.dump in 3.4 and above try: - write_plist = plistlib.dump + write_plist = plistlib.dump # type: ignore except AttributeError: write_plist = plistlib.writePlist @@ -83,6 +86,7 @@ class AppleHelpBuilder(StandaloneHTMLBuilder): search = False def init(self): + # type: () -> None super(AppleHelpBuilder, self).init() # the output files for HTML help must be .html only self.out_suffix = '.html' @@ -101,12 +105,14 @@ class AppleHelpBuilder(StandaloneHTMLBuilder): self.config.applehelp_locale + '.lproj') def handle_finish(self): + # type: () -> None super(AppleHelpBuilder, self).handle_finish() self.finish_tasks.add_task(self.copy_localized_files) self.finish_tasks.add_task(self.build_helpbook) def copy_localized_files(self): + # type: () -> None source_dir = path.join(self.confdir, self.config.applehelp_locale + '.lproj') target_dir = self.outdir @@ -120,6 +126,7 @@ class AppleHelpBuilder(StandaloneHTMLBuilder): self.info('done') def build_helpbook(self): + # type: () -> None contents_dir = path.join(self.bundle_path, 'Contents') resources_dir = path.join(contents_dir, 'Resources') language_dir = path.join(resources_dir, @@ -264,6 +271,7 @@ class AppleHelpBuilder(StandaloneHTMLBuilder): def setup(app): + # type: (Sphinx) -> None app.setup_extension('sphinx.builders.html') app.add_builder(AppleHelpBuilder) diff --git a/sphinx/builders/changes.py b/sphinx/builders/changes.py index 1bccb67d9..034722929 100644 --- a/sphinx/builders/changes.py +++ b/sphinx/builders/changes.py @@ -19,10 +19,15 @@ from sphinx.locale import _ from sphinx.theming import Theme from sphinx.builders import Builder from sphinx.util.osutil import ensuredir, os_path -from sphinx.util.console import bold +from sphinx.util.console import bold # type: ignore from sphinx.util.fileutil import copy_asset_file from sphinx.util.pycompat import htmlescape +if False: + # For type annotation + from typing import Any, Tuple # NOQA + from sphinx.application import Sphinx # NOQA + class ChangesBuilder(Builder): """ @@ -31,6 +36,7 @@ class ChangesBuilder(Builder): name = 'changes' def init(self): + # type: () -> None self.create_template_bridge() Theme.init_themes(self.confdir, self.config.html_theme_path, warn=self.warn) @@ -38,19 +44,21 @@ class ChangesBuilder(Builder): self.templates.init(self, self.theme) def get_outdated_docs(self): + # type: () -> unicode return self.outdir typemap = { 'versionadded': 'added', 'versionchanged': 'changed', 'deprecated': 'deprecated', - } + } # type: Dict[unicode, unicode] def write(self, *ignored): + # type: (Any) -> None version = self.config.version - libchanges = {} - apichanges = [] - otherchanges = {} + libchanges = {} # type: Dict[unicode, List[Tuple[unicode, unicode, int]]] + apichanges = [] # type: List[Tuple[unicode, unicode, int]] + otherchanges = {} # type: Dict[Tuple[unicode, unicode], List[Tuple[unicode, unicode, int]]] # NOQA if version not in self.env.versionchanges: self.info(bold('no changes in version %s.' % version)) return @@ -101,9 +109,9 @@ class ChangesBuilder(Builder): 'show_copyright': self.config.html_show_copyright, 'show_sphinx': self.config.html_show_sphinx, } - with codecs.open(path.join(self.outdir, 'index.html'), 'w', 'utf8') as f: + with codecs.open(path.join(self.outdir, 'index.html'), 'w', 'utf8') as f: # type: ignore # NOQA f.write(self.templates.render('changes/frameset.html', ctx)) - with codecs.open(path.join(self.outdir, 'changes.html'), 'w', 'utf8') as f: + with codecs.open(path.join(self.outdir, 'changes.html'), 'w', 'utf8') as f: # type: ignore # NOQA f.write(self.templates.render('changes/versionchanges.html', ctx)) hltext = ['.. versionadded:: %s' % version, @@ -120,7 +128,7 @@ class ChangesBuilder(Builder): self.info(bold('copying source files...')) for docname in self.env.all_docs: - with codecs.open(self.env.doc2path(docname), 'r', + with codecs.open(self.env.doc2path(docname), 'r', # type: ignore self.env.config.source_encoding) as f: try: lines = f.readlines() @@ -129,7 +137,7 @@ class ChangesBuilder(Builder): continue targetfn = path.join(self.outdir, 'rst', os_path(docname)) + '.html' ensuredir(path.dirname(targetfn)) - with codecs.open(targetfn, 'w', 'utf-8') as f: + with codecs.open(targetfn, 'w', 'utf-8') as f: # type: ignore text = ''.join(hl(i+1, line) for (i, line) in enumerate(lines)) ctx = { 'filename': self.env.doc2path(docname, None), @@ -144,6 +152,7 @@ class ChangesBuilder(Builder): self.outdir) def hl(self, text, version): + # type: (unicode, unicode) -> unicode text = htmlescape(text) for directive in ['versionchanged', 'versionadded', 'deprecated']: text = text.replace('.. %s:: %s' % (directive, version), @@ -151,8 +160,10 @@ class ChangesBuilder(Builder): return text def finish(self): + # type: () -> None pass def setup(app): + # type: (Sphinx) -> None app.add_builder(ChangesBuilder) diff --git a/sphinx/builders/devhelp.py b/sphinx/builders/devhelp.py index fd6f3400e..f0b313e7f 100644 --- a/sphinx/builders/devhelp.py +++ b/sphinx/builders/devhelp.py @@ -25,7 +25,12 @@ from sphinx.builders.html import StandaloneHTMLBuilder try: import xml.etree.ElementTree as etree except ImportError: - import lxml.etree as etree + import lxml.etree as etree # type: ignore + +if False: + # For type annotation + from typing import Any # NOQA + from sphinx.application import Sphinx # NOQA class DevhelpBuilder(StandaloneHTMLBuilder): @@ -44,14 +49,17 @@ class DevhelpBuilder(StandaloneHTMLBuilder): embedded = True def init(self): + # type: () -> None StandaloneHTMLBuilder.init(self) self.out_suffix = '.html' self.link_suffix = '.html' def handle_finish(self): + # type: () -> None self.build_devhelp(self.outdir, self.config.devhelp_basename) def build_devhelp(self, outdir, outname): + # type: (unicode, unicode) -> None self.info('dumping devhelp index...') # Basic info @@ -69,6 +77,7 @@ class DevhelpBuilder(StandaloneHTMLBuilder): self.config.master_doc, self, prune_toctrees=False) def write_toc(node, parent): + # type: (nodes.Node, nodes.Node) -> None if isinstance(node, addnodes.compact_paragraph) or \ isinstance(node, nodes.bullet_list): for subnode in node: @@ -82,6 +91,7 @@ class DevhelpBuilder(StandaloneHTMLBuilder): parent.attrib['name'] = node.astext() def istoctree(node): + # type: (nodes.Node) -> bool return isinstance(node, addnodes.compact_paragraph) and \ 'toctree' in node @@ -93,6 +103,7 @@ class DevhelpBuilder(StandaloneHTMLBuilder): index = self.env.create_index(self) def write_index(title, refs, subitems): + # type: (unicode, List[Any], Any) -> None if len(refs) == 0: pass elif len(refs) == 1: @@ -105,7 +116,7 @@ class DevhelpBuilder(StandaloneHTMLBuilder): link=ref[1]) if subitems: - parent_title = re.sub(r'\s*\(.*\)\s*$', '', title) + parent_title = re.sub(r'\s*\(.*\)\s*$', '', title) # type: ignore for subitem in subitems: write_index("%s %s" % (parent_title, subitem[0]), subitem[1], []) @@ -116,11 +127,12 @@ class DevhelpBuilder(StandaloneHTMLBuilder): # Dump the XML file xmlfile = path.join(outdir, outname + '.devhelp.gz') - with gzip.open(xmlfile, 'w') as f: + with gzip.open(xmlfile, 'w') as f: # type: ignore tree.write(f, 'utf-8') def setup(app): + # type: (Sphinx) -> None app.setup_extension('sphinx.builders.html') app.add_builder(DevhelpBuilder) diff --git a/sphinx/builders/epub.py b/sphinx/builders/epub.py index b4b657468..f9abd53fb 100644 --- a/sphinx/builders/epub.py +++ b/sphinx/builders/epub.py @@ -31,7 +31,12 @@ from sphinx import addnodes from sphinx.builders.html import StandaloneHTMLBuilder from sphinx.util.osutil import ensuredir, copyfile, make_filename, EEXIST from sphinx.util.smartypants import sphinx_smarty_pants as ssp -from sphinx.util.console import brown +from sphinx.util.console import brown # type: ignore + +if False: + # For type annotation + from typing import Any, Tuple # NOQA + from sphinx.application import Sphinx # NOQA # (Fragment) templates from which the metainfo files content.opf, toc.ncx, @@ -159,7 +164,7 @@ MEDIA_TYPES = { '.otf': 'application/x-font-otf', '.ttf': 'application/x-font-ttf', '.woff': 'application/font-woff', -} +} # type: Dict[unicode, unicode] VECTOR_GRAPHICS_EXTENSIONS = ('.svg',) @@ -221,6 +226,7 @@ class EpubBuilder(StandaloneHTMLBuilder): refuri_re = REFURI_RE def init(self): + # type: () -> None StandaloneHTMLBuilder.init(self) # the output files for epub must be .html only self.out_suffix = '.xhtml' @@ -230,10 +236,12 @@ class EpubBuilder(StandaloneHTMLBuilder): self.use_index = self.get_builder_config('use_index', 'epub') def get_theme_config(self): + # type: () -> Tuple[unicode, Dict] return self.config.epub_theme, self.config.epub_theme_options # generic support functions def make_id(self, name, id_cache={}): + # type: (unicode, Dict[unicode, unicode]) -> unicode # id_cache is intentionally mutable """Return a unique id for name.""" id = id_cache.get(name) @@ -243,6 +251,7 @@ class EpubBuilder(StandaloneHTMLBuilder): return id def esc(self, name): + # type: (unicode) -> unicode """Replace all characters not allowed in text an attribute values.""" # Like cgi.escape, but also replace apostrophe name = name.replace('&', '&') @@ -253,6 +262,7 @@ class EpubBuilder(StandaloneHTMLBuilder): return name def get_refnodes(self, doctree, result): + # type: (nodes.Node, List[Dict[unicode, Any]]) -> List[Dict[unicode, Any]] """Collect section titles, their depth in the toc and the refuri.""" # XXX: is there a better way than checking the attribute # toctree-l[1-8] on the parent node? @@ -276,6 +286,7 @@ class EpubBuilder(StandaloneHTMLBuilder): return result def get_toc(self): + # type: () -> None """Get the total table of contents, containing the master_doc and pre and post files not managed by sphinx. """ @@ -291,6 +302,7 @@ class EpubBuilder(StandaloneHTMLBuilder): self.toc_add_files(self.refnodes) def toc_add_files(self, refnodes): + # type: (List[nodes.Node]) -> None """Add the master_doc, pre and post files to a list of refnodes. """ refnodes.insert(0, { @@ -313,10 +325,12 @@ class EpubBuilder(StandaloneHTMLBuilder): }) def fix_fragment(self, prefix, fragment): + # type: (unicode, unicode) -> unicode """Return a href/id attribute with colons replaced by hyphens.""" return prefix + fragment.replace(':', '-') def fix_ids(self, tree): + # type: (nodes.Node) -> None """Replace colons with hyphens in href and id attributes. Some readers crash because they interpret the part as a @@ -337,9 +351,11 @@ class EpubBuilder(StandaloneHTMLBuilder): node.attributes['ids'] = newids def add_visible_links(self, tree, show_urls='inline'): + # type: (nodes.Node, unicode) -> None """Add visible link targets for external links""" def make_footnote_ref(doc, label): + # type: (nodes.Node, unicode) -> nodes.footnote_reference """Create a footnote_reference node with children""" footnote_ref = nodes.footnote_reference('[#]_') footnote_ref.append(nodes.Text(label)) @@ -347,6 +363,7 @@ class EpubBuilder(StandaloneHTMLBuilder): return footnote_ref def make_footnote(doc, label, uri): + # type: (nodes.Node, unicode, unicode) -> nodes.footnote """Create a footnote node with children""" footnote = nodes.footnote(uri) para = nodes.paragraph() @@ -357,6 +374,7 @@ class EpubBuilder(StandaloneHTMLBuilder): return footnote def footnote_spot(tree): + # type: (nodes.Node) -> Tuple[nodes.Node, int] """Find or create a spot to place footnotes. The function returns the tuple (parent, index).""" @@ -406,6 +424,7 @@ class EpubBuilder(StandaloneHTMLBuilder): fn_idx += 1 def write_doc(self, docname, doctree): + # type: (unicode, nodes.Node) -> None """Write one document file. This method is overwritten in order to fix fragment identifiers @@ -416,6 +435,7 @@ class EpubBuilder(StandaloneHTMLBuilder): return StandaloneHTMLBuilder.write_doc(self, docname, doctree) def fix_genindex(self, tree): + # type: (nodes.Node) -> None """Fix href attributes for genindex pages.""" # XXX: modifies tree inline # Logic modeled from themes/basic/genindex.html @@ -434,11 +454,13 @@ class EpubBuilder(StandaloneHTMLBuilder): self.fix_fragment(m.group(1), m.group(2))) def is_vector_graphics(self, filename): + # type: (unicode) -> bool """Does the filename extension indicate a vector graphic format?""" ext = path.splitext(filename)[-1] return ext in VECTOR_GRAPHICS_EXTENSIONS def copy_image_files_pil(self): + # type: () -> None """Copy images using the PIL. The method tries to read and write the files with the PIL, converting the format and resizing the image if necessary/possible. @@ -477,6 +499,7 @@ class EpubBuilder(StandaloneHTMLBuilder): (path.join(self.srcdir, src), err)) def copy_image_files(self): + # type: () -> None """Copy image files to destination directory. This overwritten method can use the PIL to convert image files. """ @@ -491,10 +514,12 @@ class EpubBuilder(StandaloneHTMLBuilder): super(EpubBuilder, self).copy_image_files() def copy_download_files(self): + # type: () -> None pass def handle_page(self, pagename, addctx, templatename='page.html', outfilename=None, event_arg=None): + # type: (unicode, Dict, unicode, unicode, Any) -> None """Create a rendered page. This method is overwritten for genindex pages in order to fix href link @@ -510,6 +535,7 @@ class EpubBuilder(StandaloneHTMLBuilder): # Finish by building the epub file def handle_finish(self): + # type: () -> None """Create the metainfo files and finally the epub.""" self.get_toc() self.build_mimetype(self.outdir, 'mimetype') @@ -519,12 +545,14 @@ class EpubBuilder(StandaloneHTMLBuilder): self.build_epub(self.outdir, self.config.epub_basename + '.epub') def build_mimetype(self, outdir, outname): + # type: (unicode, unicode) -> None """Write the metainfo file mimetype.""" self.info('writing %s file...' % outname) - with codecs.open(path.join(outdir, outname), 'w', 'utf-8') as f: + with codecs.open(path.join(outdir, outname), 'w', 'utf-8') as f: # type: ignore f.write(self.mimetype_template) def build_container(self, outdir, outname): + # type: (unicode, unicode) -> None """Write the metainfo file META-INF/cointainer.xml.""" self.info('writing %s file...' % outname) fn = path.join(outdir, outname) @@ -533,14 +561,15 @@ class EpubBuilder(StandaloneHTMLBuilder): except OSError as err: if err.errno != EEXIST: raise - with codecs.open(path.join(outdir, outname), 'w', 'utf-8') as f: - f.write(self.container_template) + with codecs.open(path.join(outdir, outname), 'w', 'utf-8') as f: # type: ignore + f.write(self.container_template) # type: ignore def content_metadata(self, files, spine, guide): + # type: (List[unicode], Any, Any) -> Dict[unicode, Any] """Create a dictionary with all metadata for the content.opf file properly escaped. """ - metadata = {} + metadata = {} # type: Dict[unicode, Any] metadata['title'] = self.esc(self.config.epub_title) metadata['author'] = self.esc(self.config.epub_author) metadata['uid'] = self.esc(self.config.epub_uid) @@ -556,6 +585,7 @@ class EpubBuilder(StandaloneHTMLBuilder): return metadata def build_content(self, outdir, outname): + # type: (unicode, unicode) -> None """Write the metainfo file content.opf It contains bibliographic data, a file list and the spine (the reading order). """ @@ -565,8 +595,8 @@ class EpubBuilder(StandaloneHTMLBuilder): if not outdir.endswith(os.sep): outdir += os.sep olen = len(outdir) - projectfiles = [] - self.files = [] + projectfiles = [] # type: List[unicode] + self.files = [] # type: List[unicode] self.ignored_files = ['.buildinfo', 'mimetype', 'content.opf', 'toc.ncx', 'META-INF/container.xml', 'Thumbs.db', 'ehthumbs.db', '.DS_Store', @@ -679,16 +709,17 @@ class EpubBuilder(StandaloneHTMLBuilder): 'title': self.guide_titles['toc'], 'uri': self.esc(self.refnodes[0]['refuri']) }) - projectfiles = '\n'.join(projectfiles) - spine = '\n'.join(spine) - guide = '\n'.join(guide) + projectfiles = '\n'.join(projectfiles) # type: ignore + spine = '\n'.join(spine) # type: ignore + guide = '\n'.join(guide) # type: ignore # write the project file - with codecs.open(path.join(outdir, outname), 'w', 'utf-8') as f: - f.write(content_tmpl % + with codecs.open(path.join(outdir, outname), 'w', 'utf-8') as f: # type: ignore + f.write(content_tmpl % # type: ignore self.content_metadata(projectfiles, spine, guide)) def new_navpoint(self, node, level, incr=True): + # type: (nodes.Node, int, bool) -> unicode """Create a new entry in the toc from the node at given level.""" # XXX Modifies the node if incr: @@ -700,6 +731,7 @@ class EpubBuilder(StandaloneHTMLBuilder): return self.navpoint_template % node def insert_subnav(self, node, subnav): + # type: (nodes.Node, unicode) -> unicode """Insert nested navpoints for given node. The node and subnav are already rendered to text. @@ -709,6 +741,7 @@ class EpubBuilder(StandaloneHTMLBuilder): return '\n'.join(nlist) def build_navpoints(self, nodes): + # type: (nodes.Node) -> unicode """Create the toc navigation structure. Subelements of a node are nested inside the navpoint. For nested nodes @@ -752,10 +785,11 @@ class EpubBuilder(StandaloneHTMLBuilder): return '\n'.join(navlist) def toc_metadata(self, level, navpoints): + # type: (int, List[unicode]) -> Dict[unicode, Any] """Create a dictionary with all metadata for the toc.ncx file properly escaped. """ - metadata = {} + metadata = {} # type: Dict[unicode, Any] metadata['uid'] = self.config.epub_uid metadata['title'] = self.config.epub_title metadata['level'] = level @@ -763,6 +797,7 @@ class EpubBuilder(StandaloneHTMLBuilder): return metadata def build_toc(self, outdir, outname): + # type: (unicode, unicode) -> None """Write the metainfo file toc.ncx.""" self.info('writing %s file...' % outname) @@ -778,29 +813,31 @@ class EpubBuilder(StandaloneHTMLBuilder): navpoints = self.build_navpoints(refnodes) level = max(item['level'] for item in self.refnodes) level = min(level, self.config.epub_tocdepth) - with codecs.open(path.join(outdir, outname), 'w', 'utf-8') as f: - f.write(self.toc_template % self.toc_metadata(level, navpoints)) + with codecs.open(path.join(outdir, outname), 'w', 'utf-8') as f: # type: ignore + f.write(self.toc_template % self.toc_metadata(level, navpoints)) # type: ignore def build_epub(self, outdir, outname): + # type: (unicode, unicode) -> None """Write the epub file. It is a zip file with the mimetype file stored uncompressed as the first entry. """ self.info('writing %s file...' % outname) - projectfiles = ['META-INF/container.xml', 'content.opf', 'toc.ncx'] \ - + self.files - epub = zipfile.ZipFile(path.join(outdir, outname), 'w', + projectfiles = ['META-INF/container.xml', 'content.opf', 'toc.ncx'] # type: List[unicode] # NOQA + projectfiles.extend(self.files) + epub = zipfile.ZipFile(path.join(outdir, outname), 'w', # type: ignore zipfile.ZIP_DEFLATED) - epub.write(path.join(outdir, 'mimetype'), 'mimetype', + epub.write(path.join(outdir, 'mimetype'), 'mimetype', # type: ignore zipfile.ZIP_STORED) for file in projectfiles: fp = path.join(outdir, file) - epub.write(fp, file, zipfile.ZIP_DEFLATED) + epub.write(fp, file, zipfile.ZIP_DEFLATED) # type: ignore epub.close() def setup(app): + # type: (Sphinx) -> None app.setup_extension('sphinx.builders.html') app.add_builder(EpubBuilder) diff --git a/sphinx/builders/gettext.py b/sphinx/builders/gettext.py index e118cde99..dbe696a0b 100644 --- a/sphinx/builders/gettext.py +++ b/sphinx/builders/gettext.py @@ -26,9 +26,16 @@ from sphinx.util.tags import Tags from sphinx.util.nodes import extract_messages, traverse_translatable_index from sphinx.util.osutil import safe_relpath, ensuredir, canon_path from sphinx.util.i18n import find_catalog -from sphinx.util.console import darkgreen, purple, bold +from sphinx.util.console import darkgreen, purple, bold # type: ignore from sphinx.locale import pairindextypes +if False: + # For type annotation + from typing import Any, Iterable, Tuple # NOQA + from docutils import nodes # NOQA + from sphinx.util.i18n import CatalogInfo # NOQA + from sphinx.application import Sphinx # NOQA + POHEADER = r""" # SOME DESCRIPTIVE TITLE. # Copyright (C) %(copyright)s @@ -55,10 +62,14 @@ class Catalog(object): """Catalog of translatable messages.""" def __init__(self): - self.messages = [] # retain insertion order, a la OrderedDict - self.metadata = {} # msgid -> file, line, uid + # type: () -> None + self.messages = [] # type: List[unicode] + # retain insertion order, a la OrderedDict + self.metadata = {} # type: Dict[unicode, List[Tuple[unicode, int, unicode]]] + # msgid -> file, line, uid def add(self, msg, origin): + # type: (unicode, MsgOrigin) -> None if not hasattr(origin, 'uid'): # Nodes that are replicated like todo don't have a uid, # however i18n is also unnecessary. @@ -75,6 +86,7 @@ class MsgOrigin(object): """ def __init__(self, source, line): + # type: (unicode, int) -> None self.source = source self.line = line self.uid = uuid4().hex @@ -87,6 +99,7 @@ class I18nTags(Tags): always returns True value even if no tags are defined. """ def eval_condition(self, condition): + # type: (Any) -> bool return True @@ -99,27 +112,34 @@ class I18nBuilder(Builder): versioning_compare = None # be set by `gettext_uuid` def __init__(self, app): + # type: (Sphinx) -> None self.versioning_compare = app.env.config.gettext_uuid super(I18nBuilder, self).__init__(app) def init(self): + # type: () -> None Builder.init(self) self.tags = I18nTags() - self.catalogs = defaultdict(Catalog) + self.catalogs = defaultdict(Catalog) # type: defaultdict[unicode, Catalog] def get_target_uri(self, docname, typ=None): + # type: (unicode, unicode) -> unicode return '' def get_outdated_docs(self): + # type: () -> Set[unicode] return self.env.found_docs def prepare_writing(self, docnames): + # type: (Set[unicode]) -> None return def compile_catalogs(self, catalogs, message): + # type: (Set[CatalogInfo], unicode) -> None return def write_doc(self, docname, doctree): + # type: (unicode, nodes.Node) -> None catalog = self.catalogs[find_catalog(docname, self.config.gettext_compact)] @@ -153,13 +173,16 @@ if source_date_epoch is not None: class LocalTimeZone(tzinfo): def __init__(self, *args, **kw): - super(LocalTimeZone, self).__init__(*args, **kw) + # type: (Any, Any) -> None + super(LocalTimeZone, self).__init__(*args, **kw) # type: ignore self.tzdelta = tzdelta def utcoffset(self, dt): + # type: (datetime) -> timedelta return self.tzdelta def dst(self, dt): + # type: (datetime) -> timedelta return timedelta(0) @@ -173,11 +196,13 @@ class MessageCatalogBuilder(I18nBuilder): name = 'gettext' def init(self): + # type: () -> None I18nBuilder.init(self) self.create_template_bridge() self.templates.init(self) def _collect_templates(self): + # type: () -> Set[unicode] template_files = set() for template_path in self.config.templates_path: tmpl_abs_path = path.join(self.app.srcdir, template_path) @@ -189,6 +214,7 @@ class MessageCatalogBuilder(I18nBuilder): return template_files def _extract_from_template(self): + # type: () -> None files = self._collect_templates() self.info(bold('building [%s]: ' % self.name), nonl=1) self.info('targets for %d template files' % len(files)) @@ -197,23 +223,25 @@ class MessageCatalogBuilder(I18nBuilder): for template in self.app.status_iterator( files, 'reading templates... ', purple, len(files)): - with open(template, 'r', encoding='utf-8') as f: + with open(template, 'r', encoding='utf-8') as f: # type: ignore context = f.read() for line, meth, msg in extract_translations(context): origin = MsgOrigin(template, line) self.catalogs['sphinx'].add(msg, origin) def build(self, docnames, summary=None, method='update'): + # type: (Iterable[unicode], unicode, unicode) -> None self._extract_from_template() I18nBuilder.build(self, docnames, summary, method) def finish(self): + # type: () -> None I18nBuilder.finish(self) data = dict( version = self.config.version, copyright = self.config.copyright, project = self.config.project, - ctime = datetime.fromtimestamp( + ctime = datetime.fromtimestamp( # type: ignore timestamp, ltz).strftime('%Y-%m-%d %H:%M%z'), ) for textdomain, catalog in self.app.status_iterator( @@ -224,31 +252,32 @@ class MessageCatalogBuilder(I18nBuilder): ensuredir(path.join(self.outdir, path.dirname(textdomain))) pofn = path.join(self.outdir, textdomain + '.pot') - with open(pofn, 'w', encoding='utf-8') as pofile: - pofile.write(POHEADER % data) + with open(pofn, 'w', encoding='utf-8') as pofile: # type: ignore + pofile.write(POHEADER % data) # type: ignore for message in catalog.messages: positions = catalog.metadata[message] if self.config.gettext_location: # generate "#: file1:line1\n#: file2:line2 ..." - pofile.write("#: %s\n" % "\n#: ".join( + pofile.write("#: %s\n" % "\n#: ".join( # type: ignore "%s:%s" % (canon_path( safe_relpath(source, self.outdir)), line) for source, line, _ in positions)) if self.config.gettext_uuid: # generate "# uuid1\n# uuid2\n ..." - pofile.write("# %s\n" % "\n# ".join( + pofile.write("# %s\n" % "\n# ".join( # type: ignore uid for _, _, uid in positions)) # message contains *one* line of text ready for translation message = message.replace('\\', r'\\'). \ replace('"', r'\"'). \ replace('\n', '\\n"\n"') - pofile.write('msgid "%s"\nmsgstr ""\n\n' % message) + pofile.write('msgid "%s"\nmsgstr ""\n\n' % message) # type: ignore def setup(app): + # type: (Sphinx) -> None app.add_builder(MessageCatalogBuilder) app.add_config_value('gettext_compact', True, 'gettext') diff --git a/sphinx/builders/html.py b/sphinx/builders/html.py index e13d752d7..d5d522dd0 100644 --- a/sphinx/builders/html.py +++ b/sphinx/builders/html.py @@ -19,6 +19,7 @@ from hashlib import md5 from six import iteritems, text_type, string_types from six.moves import cPickle as pickle + from docutils import nodes from docutils.io import DocTreeInput, StringOutput from docutils.core import Publisher @@ -41,10 +42,16 @@ from sphinx.theming import Theme from sphinx.builders import Builder from sphinx.application import ENV_PICKLE_FILENAME from sphinx.highlighting import PygmentsBridge -from sphinx.util.console import bold, darkgreen, brown +from sphinx.util.console import bold, darkgreen, brown # type: ignore from sphinx.writers.html import HTMLWriter, HTMLTranslator, \ SmartyPantsHTMLTranslator +if False: + # For type annotation + from typing import Any, Iterable, Iterator, Tuple, Union # NOQA + from sphinx.domains import Domain, Index # NOQA + from sphinx.application import Sphinx # NOQA + #: the filename for the inventory of objects INVENTORY_FILENAME = 'objects.inv' #: the filename for the "last build" file (for serializing builders) @@ -52,6 +59,7 @@ LAST_BUILD_FILENAME = 'last_build' def get_stable_hash(obj): + # type: (Any) -> unicode """ Return a stable hash for a Python data structure. We can't just use the md5 of str(obj) since for example dictionary items are enumerated @@ -85,13 +93,17 @@ class StandaloneHTMLBuilder(Builder): allow_sharp_as_current_path = True embedded = False # for things like HTML help or Qt help: suppresses sidebar search = True # for things like HTML help and Apple help: suppress search + use_index = False download_support = True # enable download role # This is a class attribute because it is mutated by Sphinx.add_javascript. script_files = ['_static/jquery.js', '_static/underscore.js', - '_static/doctools.js'] + '_static/doctools.js'] # type: List[unicode] # Dito for this one. - css_files = [] + css_files = [] # type: List[unicode] + + imgpath = None # type: unicode + domain_indices = [] # type: List[Tuple[unicode, Index, unicode, bool]] default_sidebars = ['localtoc.html', 'relations.html', 'sourcelink.html', 'searchbox.html'] @@ -100,15 +112,16 @@ class StandaloneHTMLBuilder(Builder): _publisher = None def init(self): + # type: () -> None # a hash of all config values that, if changed, cause a full rebuild - self.config_hash = '' - self.tags_hash = '' + self.config_hash = '' # type: unicode + self.tags_hash = '' # type: unicode # basename of images directory self.imagedir = '_images' # section numbers for headings in the currently visited document - self.secnumbers = {} + self.secnumbers = {} # type: Dict[unicode, Tuple[int, ...]] # currently written docname - self.current_docname = None + self.current_docname = None # type: unicode self.init_templates() self.init_highlighter() @@ -127,6 +140,7 @@ class StandaloneHTMLBuilder(Builder): self.use_index = self.get_builder_config('use_index', 'html') def _get_translations_js(self): + # type: () -> unicode candidates = [path.join(package_dir, 'locale', self.config.language, 'LC_MESSAGES', 'sphinx.js'), path.join(sys.prefix, 'share/sphinx/locale', @@ -140,9 +154,11 @@ class StandaloneHTMLBuilder(Builder): return None def get_theme_config(self): + # type: () -> Tuple[unicode, Dict] return self.config.html_theme, self.config.html_theme_options def init_templates(self): + # type: () -> None Theme.init_themes(self.confdir, self.config.html_theme_path, warn=self.warn) themename, themeoptions = self.get_theme_config() @@ -152,6 +168,7 @@ class StandaloneHTMLBuilder(Builder): self.templates.init(self, self.theme) def init_highlighter(self): + # type: () -> None # determine Pygments style and create the highlighter if self.config.pygments_style is not None: style = self.config.pygments_style @@ -163,18 +180,20 @@ class StandaloneHTMLBuilder(Builder): self.config.trim_doctest_flags) def init_translator_class(self): + # type: () -> None if self.translator_class is None: if self.config.html_use_smartypants: self.translator_class = SmartyPantsHTMLTranslator else: self.translator_class = HTMLTranslator - def get_outdated_docs(self): + def get_outdated_docs(self): # type: ignore + # type: () -> Iterator[unicode] cfgdict = dict((name, self.config[name]) for (name, desc) in iteritems(self.config.values) if desc[1] == 'html') self.config_hash = get_stable_hash(cfgdict) - self.tags_hash = get_stable_hash(sorted(self.tags)) + self.tags_hash = get_stable_hash(sorted(self.tags)) # type: ignore old_config_hash = old_tags_hash = '' try: with open(path.join(self.outdir, '.buildinfo')) as fp: @@ -222,6 +241,7 @@ class StandaloneHTMLBuilder(Builder): pass def render_partial(self, node): + # type: (nodes.Nodes) -> Dict[unicode, unicode] """Utility: Render a lone doctree node.""" if node is None: return {'fragment': ''} @@ -247,6 +267,7 @@ class StandaloneHTMLBuilder(Builder): return pub.writer.parts def prepare_writing(self, docnames): + # type: (Iterable[unicode]) -> nodes.Node # create the search indexer self.indexer = None if self.search: @@ -272,6 +293,7 @@ class StandaloneHTMLBuilder(Builder): indices_config = self.config.html_domain_indices if indices_config: for domain_name in sorted(self.env.domains): + domain = None # type: Domain domain = self.env.domains[domain_name] for indexcls in domain.indices: indexname = '%s-%s' % (domain.name, indexcls.name) @@ -313,7 +335,7 @@ class StandaloneHTMLBuilder(Builder): rellinks = [] if self.use_index: rellinks.append(('genindex', _('General Index'), 'I', _('index'))) - for indexname, indexcls, content, collapse in self.domain_indices: + for indexname, indexcls, content, collapse in self.domain_indices: # type: ignore # if it has a short name if indexcls.shortname: rellinks.append((indexname, indexcls.localname, @@ -353,7 +375,7 @@ class StandaloneHTMLBuilder(Builder): parents = [], logo = logo, favicon = favicon, - ) + ) # type: Dict[unicode, Any] if self.theme: self.globalcontext.update( ('theme_' + key, val) for (key, val) in @@ -361,6 +383,7 @@ class StandaloneHTMLBuilder(Builder): self.globalcontext.update(self.config.html_context) def get_doc_context(self, docname, body, metatags): + # type: (unicode, unicode, Dict) -> Dict[unicode, Any] """Collect items for the template context of a page.""" # find out relations prev = next = None @@ -441,6 +464,7 @@ class StandaloneHTMLBuilder(Builder): ) def write_doc(self, docname, doctree): + # type: (unicode, nodes.Node) -> None destination = StringOutput(encoding='utf-8') doctree.settings = self.docsettings @@ -458,6 +482,7 @@ class StandaloneHTMLBuilder(Builder): self.handle_page(docname, ctx, event_arg=doctree) def write_doc_serialized(self, docname, doctree): + # type: (unicode, nodes.Node) -> None self.imgpath = relative_uri(self.get_target_uri(docname), self.imagedir) self.post_process_images(doctree) title = self.env.longtitles.get(docname) @@ -465,6 +490,7 @@ class StandaloneHTMLBuilder(Builder): self.index_page(docname, doctree, title) def finish(self): + # type: () -> None self.finish_tasks.add_task(self.gen_indices) self.finish_tasks.add_task(self.gen_additional_pages) self.finish_tasks.add_task(self.copy_image_files) @@ -477,6 +503,7 @@ class StandaloneHTMLBuilder(Builder): self.handle_finish() def gen_indices(self): + # type: () -> None self.info(bold('generating indices...'), nonl=1) # the global general index @@ -489,6 +516,7 @@ class StandaloneHTMLBuilder(Builder): self.info() def gen_additional_pages(self): + # type: () -> None # pages from extensions for pagelist in self.app.emit('html-collect-pages'): for pagename, context, template in pagelist: @@ -515,6 +543,7 @@ class StandaloneHTMLBuilder(Builder): self.info() def write_genindex(self): + # type: () -> None # the total count of lines for each index letter, used to distribute # the entries into two columns genindex = self.env.create_index(self) @@ -544,6 +573,7 @@ class StandaloneHTMLBuilder(Builder): self.handle_page('genindex', genindexcontext, 'genindex.html') def write_domain_indices(self): + # type: () -> None for indexname, indexcls, content, collapse in self.domain_indices: indexcontext = dict( indextitle = indexcls.localname, @@ -554,6 +584,7 @@ class StandaloneHTMLBuilder(Builder): self.handle_page(indexname, indexcontext, 'domainindex.html') def copy_image_files(self): + # type: () -> None # copy image files if self.images: ensuredir(path.join(self.outdir, self.imagedir)) @@ -568,6 +599,7 @@ class StandaloneHTMLBuilder(Builder): (path.join(self.srcdir, src), err)) def copy_download_files(self): + # type: () -> None def to_relpath(f): return relative_path(self.srcdir, f) # copy downloadable files @@ -586,6 +618,7 @@ class StandaloneHTMLBuilder(Builder): (path.join(self.srcdir, src), err)) def copy_static_files(self): + # type: () -> None # copy static files self.info(bold('copying static files... '), nonl=True) ensuredir(path.join(self.outdir, '_static')) @@ -646,6 +679,7 @@ class StandaloneHTMLBuilder(Builder): self.info('done') def copy_extra_files(self): + # type: () -> None # copy html_extra_path files self.info(bold('copying extra files... '), nonl=True) excluded = Matcher(self.config.exclude_patterns) @@ -660,6 +694,7 @@ class StandaloneHTMLBuilder(Builder): self.info('done') def write_buildinfo(self): + # type: () -> None # write build info file with open(path.join(self.outdir, '.buildinfo'), 'w') as fp: fp.write('# Sphinx build info version 1\n' @@ -669,11 +704,13 @@ class StandaloneHTMLBuilder(Builder): (self.config_hash, self.tags_hash)) def cleanup(self): + # type: () -> None # clean up theme stuff if self.theme: self.theme.cleanup() def post_process_images(self, doctree): + # type: (nodes.Node) -> None """Pick the best candidate for an image and link down-scaled images to their high res version. """ @@ -699,15 +736,16 @@ class StandaloneHTMLBuilder(Builder): reference.append(node) def load_indexer(self, docnames): + # type: (Set[unicode]) -> None keep = set(self.env.all_docs) - set(docnames) try: searchindexfn = path.join(self.outdir, self.searchindex_filename) if self.indexer_dumps_unicode: - f = codecs.open(searchindexfn, 'r', encoding='utf-8') + f = codecs.open(searchindexfn, 'r', encoding='utf-8') # type: ignore else: - f = open(searchindexfn, 'rb') + f = open(searchindexfn, 'rb') # type: ignore with f: - self.indexer.load(f, self.indexer_format) + self.indexer.load(f, self.indexer_format) # type: ignore except (IOError, OSError, ValueError): if keep: self.warn('search index couldn\'t be loaded, but not all ' @@ -717,6 +755,7 @@ class StandaloneHTMLBuilder(Builder): self.indexer.prune(keep) def index_page(self, pagename, doctree, title): + # type: (unicode, nodes.Node, unicode) -> None # only index pages with title if self.indexer is not None and title: filename = self.env.doc2path(pagename, base=None) @@ -727,15 +766,18 @@ class StandaloneHTMLBuilder(Builder): self.indexer.feed(pagename, title, doctree) def _get_local_toctree(self, docname, collapse=True, **kwds): + # type: (unicode, bool, Any) -> unicode if 'includehidden' not in kwds: kwds['includehidden'] = False return self.render_partial(self.env.get_toctree_for( docname, self, collapse, **kwds))['fragment'] def get_outfilename(self, pagename): + # type: (unicode) -> unicode return path.join(self.outdir, os_path(pagename) + self.out_suffix) def add_sidebars(self, pagename, ctx): + # type: (unicode, Dict) -> None def has_wildcard(pattern): return any(char in pattern for char in '*?[') sidebars = None @@ -768,10 +810,12 @@ class StandaloneHTMLBuilder(Builder): # --------- these are overwritten by the serialization builder def get_target_uri(self, docname, typ=None): + # type: (unicode, unicode) -> unicode return docname + self.link_suffix def handle_page(self, pagename, addctx, templatename='page.html', outfilename=None, event_arg=None): + # type: (unicode, Dict, unicode, unicode, Any) -> None ctx = self.globalcontext.copy() # current_page_name is backwards compatibility ctx['pagename'] = ctx['current_page_name'] = pagename @@ -828,7 +872,7 @@ class StandaloneHTMLBuilder(Builder): # outfilename's path is in general different from self.outdir ensuredir(path.dirname(outfilename)) try: - with codecs.open(outfilename, 'w', encoding, 'xmlcharrefreplace') as f: + with codecs.open(outfilename, 'w', encoding, 'xmlcharrefreplace') as f: # type: ignore # NOQA f.write(output) except (IOError, OSError) as err: self.warn("error writing file %s: %s" % (outfilename, err)) @@ -840,11 +884,13 @@ class StandaloneHTMLBuilder(Builder): copyfile(self.env.doc2path(pagename), source_name) def handle_finish(self): + # type: () -> None if self.indexer: self.finish_tasks.add_task(self.dump_search_index) self.finish_tasks.add_task(self.dump_inventory) def dump_inventory(self): + # type: () -> None self.info(bold('dumping object inventory... '), nonl=True) with open(path.join(self.outdir, INVENTORY_FILENAME), 'wb') as f: f.write((u'# Sphinx inventory version 2\n' @@ -871,6 +917,7 @@ class StandaloneHTMLBuilder(Builder): self.info('done') def dump_search_index(self): + # type: () -> None self.info( bold('dumping search index in %s ... ' % self.indexer.label()), nonl=True) @@ -879,11 +926,11 @@ class StandaloneHTMLBuilder(Builder): # first write to a temporary file, so that if dumping fails, # the existing index won't be overwritten if self.indexer_dumps_unicode: - f = codecs.open(searchindexfn + '.tmp', 'w', encoding='utf-8') + f = codecs.open(searchindexfn + '.tmp', 'w', encoding='utf-8') # type: ignore else: - f = open(searchindexfn + '.tmp', 'wb') + f = open(searchindexfn + '.tmp', 'wb') # type: ignore with f: - self.indexer.dump(f, self.indexer_format) + self.indexer.dump(f, self.indexer_format) # type: ignore movefile(searchindexfn + '.tmp', searchindexfn) self.info('done') @@ -897,6 +944,7 @@ class DirectoryHTMLBuilder(StandaloneHTMLBuilder): name = 'dirhtml' def get_target_uri(self, docname, typ=None): + # type: (unicode, unicode) -> unicode if docname == 'index': return '' if docname.endswith(SEP + 'index'): @@ -904,6 +952,7 @@ class DirectoryHTMLBuilder(StandaloneHTMLBuilder): return docname + SEP def get_outfilename(self, pagename): + # type: (unicode) -> unicode if pagename == 'index' or pagename.endswith(SEP + 'index'): outfilename = path.join(self.outdir, os_path(pagename) + self.out_suffix) @@ -914,6 +963,7 @@ class DirectoryHTMLBuilder(StandaloneHTMLBuilder): return outfilename def prepare_writing(self, docnames): + # type: (Iterable[unicode]) -> None StandaloneHTMLBuilder.prepare_writing(self, docnames) self.globalcontext['no_search_suffix'] = True @@ -926,10 +976,12 @@ class SingleFileHTMLBuilder(StandaloneHTMLBuilder): name = 'singlehtml' copysource = False - def get_outdated_docs(self): + def get_outdated_docs(self): # type: ignore + # type: () -> Union[unicode, List[unicode]] return 'all documents' def get_target_uri(self, docname, typ=None): + # type: (unicode, unicode) -> unicode if docname in self.env.all_docs: # all references are on the same page... return self.config.master_doc + self.out_suffix + \ @@ -939,10 +991,12 @@ class SingleFileHTMLBuilder(StandaloneHTMLBuilder): return docname + self.out_suffix def get_relative_uri(self, from_, to, typ=None): + # type: (unicode, unicode, unicode) -> unicode # ignore source return self.get_target_uri(to, typ) def fix_refuris(self, tree): + # type: (nodes.Node) -> None # fix refuris with double anchor fname = self.config.master_doc + self.out_suffix for refnode in tree.traverse(nodes.reference): @@ -957,6 +1011,7 @@ class SingleFileHTMLBuilder(StandaloneHTMLBuilder): refnode['refuri'] = fname + refuri[hashindex:] def _get_local_toctree(self, docname, collapse=True, **kwds): + # type: (unicode, bool, Any) -> unicode if 'includehidden' not in kwds: kwds['includehidden'] = False toctree = self.env.get_toctree_for(docname, self, collapse, **kwds) @@ -964,6 +1019,7 @@ class SingleFileHTMLBuilder(StandaloneHTMLBuilder): return self.render_partial(toctree)['fragment'] def assemble_doctree(self): + # type: () -> nodes.Node master = self.config.master_doc tree = self.env.get_doctree(master) tree = inline_all_toctrees(self, set(), master, tree, darkgreen, [master]) @@ -973,6 +1029,7 @@ class SingleFileHTMLBuilder(StandaloneHTMLBuilder): return tree def assemble_toc_secnumbers(self): + # type: () -> Dict[unicode, Dict[Tuple[unicode, unicode], Tuple[int, ...]]] # Assemble toc_secnumbers to resolve section numbers on SingleHTML. # Merge all secnumbers to single secnumber. # @@ -990,6 +1047,7 @@ class SingleFileHTMLBuilder(StandaloneHTMLBuilder): return {self.config.master_doc: new_secnumbers} def assemble_toc_fignumbers(self): + # type: () -> Dict[unicode, Dict[Tuple[unicode, unicode], Dict[unicode, Tuple[int, ...]]]] # NOQA # Assemble toc_fignumbers to resolve figure numbers on SingleHTML. # Merge all fignumbers to single fignumber. # @@ -999,7 +1057,7 @@ class SingleFileHTMLBuilder(StandaloneHTMLBuilder): # # There are related codes in inline_all_toctres() and # HTMLTranslter#add_fignumber(). - new_fignumbers = {} + new_fignumbers = {} # type: Dict[Tuple[unicode, unicode], Dict[unicode, Tuple[int, ...]]] # NOQA # {u'foo': {'figure': {'id2': (2,), 'id1': (1,)}}, u'bar': {'figure': {'id1': (3,)}}} for docname, fignumlist in iteritems(self.env.toc_fignumbers): for figtype, fignums in iteritems(fignumlist): @@ -1010,8 +1068,9 @@ class SingleFileHTMLBuilder(StandaloneHTMLBuilder): return {self.config.master_doc: new_fignumbers} def get_doc_context(self, docname, body, metatags): + # type: (unicode, unicode, Dict) -> Dict # no relation links... - toc = self.env.get_toctree_for(self.config.master_doc, self, False) + toc = self.env.get_toctree_for(self.config.master_doc, self, False) # type: Any # if there is no toctree, toc is None if toc: self.fix_refuris(toc) @@ -1036,6 +1095,7 @@ class SingleFileHTMLBuilder(StandaloneHTMLBuilder): ) def write(self, *ignored): + # type: (Any) -> None docnames = self.env.all_docs self.info(bold('preparing documents... '), nonl=True) @@ -1053,6 +1113,7 @@ class SingleFileHTMLBuilder(StandaloneHTMLBuilder): self.info('done') def finish(self): + # type: () -> None # no indices or search pages are supported self.info(bold('writing additional files...'), nonl=1) @@ -1083,18 +1144,19 @@ class SerializingHTMLBuilder(StandaloneHTMLBuilder): #: the serializing implementation to use. Set this to a module that #: implements a `dump`, `load`, `dumps` and `loads` functions #: (pickle, simplejson etc.) - implementation = None + implementation = None # type: Any implementation_dumps_unicode = False #: additional arguments for dump() additional_dump_args = () #: the filename for the global context file - globalcontext_filename = None + globalcontext_filename = None # type: unicode supported_image_types = ['image/svg+xml', 'image/png', 'image/gif', 'image/jpeg'] def init(self): + # type: () -> None self.config_hash = '' self.tags_hash = '' self.imagedir = '_images' @@ -1107,6 +1169,7 @@ class SerializingHTMLBuilder(StandaloneHTMLBuilder): self.use_index = self.get_builder_config('use_index', 'html') def get_target_uri(self, docname, typ=None): + # type: (unicode, unicode) -> unicode if docname == 'index': return '' if docname.endswith(SEP + 'index'): @@ -1114,15 +1177,17 @@ class SerializingHTMLBuilder(StandaloneHTMLBuilder): return docname + SEP def dump_context(self, context, filename): + # type: (Dict, unicode) -> None if self.implementation_dumps_unicode: - f = codecs.open(filename, 'w', encoding='utf-8') + f = codecs.open(filename, 'w', encoding='utf-8') # type: ignore else: - f = open(filename, 'wb') + f = open(filename, 'wb') # type: ignore with f: self.implementation.dump(context, f, *self.additional_dump_args) def handle_page(self, pagename, ctx, templatename='page.html', outfilename=None, event_arg=None): + # type: (unicode, Dict, unicode, unicode, Any) -> None ctx['current_page_name'] = pagename self.add_sidebars(pagename, ctx) @@ -1146,6 +1211,7 @@ class SerializingHTMLBuilder(StandaloneHTMLBuilder): copyfile(self.env.doc2path(pagename), source_name) def handle_finish(self): + # type: () -> None # dump the global context outfilename = path.join(self.outdir, self.globalcontext_filename) self.dump_context(self.globalcontext, outfilename) @@ -1196,16 +1262,19 @@ class JSONHTMLBuilder(SerializingHTMLBuilder): searchindex_filename = 'searchindex.json' def init(self): + # type: () -> None SerializingHTMLBuilder.init(self) def validate_config_values(app): + # type: (Sphinx) -> None if app.config.html_translator_class: app.warn('html_translator_class is deprecated. ' 'Use Sphinx.set_translator() API instead.') def setup(app): + # type: (Sphinx) -> None # builders app.add_builder(StandaloneHTMLBuilder) app.add_builder(DirectoryHTMLBuilder) diff --git a/sphinx/builders/latex.py b/sphinx/builders/latex.py index 0ef0d70d4..92eb39b74 100644 --- a/sphinx/builders/latex.py +++ b/sphinx/builders/latex.py @@ -13,6 +13,7 @@ import os from os import path from six import iteritems + from docutils import nodes from docutils.io import FileOutput from docutils.utils import new_document @@ -28,9 +29,14 @@ from sphinx.environment import NoUri from sphinx.util.nodes import inline_all_toctrees from sphinx.util.fileutil import copy_asset_file from sphinx.util.osutil import SEP, make_filename -from sphinx.util.console import bold, darkgreen +from sphinx.util.console import bold, darkgreen # type: ignore from sphinx.writers.latex import LaTeXWriter +if False: + # For type annotation + from typing import Any, Iterable, Tuple, Union # NOQA + from sphinx.application import Sphinx # NOQA + class LaTeXBuilder(Builder): """ @@ -41,44 +47,50 @@ class LaTeXBuilder(Builder): supported_image_types = ['application/pdf', 'image/png', 'image/jpeg'] def init(self): - self.docnames = [] - self.document_data = [] - self.usepackages = [] + # type: () -> None + self.docnames = [] # type: Iterable[unicode] + self.document_data = [] # type: List[Tuple[unicode, unicode, unicode, unicode, unicode, bool]] # NOQA + self.usepackages = [] # type: List[unicode] texescape.init() def get_outdated_docs(self): + # type: () -> Union[unicode, List[unicode]] return 'all documents' # for now def get_target_uri(self, docname, typ=None): + # type: (unicode, unicode) -> unicode if docname not in self.docnames: raise NoUri else: return '%' + docname def get_relative_uri(self, from_, to, typ=None): + # type: (unicode, unicode, unicode) -> unicode # ignore source path return self.get_target_uri(to, typ) def init_document_data(self): + # type: () -> None preliminary_document_data = [list(x) for x in self.config.latex_documents] if not preliminary_document_data: self.warn('no "latex_documents" config value found; no documents ' 'will be written') return # assign subdirs to titles - self.titles = [] + self.titles = [] # type: List[Tuple[unicode, unicode]] for entry in preliminary_document_data: docname = entry[0] if docname not in self.env.all_docs: self.warn('"latex_documents" config value references unknown ' 'document %s' % docname) continue - self.document_data.append(entry) + self.document_data.append(entry) # type: ignore if docname.endswith(SEP+'index'): docname = docname[:-5] self.titles.append((docname, entry[2])) def write_stylesheet(self): + # type: () -> None highlighter = highlighting.PygmentsBridge( 'latex', self.config.pygments_style, self.config.trim_doctest_flags) stylesheet = path.join(self.outdir, 'sphinxhighlight.sty') @@ -89,6 +101,7 @@ class LaTeXBuilder(Builder): f.write(highlighter.get_stylesheet()) def write(self, *ignored): + # type: (Any) -> None docwriter = LaTeXWriter(self) docsettings = OptionParser( defaults=self.env.settings, @@ -131,6 +144,7 @@ class LaTeXBuilder(Builder): self.info("done") def get_contentsname(self, indexfile): + # type: (unicode) -> unicode tree = self.env.get_doctree(indexfile) contentsname = None for toctree in tree.traverse(addnodes.toctree): @@ -141,6 +155,7 @@ class LaTeXBuilder(Builder): return contentsname def assemble_doctree(self, indexfile, toctree_only, appendices): + # type: (unicode, bool, List[unicode]) -> nodes.Node self.docnames = set([indexfile] + appendices) self.info(darkgreen(indexfile) + " ", nonl=1) tree = self.env.get_doctree(indexfile) @@ -184,6 +199,7 @@ class LaTeXBuilder(Builder): return largetree def finish(self): + # type: () -> None # copy image files if self.images: self.info(bold('copying images...'), nonl=1) @@ -220,17 +236,18 @@ class LaTeXBuilder(Builder): def validate_config_values(app): + # type: (Sphinx) -> None if app.config.latex_toplevel_sectioning not in (None, 'part', 'chapter', 'section'): app.warn('invalid latex_toplevel_sectioning, ignored: %s' % app.config.latex_toplevel_sectioning) - app.config.latex_toplevel_sectioning = None + app.config.latex_toplevel_sectioning = None # type: ignore if app.config.latex_use_parts: if app.config.latex_toplevel_sectioning: app.warn('latex_use_parts conflicts with latex_toplevel_sectioning, ignored.') else: app.warn('latex_use_parts is deprecated. Use latex_toplevel_sectioning instead.') - app.config.latex_toplevel_sectioning = 'parts' + app.config.latex_toplevel_sectioning = 'parts' # type: ignore if app.config.latex_use_modindex is not True: # changed by user app.warn('latex_use_modeindex is deprecated. Use latex_domain_indices instead.') @@ -269,6 +286,7 @@ def validate_config_values(app): def setup(app): + # type: (Sphinx) -> None app.add_builder(LaTeXBuilder) app.connect('builder-inited', validate_config_values) diff --git a/sphinx/builders/linkcheck.py b/sphinx/builders/linkcheck.py index f49f4f9a3..0a3b2fe9d 100644 --- a/sphinx/builders/linkcheck.py +++ b/sphinx/builders/linkcheck.py @@ -16,9 +16,10 @@ import threading from os import path from requests.exceptions import HTTPError -from six.moves import queue +from six.moves import queue # type: ignore from six.moves.urllib.parse import unquote from six.moves.html_parser import HTMLParser + from docutils import nodes # 2015-06-25 barry@python.org. This exception was deprecated in Python 3.3 and @@ -26,28 +27,36 @@ from docutils import nodes # going to just remove it. If it doesn't exist, define an exception that will # never be caught but leaves the code in check_anchor() intact. try: - from six.moves.html_parser import HTMLParseError + from six.moves.html_parser import HTMLParseError # type: ignore except ImportError: - class HTMLParseError(Exception): + class HTMLParseError(Exception): # type: ignore pass from sphinx.builders import Builder from sphinx.util import encode_uri -from sphinx.util.console import purple, red, darkgreen, darkgray, \ - darkred, turquoise +from sphinx.util.console import ( # type: ignore + purple, red, darkgreen, darkgray, darkred, turquoise +) from sphinx.util.requests import requests, useragent_header, is_ssl_error +if False: + # For type annotation + from typing import Any, Tuple, Union # NOQA + from sphinx.application import Sphinx # NOQA + class AnchorCheckParser(HTMLParser): """Specialized HTML parser that looks for a specific anchor.""" def __init__(self, search_anchor): + # type: (unicode) -> None HTMLParser.__init__(self) self.search_anchor = search_anchor self.found = False def handle_starttag(self, tag, attrs): + # type: (Any, Dict[unicode, unicode]) -> None for key, value in attrs: if key in ('id', 'name') and value == self.search_anchor: self.found = True @@ -55,6 +64,7 @@ class AnchorCheckParser(HTMLParser): def check_anchor(response, anchor): + # type: (requests.Response, unicode) -> bool """Reads HTML data from a response object `response` searching for `anchor`. Returns True if anchor was found, False otherwise. """ @@ -81,12 +91,13 @@ class CheckExternalLinksBuilder(Builder): name = 'linkcheck' def init(self): + # type: () -> None self.to_ignore = [re.compile(x) for x in self.app.config.linkcheck_ignore] self.anchors_ignore = [re.compile(x) for x in self.app.config.linkcheck_anchors_ignore] - self.good = set() - self.broken = {} - self.redirected = {} + self.good = set() # type: Set[unicode] + self.broken = {} # type: Dict[unicode, unicode] + self.redirected = {} # type: Dict[unicode, Tuple[unicode, int]] self.headers = dict(useragent_header) # set a timeout for non-responding servers socket.setdefaulttimeout(5.0) @@ -96,7 +107,7 @@ class CheckExternalLinksBuilder(Builder): # create queues and worker threads self.wqueue = queue.Queue() self.rqueue = queue.Queue() - self.workers = [] + self.workers = [] # type: List[threading.Thread] for i in range(self.app.config.linkcheck_workers): thread = threading.Thread(target=self.check_thread) thread.setDaemon(True) @@ -104,6 +115,7 @@ class CheckExternalLinksBuilder(Builder): self.workers.append(thread) def check_thread(self): + # type: () -> None kwargs = {} if self.app.config.linkcheck_timeout: kwargs['timeout'] = self.app.config.linkcheck_timeout @@ -111,6 +123,7 @@ class CheckExternalLinksBuilder(Builder): kwargs['allow_redirects'] = True def check_uri(): + # type: () -> Tuple[unicode, unicode, int] # split off anchor if '#' in uri: req_url, anchor = uri.split('#', 1) @@ -172,6 +185,7 @@ class CheckExternalLinksBuilder(Builder): return 'redirected', new_url, code def check(): + # type: () -> Tuple[unicode, unicode, int] # check for various conditions without bothering the network if len(uri) == 0 or uri.startswith(('#', 'mailto:', 'ftp:')): return 'unchecked', '', 0 @@ -210,6 +224,7 @@ class CheckExternalLinksBuilder(Builder): self.rqueue.put((uri, docname, lineno, status, info, code)) def process_result(self, result): + # type: (Tuple[unicode, unicode, int, unicode, unicode, int]) -> None uri, docname, lineno, status, info, code = result if status == 'unchecked': return @@ -247,15 +262,19 @@ class CheckExternalLinksBuilder(Builder): self.info(color('redirect ') + uri + color(' - ' + text + ' to ' + info)) def get_target_uri(self, docname, typ=None): + # type: (unicode, unicode) -> unicode return '' def get_outdated_docs(self): + # type: () -> Set[unicode] return self.env.found_docs def prepare_writing(self, docnames): + # type: (nodes.Node) -> None return def write_doc(self, docname, doctree): + # type: (unicode, nodes.Node) -> None self.info() n = 0 for node in doctree.traverse(nodes.reference): @@ -279,17 +298,19 @@ class CheckExternalLinksBuilder(Builder): self.app.statuscode = 1 def write_entry(self, what, docname, line, uri): - output = codecs.open(path.join(self.outdir, 'output.txt'), 'a', 'utf-8') - output.write("%s:%s: [%s] %s\n" % (self.env.doc2path(docname, None), - line, what, uri)) - output.close() + # type: (unicode, unicode, int, unicode) -> None + with codecs.open(path.join(self.outdir, 'output.txt'), 'a', 'utf-8') as output: # type: ignore # NOQA + output.write("%s:%s: [%s] %s\n" % (self.env.doc2path(docname, None), + line, what, uri)) def finish(self): + # type: () -> None for worker in self.workers: self.wqueue.put((None, None, None), False) def setup(app): + # type: (Sphinx) -> None app.add_builder(CheckExternalLinksBuilder) app.add_config_value('linkcheck_ignore', [], None) diff --git a/sphinx/builders/manpage.py b/sphinx/builders/manpage.py index 248ed40b2..a208ac74e 100644 --- a/sphinx/builders/manpage.py +++ b/sphinx/builders/manpage.py @@ -12,6 +12,7 @@ from os import path from six import string_types + from docutils.io import FileOutput from docutils.frontend import OptionParser @@ -20,9 +21,14 @@ from sphinx.builders import Builder from sphinx.environment import NoUri from sphinx.util.nodes import inline_all_toctrees from sphinx.util.osutil import make_filename -from sphinx.util.console import bold, darkgreen +from sphinx.util.console import bold, darkgreen # type: ignore from sphinx.writers.manpage import ManualPageWriter +if False: + # For type annotation + from typing import Any, Union # NOQA + from sphinx.application import Sphinx # NOQA + class ManualPageBuilder(Builder): """ @@ -30,22 +36,26 @@ class ManualPageBuilder(Builder): """ name = 'man' format = 'man' - supported_image_types = [] + supported_image_types = [] # type: List[unicode] def init(self): + # type: () -> None if not self.config.man_pages: self.warn('no "man_pages" config value found; no manual pages ' 'will be written') def get_outdated_docs(self): + # type: () -> Union[unicode, List[unicode]] return 'all manpages' # for now def get_target_uri(self, docname, typ=None): + # type: (unicode, unicode) -> unicode if typ == 'token': return '' raise NoUri def write(self, *ignored): + # type: (Any) -> None docwriter = ManualPageWriter(self) docsettings = OptionParser( defaults=self.env.settings, @@ -69,7 +79,7 @@ class ManualPageBuilder(Builder): encoding='utf-8') tree = self.env.get_doctree(docname) - docnames = set() + docnames = set() # type: Set[unicode] largetree = inline_all_toctrees(self, docnames, docname, tree, darkgreen, [docname]) self.info('} ', nonl=True) @@ -88,10 +98,12 @@ class ManualPageBuilder(Builder): self.info() def finish(self): + # type: () -> None pass def setup(app): + # type: (Sphinx) -> None app.add_builder(ManualPageBuilder) app.add_config_value('man_pages', diff --git a/sphinx/builders/qthelp.py b/sphinx/builders/qthelp.py index c53b56657..18764b7fb 100644 --- a/sphinx/builders/qthelp.py +++ b/sphinx/builders/qthelp.py @@ -16,6 +16,7 @@ import posixpath from os import path from six import text_type + from docutils import nodes from sphinx import addnodes @@ -24,6 +25,11 @@ from sphinx.util import force_decode from sphinx.util.osutil import make_filename from sphinx.util.pycompat import htmlescape +if False: + # For type annotation + from typing import Any, Tuple # NOQA + from sphinx.application import Sphinx # NOQA + _idpattern = re.compile( r'(?P.+) (\((class in )?(?P<id>[\w\.]+)( (?P<descr>\w+))?\))$') @@ -115,6 +121,7 @@ class QtHelpBuilder(StandaloneHTMLBuilder): search = False def init(self): + # type: () -> None StandaloneHTMLBuilder.init(self) # the output files for HTML help must be .html only self.out_suffix = '.html' @@ -122,12 +129,15 @@ class QtHelpBuilder(StandaloneHTMLBuilder): # self.config.html_style = 'traditional.css' def get_theme_config(self): + # type: () -> Tuple[unicode, Dict] return self.config.qthelp_theme, self.config.qthelp_theme_options def handle_finish(self): + # type: () -> None self.build_qhp(self.outdir, self.config.qthelp_basename) def build_qhp(self, outdir, outname): + # type: (unicode, unicode) -> None self.info('writing project file...') # sections @@ -153,7 +163,7 @@ class QtHelpBuilder(StandaloneHTMLBuilder): new_sections.append(force_decode(section, None)) else: new_sections.append(section) - sections = u'\n'.join(new_sections) + sections = u'\n'.join(new_sections) # type: ignore # keywords keywords = [] @@ -161,7 +171,7 @@ class QtHelpBuilder(StandaloneHTMLBuilder): for (key, group) in index: for title, (refs, subitems, key_) in group: keywords.extend(self.build_keywords(title, refs, subitems)) - keywords = u'\n'.join(keywords) + keywords = u'\n'.join(keywords) # type: ignore # files if not outdir.endswith(os.sep): @@ -179,7 +189,7 @@ class QtHelpBuilder(StandaloneHTMLBuilder): filename = path.join(root, fn)[olen:] projectfiles.append(file_template % {'filename': htmlescape(filename)}) - projectfiles = '\n'.join(projectfiles) + projectfiles = '\n'.join(projectfiles) # type: ignore # it seems that the "namespace" may not contain non-alphanumeric # characters, and more than one successive dot, or leading/trailing @@ -190,8 +200,8 @@ class QtHelpBuilder(StandaloneHTMLBuilder): nspace = nspace.lower() # write the project file - with codecs.open(path.join(outdir, outname+'.qhp'), 'w', 'utf-8') as f: - f.write(project_template % { + with codecs.open(path.join(outdir, outname+'.qhp'), 'w', 'utf-8') as f: # type: ignore + f.write(project_template % { # type: ignore 'outname': htmlescape(outname), 'title': htmlescape(self.config.html_title), 'version': htmlescape(self.config.version), @@ -207,14 +217,15 @@ class QtHelpBuilder(StandaloneHTMLBuilder): startpage = 'qthelp://' + posixpath.join(nspace, 'doc', 'index.html') self.info('writing collection project file...') - with codecs.open(path.join(outdir, outname+'.qhcp'), 'w', 'utf-8') as f: - f.write(collection_template % { + with codecs.open(path.join(outdir, outname+'.qhcp'), 'w', 'utf-8') as f: # type: ignore # NOQA + f.write(collection_template % { # type: ignore 'outname': htmlescape(outname), 'title': htmlescape(self.config.html_short_title), 'homepage': htmlescape(homepage), 'startpage': htmlescape(startpage)}) def isdocnode(self, node): + # type: (nodes.Node) -> bool if not isinstance(node, nodes.list_item): return False if len(node.children) != 2: @@ -228,8 +239,9 @@ class QtHelpBuilder(StandaloneHTMLBuilder): return True def write_toc(self, node, indentlevel=4): + # type: (nodes.Node, int) -> List[unicode] # XXX this should return a Unicode string, not a bytestring - parts = [] + parts = [] # type: List[unicode] if self.isdocnode(node): refnode = node.children[0][0] link = refnode['refuri'] @@ -247,7 +259,7 @@ class QtHelpBuilder(StandaloneHTMLBuilder): link = node['refuri'] title = htmlescape(node.astext()).replace('"', '"') item = section_template % {'title': title, 'ref': link} - item = u' ' * 4 * indentlevel + item + item = u' ' * 4 * indentlevel + item # type: ignore parts.append(item.encode('ascii', 'xmlcharrefreplace')) elif isinstance(node, nodes.bullet_list): for subnode in node: @@ -259,7 +271,8 @@ class QtHelpBuilder(StandaloneHTMLBuilder): return parts def keyword_item(self, name, ref): - matchobj = _idpattern.match(name) + # type: (unicode, Any) -> unicode + matchobj = _idpattern.match(name) # type: ignore if matchobj: groupdict = matchobj.groupdict() shortname = groupdict['title'] @@ -280,7 +293,8 @@ class QtHelpBuilder(StandaloneHTMLBuilder): return item def build_keywords(self, title, refs, subitems): - keywords = [] + # type: (unicode, List[Any], Any) -> List[unicode] + keywords = [] # type: List[unicode] title = htmlescape(title) # if len(refs) == 0: # XXX @@ -304,6 +318,7 @@ class QtHelpBuilder(StandaloneHTMLBuilder): def setup(app): + # type: (Sphinx) -> None app.setup_extension('sphinx.builders.html') app.add_builder(QtHelpBuilder) diff --git a/sphinx/builders/texinfo.py b/sphinx/builders/texinfo.py index f070840b6..61b5d4e77 100644 --- a/sphinx/builders/texinfo.py +++ b/sphinx/builders/texinfo.py @@ -12,6 +12,7 @@ from os import path from six import iteritems + from docutils import nodes from docutils.io import FileOutput from docutils.utils import new_document @@ -23,9 +24,14 @@ from sphinx.builders import Builder from sphinx.environment import NoUri from sphinx.util.nodes import inline_all_toctrees from sphinx.util.osutil import SEP, copyfile, make_filename -from sphinx.util.console import bold, darkgreen +from sphinx.util.console import bold, darkgreen # type: ignore from sphinx.writers.texinfo import TexinfoWriter +if False: + # For type annotation + from sphinx.application import Sphinx # NOQA + from typing import Any, Iterable, Tuple, Union # NOQA + TEXINFO_MAKEFILE = '''\ # Makefile for Sphinx Texinfo output @@ -91,47 +97,53 @@ class TexinfoBuilder(Builder): 'image/gif'] def init(self): - self.docnames = [] - self.document_data = [] + # type: () -> None + self.docnames = [] # type: Iterable[unicode] + self.document_data = [] # type: List[Tuple[unicode, unicode, unicode, unicode, unicode, unicode, unicode, bool]] # NOQA def get_outdated_docs(self): + # type: () -> Union[unicode, List[unicode]] return 'all documents' # for now def get_target_uri(self, docname, typ=None): + # type: (unicode, unicode) -> unicode if docname not in self.docnames: raise NoUri else: return '%' + docname def get_relative_uri(self, from_, to, typ=None): + # type: (unicode, unicode, unicode) -> unicode # ignore source path return self.get_target_uri(to, typ) def init_document_data(self): + # type: () -> None preliminary_document_data = [list(x) for x in self.config.texinfo_documents] if not preliminary_document_data: self.warn('no "texinfo_documents" config value found; no documents ' 'will be written') return # assign subdirs to titles - self.titles = [] + self.titles = [] # type: List[Tuple[unicode, unicode]] for entry in preliminary_document_data: docname = entry[0] if docname not in self.env.all_docs: self.warn('"texinfo_documents" config value references unknown ' 'document %s' % docname) continue - self.document_data.append(entry) + self.document_data.append(entry) # type: ignore if docname.endswith(SEP+'index'): docname = docname[:-5] self.titles.append((docname, entry[2])) def write(self, *ignored): + # type: (Any) -> None self.init_document_data() for entry in self.document_data: docname, targetname, title, author = entry[:4] targetname += '.texi' - direntry = description = category = '' + direntry = description = category = '' # type: unicode if len(entry) > 6: direntry, description, category = entry[4:7] toctree_only = False @@ -164,6 +176,7 @@ class TexinfoBuilder(Builder): self.info("done") def assemble_doctree(self, indexfile, toctree_only, appendices): + # type: (unicode, bool, List[unicode]) -> nodes.Node self.docnames = set([indexfile] + appendices) self.info(darkgreen(indexfile) + " ", nonl=1) tree = self.env.get_doctree(indexfile) @@ -206,6 +219,7 @@ class TexinfoBuilder(Builder): return largetree def finish(self): + # type: () -> None # copy image files if self.images: self.info(bold('copying images...'), nonl=1) @@ -228,6 +242,7 @@ class TexinfoBuilder(Builder): def setup(app): + # type: (Sphinx) -> None app.add_builder(TexinfoBuilder) app.add_config_value('texinfo_documents', diff --git a/sphinx/builders/text.py b/sphinx/builders/text.py index 2daf8b043..e14ce215b 100644 --- a/sphinx/builders/text.py +++ b/sphinx/builders/text.py @@ -25,6 +25,8 @@ class TextBuilder(Builder): out_suffix = '.txt' allow_parallel = True + current_docname = None # type: unicode + def init(self): pass From 0d1875e2b5458e0f1f12aa4bfa538ca9c27fb908 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Fri, 11 Nov 2016 19:37:14 +0900 Subject: [PATCH 227/297] Add type-check annotations to sphinx.ext --- sphinx/ext/autodoc.py | 192 ++++++++++++++++++++++------- sphinx/ext/autosummary/__init__.py | 54 ++++++-- sphinx/ext/autosummary/generate.py | 42 +++++-- sphinx/ext/coverage.py | 30 +++-- sphinx/ext/doctest.py | 84 +++++++++---- sphinx/ext/graphviz.py | 25 +++- sphinx/ext/ifconfig.py | 14 ++- sphinx/ext/imgmath.py | 21 +++- sphinx/ext/inheritance_diagram.py | 39 ++++-- sphinx/ext/intersphinx.py | 65 +++++++--- sphinx/ext/linkcode.py | 9 +- sphinx/ext/mathbase.py | 36 +++++- sphinx/ext/napoleon/__init__.py | 17 ++- sphinx/ext/napoleon/docstring.py | 165 +++++++++++++++++-------- sphinx/ext/napoleon/iterators.py | 21 +++- sphinx/ext/pngmath.py | 21 +++- sphinx/ext/todo.py | 31 +++-- sphinx/ext/viewcode.py | 39 ++++-- 18 files changed, 684 insertions(+), 221 deletions(-) diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py index 59e585678..9385c5c02 100644 --- a/sphinx/ext/autodoc.py +++ b/sphinx/ext/autodoc.py @@ -19,6 +19,7 @@ from types import FunctionType, BuiltinFunctionType, MethodType from six import PY2, iterkeys, iteritems, itervalues, text_type, class_types, \ string_types, StringIO + from docutils import nodes from docutils.utils import assemble_option_dict from docutils.statemachine import ViewList @@ -34,11 +35,18 @@ from sphinx.util.inspect import getargspec, isdescriptor, safe_getmembers, \ safe_getattr, object_description, is_builtin_class_method, isenumattribute from sphinx.util.docstrings import prepare_docstring +if False: + # For type annotation + from typing import Any, Callable, Iterator, Sequence, Tuple, Type, Union # NOQA + from types import ModuleType # NOQA + from docutils.utils import Reporter # NOQA + from sphinx.application import Sphinx # NOQA + try: if sys.version_info >= (3,): import typing else: - typing = None + typing = None # type: ignore except ImportError: typing = None @@ -56,28 +64,33 @@ py_ext_sig_re = re.compile( class DefDict(dict): """A dict that returns a default on nonexisting keys.""" def __init__(self, default): + # type: (Any) -> None dict.__init__(self) self.default = default def __getitem__(self, key): + # type: (Any) -> Any try: return dict.__getitem__(self, key) except KeyError: return self.default def __bool__(self): + # type: () -> bool # docutils check "if option_spec" return True __nonzero__ = __bool__ # for python2 compatibility def identity(x): + # type: (Any) -> Any return x class Options(dict): """A dict/attribute hybrid that returns None on nonexisting keys.""" def __getattr__(self, name): + # type: (unicode) -> Any try: return self[name.replace('_', '-')] except KeyError: @@ -90,22 +103,26 @@ class _MockModule(object): __path__ = '/dev/null' def __init__(self, *args, **kwargs): - self.__all__ = [] + # type: (Any, Any) -> None + self.__all__ = [] # type: List[str] def __call__(self, *args, **kwargs): + # type: (Any, Any) -> _MockModule if args and type(args[0]) in [FunctionType, MethodType]: # Appears to be a decorator, pass through unchanged return args[0] return _MockModule() def _append_submodule(self, submod): + # type: (str) -> None self.__all__.append(submod) @classmethod def __getattr__(cls, name): + # type: (unicode) -> Any if name[0] == name[0].upper(): # Not very good, we assume Uppercase names are classes... - mocktype = type(name, (), {}) + mocktype = type(name, (), {}) # type: ignore mocktype.__module__ = __name__ return mocktype else: @@ -113,15 +130,16 @@ class _MockModule(object): def mock_import(modname): + # type: (str) -> None if '.' in modname: pkg, _n, mods = modname.rpartition('.') mock_import(pkg) if isinstance(sys.modules[pkg], _MockModule): - sys.modules[pkg]._append_submodule(mods) + sys.modules[pkg]._append_submodule(mods) # type: ignore if modname not in sys.modules: mod = _MockModule() - sys.modules[modname] = mod + sys.modules[modname] = mod # type: ignore ALL = object() @@ -129,6 +147,7 @@ INSTANCEATTR = object() def members_option(arg): + # type: (Any) -> Union[object, List[unicode]] """Used to convert the :members: option to auto directives.""" if arg is None: return ALL @@ -136,6 +155,7 @@ def members_option(arg): def members_set_option(arg): + # type: (Any) -> Union[object, Set[unicode]] """Used to convert the :members: option to auto directives.""" if arg is None: return ALL @@ -146,6 +166,7 @@ SUPPRESS = object() def annotation_option(arg): + # type: (Any) -> Any if arg is None: # suppress showing the representation of the object return SUPPRESS @@ -154,6 +175,7 @@ def annotation_option(arg): def bool_option(arg): + # type: (Any) -> bool """Used to convert flag options to auto directives. (Instead of directives.flag(), which returns None). """ @@ -166,13 +188,16 @@ class AutodocReporter(object): and line number to a system message, as recorded in a ViewList. """ def __init__(self, viewlist, reporter): + # type: (ViewList, Reporter) -> None self.viewlist = viewlist self.reporter = reporter def __getattr__(self, name): + # type: (unicode) -> Any return getattr(self.reporter, name) def system_message(self, level, message, *children, **kwargs): + # type: (int, unicode, Any, Any) -> nodes.system_message if 'line' in kwargs and 'source' not in kwargs: try: source, line = self.viewlist.items[kwargs['line']] @@ -185,25 +210,31 @@ class AutodocReporter(object): *children, **kwargs) def debug(self, *args, **kwargs): + # type: (Any, Any) -> nodes.system_message if self.reporter.debug_flag: return self.system_message(0, *args, **kwargs) def info(self, *args, **kwargs): + # type: (Any, Any) -> nodes.system_message return self.system_message(1, *args, **kwargs) def warning(self, *args, **kwargs): + # type: (Any, Any) -> nodes.system_message return self.system_message(2, *args, **kwargs) def error(self, *args, **kwargs): + # type: (Any, Any) -> nodes.system_message return self.system_message(3, *args, **kwargs) def severe(self, *args, **kwargs): + # type: (Any, Any) -> nodes.system_message return self.system_message(4, *args, **kwargs) # Some useful event listener factories for autodoc-process-docstring. def cut_lines(pre, post=0, what=None): + # type: (int, int, unicode) -> Callable """Return a listener that removes the first *pre* and last *post* lines of every docstring. If *what* is a sequence of strings, only docstrings of a type in *what* will be processed. @@ -216,6 +247,7 @@ def cut_lines(pre, post=0, what=None): This can (and should) be used in place of :confval:`automodule_skip_lines`. """ def process(app, what_, name, obj, options, lines): + # type: (Sphinx, unicode, unicode, Any, Any, List[unicode]) -> None if what and what_ not in what: return del lines[:pre] @@ -231,6 +263,7 @@ def cut_lines(pre, post=0, what=None): def between(marker, what=None, keepempty=False, exclude=False): + # type: (unicode, Sequence[unicode], bool, bool) -> Callable """Return a listener that either keeps, or if *exclude* is True excludes, lines between lines that match the *marker* regular expression. If no line matches, the resulting docstring would be empty, so no change will be made @@ -242,6 +275,7 @@ def between(marker, what=None, keepempty=False, exclude=False): marker_re = re.compile(marker) def process(app, what_, name, obj, options, lines): + # type: (Sphinx, unicode, unicode, Any, Any, List[unicode]) -> None if what and what_ not in what: return deleted = 0 @@ -265,6 +299,7 @@ def between(marker, what=None, keepempty=False, exclude=False): def format_annotation(annotation): + # type: (Any) -> str """Return formatted representation of a type annotation. Show qualified names for types and additional details for types from @@ -272,18 +307,18 @@ def format_annotation(annotation): Displaying complex types from ``typing`` relies on its private API. """ - if typing and isinstance(annotation, typing.TypeVar): + if typing and isinstance(annotation, typing.TypeVar): # type: ignore return annotation.__name__ if annotation == Ellipsis: return '...' if not isinstance(annotation, type): return repr(annotation) - qualified_name = (annotation.__module__ + '.' + annotation.__qualname__ + qualified_name = (annotation.__module__ + '.' + annotation.__qualname__ # type: ignore if annotation else repr(annotation)) if annotation.__module__ == 'builtins': - return annotation.__qualname__ + return annotation.__qualname__ # type: ignore elif typing: if hasattr(typing, 'GenericMeta') and \ isinstance(annotation, typing.GenericMeta): @@ -344,6 +379,7 @@ def format_annotation(annotation): def formatargspec(function, args, varargs=None, varkw=None, defaults=None, kwonlyargs=(), kwonlydefaults={}, annotations={}): + # type: (Callable, Tuple[str, ...], str, str, Any, Tuple, Dict, Dict[str, Any]) -> str """Return a string representation of an ``inspect.FullArgSpec`` tuple. An enhanced version of ``inspect.formatargspec()`` that handles typing @@ -351,18 +387,20 @@ def formatargspec(function, args, varargs=None, varkw=None, defaults=None, """ def format_arg_with_annotation(name): + # type: (str) -> str if name in annotations: return '%s: %s' % (name, format_annotation(get_annotation(name))) return name def get_annotation(name): + # type: (str) -> str value = annotations[name] if isinstance(value, string_types): return introspected_hints.get(name, value) else: return value - introspected_hints = (typing.get_type_hints(function) + introspected_hints = (typing.get_type_hints(function) # type: ignore if typing and hasattr(function, '__code__') else {}) fd = StringIO() @@ -376,7 +414,7 @@ def formatargspec(function, args, varargs=None, varkw=None, defaults=None, arg_fd.write(format_arg_with_annotation(arg)) if defaults and i >= defaults_start: arg_fd.write(' = ' if arg in annotations else '=') - arg_fd.write(object_description(defaults[i - defaults_start])) + arg_fd.write(object_description(defaults[i - defaults_start])) # type: ignore formatted.append(arg_fd.getvalue()) if varargs: @@ -391,7 +429,7 @@ def formatargspec(function, args, varargs=None, varkw=None, defaults=None, arg_fd.write(format_arg_with_annotation(kwarg)) if kwonlydefaults and kwarg in kwonlydefaults: arg_fd.write(' = ' if kwarg in annotations else '=') - arg_fd.write(object_description(kwonlydefaults[kwarg])) + arg_fd.write(object_description(kwonlydefaults[kwarg])) # type: ignore formatted.append(arg_fd.getvalue()) if varkw: @@ -438,6 +476,7 @@ class Documenter(object): @staticmethod def get_attr(obj, name, *defargs): + # type: (Any, unicode, Any) -> Any """getattr() override for types such as Zope interfaces.""" for typ, func in iteritems(AutoDirective._special_attrgetters): if isinstance(obj, typ): @@ -446,10 +485,12 @@ class Documenter(object): @classmethod def can_document_member(cls, member, membername, isattr, parent): + # type: (Any, unicode, bool, Any) -> bool """Called to see if a member can be documented by this documenter.""" raise NotImplementedError('must be implemented in subclasses') def __init__(self, directive, name, indent=u''): + # type: (Directive, unicode, unicode) -> None self.directive = directive self.env = directive.env self.options = directive.genopt @@ -457,27 +498,29 @@ class Documenter(object): self.indent = indent # the module and object path within the module, and the fully # qualified name (all set after resolve_name succeeds) - self.modname = None - self.module = None - self.objpath = None - self.fullname = None + self.modname = None # type: str + self.module = None # type: ModuleType + self.objpath = None # type: List[unicode] + self.fullname = None # type: unicode # extra signature items (arguments and return annotation, # also set after resolve_name succeeds) - self.args = None - self.retann = None + self.args = None # type: unicode + self.retann = None # type: unicode # the object to document (set after import_object succeeds) - self.object = None - self.object_name = None + self.object = None # type: Any + self.object_name = None # type: unicode # the parent/owner of the object to document - self.parent = None + self.parent = None # type: Any # the module analyzer to get at attribute docs, or None - self.analyzer = None + self.analyzer = None # type: Any def add_line(self, line, source, *lineno): + # type: (unicode, unicode, int) -> None """Append one line of generated reST to the output.""" self.directive.result.append(self.indent + line, source, *lineno) def resolve_name(self, modname, parents, path, base): + # type: (str, Any, str, Any) -> Tuple[str, List[unicode]] """Resolve the module and name of the object to document given by the arguments and the current module/class. @@ -488,6 +531,7 @@ class Documenter(object): raise NotImplementedError('must be implemented in subclasses') def parse_name(self): + # type: () -> bool """Determine what module to import and what attribute to document. Returns True and sets *self.modname*, *self.objpath*, *self.fullname*, @@ -498,7 +542,7 @@ class Documenter(object): # an autogenerated one try: explicit_modname, path, base, args, retann = \ - py_ext_sig_re.match(self.name).groups() + py_ext_sig_re.match(self.name).groups() # type: ignore except AttributeError: self.directive.warn('invalid signature for auto%s (%r)' % (self.objtype, self.name)) @@ -512,8 +556,7 @@ class Documenter(object): modname = None parents = [] - self.modname, self.objpath = \ - self.resolve_name(modname, parents, path, base) + self.modname, self.objpath = self.resolve_name(modname, parents, path, base) if not self.modname: return False @@ -525,6 +568,7 @@ class Documenter(object): return True def import_object(self): + # type: () -> bool """Import the object given by *self.modname* and *self.objpath* and set it as *self.object*. @@ -568,13 +612,14 @@ class Documenter(object): errmsg += '; the following exception was raised:\n%s' % \ traceback.format_exc() if PY2: - errmsg = errmsg.decode('utf-8') + errmsg = errmsg.decode('utf-8') # type: ignore dbg(errmsg) self.directive.warn(errmsg) self.env.note_reread() return False def get_real_modname(self): + # type: () -> str """Get the real module name of an object to document. It can differ from the name of the module through which the object was @@ -583,6 +628,7 @@ class Documenter(object): return self.get_attr(self.object, '__module__', None) or self.modname def check_module(self): + # type: () -> bool """Check if *self.object* is really defined in the module given by *self.modname*. """ @@ -595,6 +641,7 @@ class Documenter(object): return True def format_args(self): + # type: () -> unicode """Format the argument signature of *self.object*. Should return None if the object does not have a signature. @@ -602,6 +649,7 @@ class Documenter(object): return None def format_name(self): + # type: () -> unicode """Format the name of *self.object*. This normally should be something that can be parsed by the generated @@ -613,13 +661,14 @@ class Documenter(object): return '.'.join(self.objpath) or self.modname def format_signature(self): + # type: () -> unicode """Format the signature (arguments and return annotation) of the object. Let the user process it via the ``autodoc-process-signature`` event. """ if self.args is not None: # signature given explicitly - args = "(%s)" % self.args + args = "(%s)" % self.args # type: unicode else: # try to introspect the signature try: @@ -643,6 +692,7 @@ class Documenter(object): return '' def add_directive_header(self, sig): + # type: (unicode) -> None """Add the directive header and options to the generated content.""" domain = getattr(self, 'domain', 'py') directive = getattr(self, 'directivetype', self.objtype) @@ -658,6 +708,7 @@ class Documenter(object): self.add_line(u' :module: %s' % self.modname, sourcename) def get_doc(self, encoding=None, ignore=1): + # type: (unicode, int) -> List[List[unicode]] """Decode and return lines of the docstring(s) for the object.""" docstring = self.get_attr(self.object, '__doc__', None) # make sure we have Unicode docstrings, then sanitize and split @@ -671,6 +722,7 @@ class Documenter(object): return [] def process_doc(self, docstrings): + # type: (List[List[unicode]]) -> Iterator[unicode] """Let the user process the docstrings before adding them.""" for docstringlines in docstrings: if self.env.app: @@ -682,6 +734,7 @@ class Documenter(object): yield line def get_sourcename(self): + # type: () -> unicode if self.analyzer: # prevent encoding errors when the file name is non-ASCII if not isinstance(self.analyzer.srcname, text_type): @@ -693,6 +746,7 @@ class Documenter(object): return u'docstring of %s' % self.fullname def add_content(self, more_content, no_docstring=False): + # type: (Any, bool) -> None """Add content from docstrings, attribute documentation and user.""" # set sourcename and add content from attribute documentation sourcename = self.get_sourcename() @@ -724,6 +778,7 @@ class Documenter(object): self.add_line(line, src[0], src[1]) def get_object_members(self, want_all): + # type: (bool) -> Tuple[bool, List[Tuple[unicode, object]]] """Return `(members_check_module, members)` where `members` is a list of `(membername, member)` pairs of the members of *self.object*. @@ -775,6 +830,7 @@ class Documenter(object): return False, sorted(members) def filter_members(self, members, want_all): + # type: (List[Tuple[unicode, Any]], bool) -> List[Tuple[unicode, Any, bool]] """Filter the given member list. Members are skipped if @@ -852,6 +908,7 @@ class Documenter(object): return ret def document_members(self, all_members=False): + # type: (bool) -> None """Generate reST for member documentation. If *all_members* is True, do all members, else those given by @@ -873,7 +930,7 @@ class Documenter(object): if membername not in self.options.exclude_members] # document non-skipped members - memberdocumenters = [] + memberdocumenters = [] # type: List[Tuple[Documenter, bool]] for (mname, member, isattr) in self.filter_members(members, want_all): classes = [cls for cls in itervalues(AutoDirective._registry) if cls.can_document_member(member, mname, isattr, self)] @@ -914,6 +971,7 @@ class Documenter(object): def generate(self, more_content=None, real_modname=None, check_module=False, all_members=False): + # type: (Any, str, bool, bool) -> None """Generate reST for the object given by *self.name*, and possibly for its members. @@ -1007,15 +1065,18 @@ class ModuleDocumenter(Documenter): @classmethod def can_document_member(cls, member, membername, isattr, parent): + # type: (Any, unicode, bool, Any) -> bool # don't document submodules automatically return False def resolve_name(self, modname, parents, path, base): + # type: (str, Any, str, Any) -> Tuple[str, List[unicode]] if modname is not None: self.directive.warn('"::" in automodule name doesn\'t make sense') return (path or '') + base, [] def parse_name(self): + # type: () -> bool ret = Documenter.parse_name(self) if self.args or self.retann: self.directive.warn('signature arguments or return annotation ' @@ -1023,6 +1084,7 @@ class ModuleDocumenter(Documenter): return ret def add_directive_header(self, sig): + # type: (unicode) -> None Documenter.add_directive_header(self, sig) sourcename = self.get_sourcename() @@ -1038,6 +1100,7 @@ class ModuleDocumenter(Documenter): self.add_line(u' :deprecated:', sourcename) def get_object_members(self, want_all): + # type: (bool) -> Tuple[bool, List[Tuple[unicode, object]]] if want_all: if not hasattr(self.object, '__all__'): # for implicit module members, check __module__ to avoid @@ -1074,6 +1137,7 @@ class ModuleLevelDocumenter(Documenter): classes, data/constants). """ def resolve_name(self, modname, parents, path, base): + # type: (str, Any, str, Any) -> Tuple[str, List[unicode]] if modname is None: if path: modname = path.rstrip('.') @@ -1094,6 +1158,7 @@ class ClassLevelDocumenter(Documenter): attributes). """ def resolve_name(self, modname, parents, path, base): + # type: (str, Any, str, Any) -> Tuple[str, List[unicode]] if modname is None: if path: mod_cls = path.rstrip('.') @@ -1127,6 +1192,7 @@ class DocstringSignatureMixin(object): """ def _find_signature(self, encoding=None): + # type: (unicode) -> Tuple[str, str] docstrings = self.get_doc(encoding) self._new_docstrings = docstrings[:] result = None @@ -1135,12 +1201,12 @@ class DocstringSignatureMixin(object): if not doclines: continue # match first line of docstring against signature RE - match = py_ext_sig_re.match(doclines[0]) + match = py_ext_sig_re.match(doclines[0]) # type: ignore if not match: continue exmod, path, base, args, retann = match.groups() # the base name must match ours - valid_names = [self.objpath[-1]] + valid_names = [self.objpath[-1]] # type: ignore if isinstance(self, ClassDocumenter): valid_names.append('__init__') if hasattr(self.object, '__mro__'): @@ -1155,19 +1221,21 @@ class DocstringSignatureMixin(object): return result def get_doc(self, encoding=None, ignore=1): + # type: (unicode, int) -> List[List[unicode]] lines = getattr(self, '_new_docstrings', None) if lines is not None: return lines - return Documenter.get_doc(self, encoding, ignore) + return Documenter.get_doc(self, encoding, ignore) # type: ignore def format_signature(self): - if self.args is None and self.env.config.autodoc_docstring_signature: + # type: () -> unicode + if self.args is None and self.env.config.autodoc_docstring_signature: # type: ignore # only act if a signature is not explicitly given already, and if # the feature is enabled result = self._find_signature() if result is not None: self.args, self.retann = result - return Documenter.format_signature(self) + return Documenter.format_signature(self) # type: ignore class DocstringStripSignatureMixin(DocstringSignatureMixin): @@ -1176,7 +1244,8 @@ class DocstringStripSignatureMixin(DocstringSignatureMixin): feature of stripping any function signature from the docstring. """ def format_signature(self): - if self.args is None and self.env.config.autodoc_docstring_signature: + # type: () -> unicode + if self.args is None and self.env.config.autodoc_docstring_signature: # type: ignore # only act if a signature is not explicitly given already, and if # the feature is enabled result = self._find_signature() @@ -1185,10 +1254,10 @@ class DocstringStripSignatureMixin(DocstringSignatureMixin): # DocstringSignatureMixin.format_signature. # Documenter.format_signature use self.args value to format. _args, self.retann = result - return Documenter.format_signature(self) + return Documenter.format_signature(self) # type: ignore -class FunctionDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): +class FunctionDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): # type: ignore """ Specialized Documenter subclass for functions. """ @@ -1197,9 +1266,11 @@ class FunctionDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): @classmethod def can_document_member(cls, member, membername, isattr, parent): + # type: (Any, unicode, bool, Any) -> bool return isinstance(member, (FunctionType, BuiltinFunctionType)) def format_args(self): + # type: () -> unicode if inspect.isbuiltin(self.object) or \ inspect.ismethoddescriptor(self.object): # cannot introspect arguments of a C function or method @@ -1226,10 +1297,11 @@ class FunctionDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): return args def document_members(self, all_members=False): + # type: (bool) -> None pass -class ClassDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): +class ClassDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): # type: ignore """ Specialized Documenter subclass for classes. """ @@ -1245,9 +1317,11 @@ class ClassDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): @classmethod def can_document_member(cls, member, membername, isattr, parent): + # type: (Any, unicode, bool, Any) -> bool return isinstance(member, class_types) def import_object(self): + # type: () -> Any ret = ModuleLevelDocumenter.import_object(self) # if the class is documented under another name, document it # as data/attribute @@ -1259,6 +1333,7 @@ class ClassDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): return ret def format_args(self): + # type: () -> unicode # for classes, the relevant signature is the __init__ method's initmeth = self.get_attr(self.object, '__init__', None) # classes without __init__ method, default __init__ or @@ -1278,12 +1353,14 @@ class ClassDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): return formatargspec(initmeth, *argspec) def format_signature(self): + # type: () -> unicode if self.doc_as_attr: return '' return DocstringSignatureMixin.format_signature(self) def add_directive_header(self, sig): + # type: (unicode) -> None if self.doc_as_attr: self.directivetype = 'attribute' Documenter.add_directive_header(self, sig) @@ -1301,6 +1378,7 @@ class ClassDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): sourcename) def get_doc(self, encoding=None, ignore=1): + # type: (unicode, int) -> List[List[unicode]] lines = getattr(self, '_new_docstrings', None) if lines is not None: return lines @@ -1346,6 +1424,7 @@ class ClassDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): return doc def add_content(self, more_content, no_docstring=False): + # type: (Any, bool) -> None if self.doc_as_attr: classname = safe_getattr(self.object, '__name__', None) if classname: @@ -1357,6 +1436,7 @@ class ClassDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): ModuleLevelDocumenter.add_content(self, more_content) def document_members(self, all_members=False): + # type: (bool) -> None if self.doc_as_attr: return ModuleLevelDocumenter.document_members(self, all_members) @@ -1374,8 +1454,9 @@ class ExceptionDocumenter(ClassDocumenter): @classmethod def can_document_member(cls, member, membername, isattr, parent): + # type: (Any, unicode, bool, Any) -> bool return isinstance(member, class_types) and \ - issubclass(member, BaseException) + issubclass(member, BaseException) # type: ignore class DataDocumenter(ModuleLevelDocumenter): @@ -1390,9 +1471,11 @@ class DataDocumenter(ModuleLevelDocumenter): @classmethod def can_document_member(cls, member, membername, isattr, parent): + # type: (Any, unicode, bool, Any) -> bool return isinstance(parent, ModuleDocumenter) and isattr def add_directive_header(self, sig): + # type: (unicode) -> None ModuleLevelDocumenter.add_directive_header(self, sig) sourcename = self.get_sourcename() if not self.options.annotation: @@ -1409,10 +1492,11 @@ class DataDocumenter(ModuleLevelDocumenter): sourcename) def document_members(self, all_members=False): + # type: (bool) -> None pass -class MethodDocumenter(DocstringSignatureMixin, ClassLevelDocumenter): +class MethodDocumenter(DocstringSignatureMixin, ClassLevelDocumenter): # type: ignore """ Specialized Documenter subclass for methods (normal, static and class). """ @@ -1422,10 +1506,12 @@ class MethodDocumenter(DocstringSignatureMixin, ClassLevelDocumenter): @classmethod def can_document_member(cls, member, membername, isattr, parent): + # type: (Any, unicode, bool, Any) -> bool return inspect.isroutine(member) and \ not isinstance(parent, ModuleDocumenter) def import_object(self): + # type: () -> Any ret = ClassLevelDocumenter.import_object(self) if not ret: return ret @@ -1433,11 +1519,11 @@ class MethodDocumenter(DocstringSignatureMixin, ClassLevelDocumenter): # to distinguish classmethod/staticmethod obj = self.parent.__dict__.get(self.object_name) - if isinstance(obj, classmethod): + if isinstance(obj, classmethod): # type: ignore self.directivetype = 'classmethod' # document class and static members before ordinary ones self.member_order = self.member_order - 1 - elif isinstance(obj, staticmethod): + elif isinstance(obj, staticmethod): # type: ignore self.directivetype = 'staticmethod' # document class and static members before ordinary ones self.member_order = self.member_order - 1 @@ -1446,6 +1532,7 @@ class MethodDocumenter(DocstringSignatureMixin, ClassLevelDocumenter): return ret def format_args(self): + # type: () -> unicode if inspect.isbuiltin(self.object) or \ inspect.ismethoddescriptor(self.object): # can never get arguments of a C function or method @@ -1459,10 +1546,11 @@ class MethodDocumenter(DocstringSignatureMixin, ClassLevelDocumenter): return args def document_members(self, all_members=False): + # type: (bool) -> None pass -class AttributeDocumenter(DocstringStripSignatureMixin, ClassLevelDocumenter): +class AttributeDocumenter(DocstringStripSignatureMixin, ClassLevelDocumenter): # type: ignore """ Specialized Documenter subclass for attributes. """ @@ -1479,6 +1567,7 @@ class AttributeDocumenter(DocstringStripSignatureMixin, ClassLevelDocumenter): @classmethod def can_document_member(cls, member, membername, isattr, parent): + # type: (Any, unicode, bool, Any) -> bool isdatadesc = isdescriptor(member) and not \ isinstance(member, cls.method_types) and not \ type(member).__name__ in ("type", "method_descriptor", @@ -1488,9 +1577,11 @@ class AttributeDocumenter(DocstringStripSignatureMixin, ClassLevelDocumenter): not isinstance(member, class_types)) def document_members(self, all_members=False): + # type: (bool) -> None pass def import_object(self): + # type: () -> Any ret = ClassLevelDocumenter.import_object(self) if isenumattribute(self.object): self.object = self.object.value @@ -1503,10 +1594,12 @@ class AttributeDocumenter(DocstringStripSignatureMixin, ClassLevelDocumenter): return ret def get_real_modname(self): + # type: () -> str return self.get_attr(self.parent or self.object, '__module__', None) \ or self.modname def add_directive_header(self, sig): + # type: (unicode) -> None ClassLevelDocumenter.add_directive_header(self, sig) sourcename = self.get_sourcename() if not self.options.annotation: @@ -1524,6 +1617,7 @@ class AttributeDocumenter(DocstringStripSignatureMixin, ClassLevelDocumenter): sourcename) def add_content(self, more_content, no_docstring=False): + # type: (Any, bool) -> None if not self._datadescriptor: # if it's not a data descriptor, its docstring is very probably the # wrong thing to display @@ -1545,10 +1639,12 @@ class InstanceAttributeDocumenter(AttributeDocumenter): @classmethod def can_document_member(cls, member, membername, isattr, parent): + # type: (Any, unicode, bool, Any) -> bool """This documents only INSTANCEATTR members.""" return isattr and (member is INSTANCEATTR) def import_object(self): + # type: () -> bool """Never import anything.""" # disguise as an attribute self.objtype = 'attribute' @@ -1556,6 +1652,7 @@ class InstanceAttributeDocumenter(AttributeDocumenter): return True def add_content(self, more_content, no_docstring=False): + # type: (Any, bool) -> None """Never try to get a docstring from the object.""" AttributeDocumenter.add_content(self, more_content, no_docstring=True) @@ -1576,10 +1673,10 @@ class AutoDirective(Directive): attributes of the parents. """ # a registry of objtype -> documenter class - _registry = {} + _registry = {} # type: Dict[unicode, Type[Documenter]] # a registry of type -> getattr function - _special_attrgetters = {} + _special_attrgetters = {} # type: Dict[Type, Callable] # flags that can be given in autodoc_default_flags _default_flags = set([ @@ -1597,13 +1694,16 @@ class AutoDirective(Directive): option_spec = DefDict(identity) def warn(self, msg): + # type: (unicode) -> None self.warnings.append(self.reporter.warning(msg, line=self.lineno)) def run(self): - self.filename_set = set() # a set of dependent filenames + # type: () -> List[nodes.Node] + self.filename_set = set() # type: Set[unicode] + # a set of dependent filenames self.reporter = self.state.document.reporter self.env = self.state.document.settings.env - self.warnings = [] + self.warnings = [] # type: List[unicode] self.result = ViewList() try: @@ -1667,6 +1767,7 @@ class AutoDirective(Directive): def add_documenter(cls): + # type: (Type[Documenter]) -> None """Register a new Documenter.""" if not issubclass(cls, Documenter): raise ExtensionError('autodoc documenter %r must be a subclass ' @@ -1679,6 +1780,7 @@ def add_documenter(cls): def setup(app): + # type: (Sphinx) -> Dict[unicode, Any] app.add_autodocumenter(ModuleDocumenter) app.add_autodocumenter(ClassDocumenter) app.add_autodocumenter(ExceptionDocumenter) diff --git a/sphinx/ext/autosummary/__init__.py b/sphinx/ext/autosummary/__init__.py index 030fec301..886623217 100644 --- a/sphinx/ext/autosummary/__init__.py +++ b/sphinx/ext/autosummary/__init__.py @@ -62,6 +62,7 @@ from six import string_types from types import ModuleType from six import text_type + from docutils.parsers.rst import directives from docutils.statemachine import ViewList from docutils import nodes @@ -73,6 +74,14 @@ from sphinx.util.compat import Directive from sphinx.pycode import ModuleAnalyzer, PycodeError from sphinx.ext.autodoc import Options +if False: + # For type annotation + from typing import Any, Tuple, Type, Union # NOQA + from docutils.utils import Inliner # NOQA + from sphinx.application import Sphinx # NOQA + from sphinx.environment import BuildEnvironment # NOQA + from sphinx.ext.autodoc import Documenter # NOQA + # -- autosummary_toc node ------------------------------------------------------ @@ -81,6 +90,7 @@ class autosummary_toc(nodes.comment): def process_autosummary_toc(app, doctree): + # type: (Sphinx, nodes.Node) -> None """Insert items described in autosummary:: to the TOC tree, but do not generate the toctree:: list. """ @@ -105,11 +115,13 @@ def process_autosummary_toc(app, doctree): def autosummary_toc_visit_html(self, node): + # type: (nodes.NodeVisitor, autosummary_toc) -> None """Hide autosummary toctree list in HTML output.""" raise nodes.SkipNode def autosummary_noop(self, node): + # type: (nodes.NodeVisitor, nodes.Node) -> None pass @@ -120,6 +132,7 @@ class autosummary_table(nodes.comment): def autosummary_table_visit_html(self, node): + # type: (nodes.NodeVisitor, autosummary_table) -> None """Make the first column of the table non-breaking.""" try: tbody = node[0][0][-1] @@ -138,11 +151,12 @@ def autosummary_table_visit_html(self, node): # -- autodoc integration ------------------------------------------------------- class FakeDirective(object): - env = {} + env = {} # type: Dict genopt = Options() def get_documenter(obj, parent): + # type: (Any, Any) -> Type[Documenter] """Get an autodoc.Documenter class suitable for documenting the given object. @@ -198,13 +212,15 @@ class Autosummary(Directive): } def warn(self, msg): + # type: (unicode) -> None self.warnings.append(self.state.document.reporter.warning( msg, line=self.lineno)) def run(self): + # type: () -> List[nodes.Node] self.env = env = self.state.document.settings.env self.genopt = Options() - self.warnings = [] + self.warnings = [] # type: List[nodes.Node] self.result = ViewList() names = [x.strip().split()[0] for x in self.content @@ -237,6 +253,7 @@ class Autosummary(Directive): return self.warnings + nodes def get_items(self, names): + # type: (List[unicode]) -> List[Tuple[unicode, unicode, unicode, unicode]] """Try to import the given names, and return a list of ``[(name, signature, summary_string, real_name), ...]``. """ @@ -244,7 +261,7 @@ class Autosummary(Directive): prefixes = get_import_prefixes_from_env(env) - items = [] + items = [] # type: List[Tuple[unicode, unicode, unicode, unicode]] max_item_chars = 50 @@ -334,6 +351,7 @@ class Autosummary(Directive): return items def get_table(self, items): + # type: (List[Tuple[unicode, unicode, unicode, unicode]]) -> List[Union[addnodes.tabular_col_spec, autosummary_table]] # NOQA """Generate a proper list of table nodes for autosummary:: directive. *items* is a list produced by :meth:`get_items`. @@ -352,6 +370,7 @@ class Autosummary(Directive): group.append(body) def append_row(*column_texts): + # type: (unicode) -> None row = nodes.row('') for text in column_texts: node = nodes.paragraph('') @@ -369,7 +388,7 @@ class Autosummary(Directive): for name, sig, summary, real_name in items: qualifier = 'obj' if 'nosignatures' not in self.options: - col1 = ':%s:`%s <%s>`\ %s' % (qualifier, name, real_name, rst.escape(sig)) + col1 = ':%s:`%s <%s>`\ %s' % (qualifier, name, real_name, rst.escape(sig)) # type: unicode # NOQA else: col1 = ':%s:`%s <%s>`' % (qualifier, name, real_name) col2 = summary @@ -379,6 +398,7 @@ class Autosummary(Directive): def mangle_signature(sig, max_chars=30): + # type: (unicode, int) -> unicode """Reformat a function signature to a more compact form.""" s = re.sub(r"^\((.*)\)$", r"\1", sig).strip() @@ -388,12 +408,12 @@ def mangle_signature(sig, max_chars=30): s = re.sub(r"'[^']*'", "", s) # Parse the signature to arguments + options - args = [] - opts = [] + args = [] # type: List[unicode] + opts = [] # type: List[unicode] opt_re = re.compile(r"^(.*, |)([a-zA-Z0-9_*]+)=") while s: - m = opt_re.search(s) + m = opt_re.search(s) # type: ignore if not m: # The rest are arguments args = s.split(', ') @@ -415,6 +435,7 @@ def mangle_signature(sig, max_chars=30): def limited_join(sep, items, max_chars=30, overflow_marker="..."): + # type: (unicode, List[unicode], int, unicode) -> unicode """Join a number of strings to one, limiting the length to *max_chars*. If the string overflows this limit, replace the last fitting item by @@ -441,11 +462,12 @@ def limited_join(sep, items, max_chars=30, overflow_marker="..."): # -- Importing items ----------------------------------------------------------- def get_import_prefixes_from_env(env): + # type: (BuildEnvironment) -> List """ Obtain current Python import prefixes (for `import_by_name`) from ``document.env`` """ - prefixes = [None] + prefixes = [None] # type: List currmodule = env.ref_context.get('py:module') if currmodule: @@ -462,6 +484,7 @@ def get_import_prefixes_from_env(env): def import_by_name(name, prefixes=[None]): + # type: (unicode, List) -> Tuple[unicode, Any, Any, unicode] """Import a Python object that has the given *name*, under one of the *prefixes*. The first name that succeeds is used. """ @@ -480,6 +503,7 @@ def import_by_name(name, prefixes=[None]): def _import_by_name(name): + # type: (str) -> Tuple[Any, Any, unicode] """Import a Python object given its full name.""" try: name_parts = name.split('.') @@ -524,6 +548,7 @@ def _import_by_name(name): def autolink_role(typ, rawtext, etext, lineno, inliner, options={}, content=[]): + # type: (unicode, unicode, unicode, int, Inliner, Dict, List[unicode]) -> Tuple[List[nodes.Node], List[nodes.Node]] # NOQA """Smart linking role. Expands to ':obj:`text`' if `text` is an object that can be imported; @@ -539,21 +564,24 @@ def autolink_role(typ, rawtext, etext, lineno, inliner, name, obj, parent, modname = import_by_name(pnode['reftarget'], prefixes) except ImportError: content = pnode[0] - r[0][0] = nodes.emphasis(rawtext, content[0].astext(), - classes=content['classes']) + r[0][0] = nodes.emphasis(rawtext, content[0].astext(), # type: ignore + classes=content['classes']) # type: ignore return r def get_rst_suffix(app): + # type: (Sphinx) -> unicode def get_supported_format(suffix): + # type: (unicode) -> Tuple[unicode] parser_class = app.config.source_parsers.get(suffix) if parser_class is None: return ('restructuredtext',) if isinstance(parser_class, string_types): - parser_class = import_object(parser_class, 'source parser') + parser_class = import_object(parser_class, 'source parser') # type: ignore return parser_class.supported - for suffix in app.config.source_suffix: + suffix = None # type: unicode + for suffix in app.config.source_suffix: # type: ignore if 'restructuredtext' in get_supported_format(suffix): return suffix @@ -561,6 +589,7 @@ def get_rst_suffix(app): def process_generate_options(app): + # type: (Sphinx) -> None genfiles = app.config.autosummary_generate if genfiles and not hasattr(genfiles, '__len__'): @@ -589,6 +618,7 @@ def process_generate_options(app): def setup(app): + # type: (Sphinx) -> Dict[unicode, Any] # I need autodoc app.setup_extension('sphinx.ext.autodoc') app.add_node(autosummary_toc, diff --git a/sphinx/ext/autosummary/generate.py b/sphinx/ext/autosummary/generate.py index 8495da7b4..3e81a14a2 100644 --- a/sphinx/ext/autosummary/generate.py +++ b/sphinx/ext/autosummary/generate.py @@ -49,8 +49,16 @@ add_documenter(MethodDocumenter) add_documenter(AttributeDocumenter) add_documenter(InstanceAttributeDocumenter) +if False: + # For type annotation + from typing import Any, Callable, Tuple # NOQA + from sphinx import addnodes # NOQA + from sphinx.builders import Builder # NOQA + from sphinx.environment import BuildEnvironment # NOQA + def main(argv=sys.argv): + # type: (List[str]) -> None usage = """%prog [OPTIONS] SOURCEFILE ...""" p = optparse.OptionParser(usage.strip()) p.add_option("-o", "--output-dir", action="store", type="string", @@ -73,10 +81,12 @@ def main(argv=sys.argv): def _simple_info(msg): + # type: (unicode) -> None print(msg) def _simple_warn(msg): + # type: (unicode) -> None print('WARNING: ' + msg, file=sys.stderr) @@ -85,6 +95,7 @@ def _simple_warn(msg): def generate_autosummary_docs(sources, output_dir=None, suffix='.rst', warn=_simple_warn, info=_simple_info, base_path=None, builder=None, template_dir=None): + # type: (List[unicode], unicode, unicode, Callable, Callable, unicode, Builder, unicode) -> None # NOQA showed_sources = list(sorted(sources)) if len(showed_sources) > 20: @@ -99,6 +110,7 @@ def generate_autosummary_docs(sources, output_dir=None, suffix='.rst', sources = [os.path.join(base_path, filename) for filename in sources] # create our own templating environment + template_dirs = None # type: List[unicode] template_dirs = [os.path.join(package_dir, 'ext', 'autosummary', 'templates')] if builder is not None: @@ -154,7 +166,8 @@ def generate_autosummary_docs(sources, output_dir=None, suffix='.rst', template = template_env.get_template('autosummary/base.rst') def get_members(obj, typ, include_public=[]): - items = [] + # type: (Any, unicode, List[unicode]) -> Tuple[List[unicode], List[unicode]] + items = [] # type: List[unicode] for name in dir(obj): try: documenter = get_documenter(safe_getattr(obj, name), @@ -167,7 +180,7 @@ def generate_autosummary_docs(sources, output_dir=None, suffix='.rst', if x in include_public or not x.startswith('_')] return public, items - ns = {} + ns = {} # type: Dict[unicode, Any] if doc.objtype == 'module': ns['members'] = dir(obj) @@ -215,21 +228,23 @@ def generate_autosummary_docs(sources, output_dir=None, suffix='.rst', # -- Finding documented entries in files --------------------------------------- def find_autosummary_in_files(filenames): + # type: (List[unicode]) -> List[Tuple[unicode, unicode, unicode]] """Find out what items are documented in source/*.rst. See `find_autosummary_in_lines`. """ - documented = [] + documented = [] # type: List[Tuple[unicode, unicode, unicode]] for filename in filenames: - with codecs.open(filename, 'r', encoding='utf-8', + with codecs.open(filename, 'r', encoding='utf-8', # type: ignore errors='ignore') as f: lines = f.read().splitlines() - documented.extend(find_autosummary_in_lines(lines, + documented.extend(find_autosummary_in_lines(lines, # type: ignore filename=filename)) return documented def find_autosummary_in_docstring(name, module=None, filename=None): + # type: (unicode, Any, unicode) -> List[Tuple[unicode, unicode, unicode]] """Find out what items are documented in the given object's docstring. See `find_autosummary_in_lines`. @@ -249,6 +264,7 @@ def find_autosummary_in_docstring(name, module=None, filename=None): def find_autosummary_in_lines(lines, module=None, filename=None): + # type: (List[unicode], Any, unicode) -> List[Tuple[unicode, unicode, unicode]] """Find out what items appear in autosummary:: directives in the given lines. @@ -268,9 +284,9 @@ def find_autosummary_in_lines(lines, module=None, filename=None): toctree_arg_re = re.compile(r'^\s+:toctree:\s*(.*?)\s*$') template_arg_re = re.compile(r'^\s+:template:\s*(.*?)\s*$') - documented = [] + documented = [] # type: List[Tuple[unicode, unicode, unicode]] - toctree = None + toctree = None # type: unicode template = None current_module = module in_autosummary = False @@ -278,7 +294,7 @@ def find_autosummary_in_lines(lines, module=None, filename=None): for line in lines: if in_autosummary: - m = toctree_arg_re.match(line) + m = toctree_arg_re.match(line) # type: ignore if m: toctree = m.group(1) if filename: @@ -286,7 +302,7 @@ def find_autosummary_in_lines(lines, module=None, filename=None): toctree) continue - m = template_arg_re.match(line) + m = template_arg_re.match(line) # type: ignore if m: template = m.group(1).strip() continue @@ -294,7 +310,7 @@ def find_autosummary_in_lines(lines, module=None, filename=None): if line.strip().startswith(':'): continue # skip options - m = autosummary_item_re.match(line) + m = autosummary_item_re.match(line) # type: ignore if m: name = m.group(1).strip() if name.startswith('~'): @@ -310,7 +326,7 @@ def find_autosummary_in_lines(lines, module=None, filename=None): in_autosummary = False - m = autosummary_re.match(line) + m = autosummary_re.match(line) # type: ignore if m: in_autosummary = True base_indent = m.group(1) @@ -318,7 +334,7 @@ def find_autosummary_in_lines(lines, module=None, filename=None): template = None continue - m = automodule_re.search(line) + m = automodule_re.search(line) # type: ignore if m: current_module = m.group(1).strip() # recurse into the automodule docstring @@ -326,7 +342,7 @@ def find_autosummary_in_lines(lines, module=None, filename=None): current_module, filename=filename)) continue - m = module_re.match(line) + m = module_re.match(line) # type: ignore if m: current_module = m.group(2) continue diff --git a/sphinx/ext/coverage.py b/sphinx/ext/coverage.py index c08b1e706..98681466c 100644 --- a/sphinx/ext/coverage.py +++ b/sphinx/ext/coverage.py @@ -22,14 +22,21 @@ import sphinx from sphinx.builders import Builder from sphinx.util.inspect import safe_getattr +if False: + # For type annotation + from typing import Any, Callable, IO, Pattern, Tuple # NOQA + from sphinx.application import Sphinx # NOQA + # utility def write_header(f, text, char='-'): + # type:(IO, unicode, unicode) -> None f.write(text + '\n') f.write(char * len(text) + '\n') def compile_regex_list(name, exps, warnfunc): + # type: (unicode, unicode, Callable) -> List[Pattern] lst = [] for exp in exps: try: @@ -44,19 +51,20 @@ class CoverageBuilder(Builder): name = 'coverage' def init(self): - self.c_sourcefiles = [] + # type: () -> None + self.c_sourcefiles = [] # type: List[unicode] for pattern in self.config.coverage_c_path: pattern = path.join(self.srcdir, pattern) self.c_sourcefiles.extend(glob.glob(pattern)) - self.c_regexes = [] + self.c_regexes = [] # type: List[Tuple[unicode, Pattern]] for (name, exp) in self.config.coverage_c_regexes.items(): try: self.c_regexes.append((name, re.compile(exp))) except Exception: self.warn('invalid regex %r in coverage_c_regexes' % exp) - self.c_ignorexps = {} + self.c_ignorexps = {} # type: Dict[unicode, List[Pattern]] for (name, exps) in iteritems(self.config.coverage_ignore_c_items): self.c_ignorexps[name] = compile_regex_list( 'coverage_ignore_c_items', exps, self.warn) @@ -71,18 +79,21 @@ class CoverageBuilder(Builder): self.warn) def get_outdated_docs(self): + # type: () -> unicode return 'coverage overview' def write(self, *ignored): - self.py_undoc = {} + # type: (Any) -> None + self.py_undoc = {} # type: Dict[unicode, Dict[unicode, Any]] self.build_py_coverage() self.write_py_coverage() - self.c_undoc = {} + self.c_undoc = {} # type: Dict[unicode, Set[Tuple[unicode, unicode]]] self.build_c_coverage() self.write_c_coverage() def build_c_coverage(self): + # type: () -> None # Fetch all the info from the header files c_objects = self.env.domaindata['c']['objects'] for filename in self.c_sourcefiles: @@ -104,6 +115,7 @@ class CoverageBuilder(Builder): self.c_undoc[filename] = undoc def write_c_coverage(self): + # type: () -> None output_file = path.join(self.outdir, 'c.txt') with open(output_file, 'w') as op: if self.config.coverage_write_headline: @@ -117,6 +129,7 @@ class CoverageBuilder(Builder): op.write('\n') def build_py_coverage(self): + # type: () -> None objects = self.env.domaindata['py']['objects'] modules = self.env.domaindata['py']['modules'] @@ -140,7 +153,7 @@ class CoverageBuilder(Builder): continue funcs = [] - classes = {} + classes = {} # type: Dict[unicode, List[unicode]] for name, obj in inspect.getmembers(mod): # diverse module attributes are ignored: @@ -177,7 +190,7 @@ class CoverageBuilder(Builder): classes[name] = [] continue - attrs = [] + attrs = [] # type: List[unicode] for attr_name in dir(obj): if attr_name not in obj.__dict__: @@ -207,6 +220,7 @@ class CoverageBuilder(Builder): self.py_undoc[mod_name] = {'funcs': funcs, 'classes': classes} def write_py_coverage(self): + # type: () -> None output_file = path.join(self.outdir, 'python.txt') failed = [] with open(output_file, 'w') as op: @@ -242,6 +256,7 @@ class CoverageBuilder(Builder): op.writelines(' * %s -- %s\n' % x for x in failed) def finish(self): + # type: () -> None # dump the coverage data to a pickle file too picklepath = path.join(self.outdir, 'undoc.pickle') with open(picklepath, 'wb') as dumpfile: @@ -249,6 +264,7 @@ class CoverageBuilder(Builder): def setup(app): + # type: (Sphinx) -> Dict[unicode, Any] app.add_builder(CoverageBuilder) app.add_config_value('coverage_ignore_modules', [], False) app.add_config_value('coverage_ignore_functions', [], False) diff --git a/sphinx/ext/doctest.py b/sphinx/ext/doctest.py index 244762b69..31ccb22d9 100644 --- a/sphinx/ext/doctest.py +++ b/sphinx/ext/doctest.py @@ -19,6 +19,7 @@ from os import path import doctest from six import itervalues, StringIO, binary_type, text_type, PY2 + from docutils import nodes from docutils.parsers.rst import directives @@ -27,14 +28,20 @@ from sphinx.builders import Builder from sphinx.util import force_decode from sphinx.util.nodes import set_source_info from sphinx.util.compat import Directive -from sphinx.util.console import bold +from sphinx.util.console import bold # type: ignore from sphinx.util.osutil import fs_encoding +if False: + # For type annotation + from typing import Any, Callable, IO, Iterable, Sequence, Tuple # NOQA + from sphinx.application import Sphinx # NOQA + blankline_re = re.compile(r'^\s*<BLANKLINE>', re.MULTILINE) doctestopt_re = re.compile(r'#\s*doctest:.+$', re.MULTILINE) if PY2: def doctest_encode(text, encoding): + # type: (str, unicode) -> unicode if isinstance(text, text_type): text = text.encode(encoding) if text.startswith(codecs.BOM_UTF8): @@ -42,6 +49,7 @@ if PY2: return text else: def doctest_encode(text, encoding): + # type: (unicode, unicode) -> unicode return text @@ -58,6 +66,7 @@ class TestDirective(Directive): final_argument_whitespace = True def run(self): + # type: () -> List[nodes.Node] # use ordinary docutils nodes for test code: they get special attributes # so that our builder recognizes them, and the other builders are happy. code = '\n'.join(self.content) @@ -92,20 +101,20 @@ class TestDirective(Directive): option_strings = self.options['options'].replace(',', ' ').split() for option in option_strings: if (option[0] not in '+-' or option[1:] not in - doctest.OPTIONFLAGS_BY_NAME): + doctest.OPTIONFLAGS_BY_NAME): # type: ignore # XXX warn? continue - flag = doctest.OPTIONFLAGS_BY_NAME[option[1:]] + flag = doctest.OPTIONFLAGS_BY_NAME[option[1:]] # type: ignore node['options'][flag] = (option[0] == '+') return [node] class TestsetupDirective(TestDirective): - option_spec = {} + option_spec = {} # type: Dict class TestcleanupDirective(TestDirective): - option_spec = {} + option_spec = {} # type: Dict class DoctestDirective(TestDirective): @@ -128,19 +137,21 @@ class TestoutputDirective(TestDirective): } -parser = doctest.DocTestParser() +parser = doctest.DocTestParser() # type: ignore # helper classes class TestGroup(object): def __init__(self, name): + # type: (unicode) -> None self.name = name - self.setup = [] - self.tests = [] - self.cleanup = [] + self.setup = [] # type: List[TestCode] + self.tests = [] # type: List[List[TestCode]] + self.cleanup = [] # type: List[TestCode] def add_code(self, code, prepend=False): + # type: (TestCode, bool) -> None if code.type == 'testsetup': if prepend: self.setup.insert(0, code) @@ -158,30 +169,34 @@ class TestGroup(object): else: raise RuntimeError('invalid TestCode type') - def __repr__(self): + def __repr__(self): # type: ignore + # type: () -> unicode return 'TestGroup(name=%r, setup=%r, cleanup=%r, tests=%r)' % ( self.name, self.setup, self.cleanup, self.tests) class TestCode(object): def __init__(self, code, type, lineno, options=None): + # type: (unicode, unicode, int, Dict) -> None self.code = code self.type = type self.lineno = lineno self.options = options or {} - def __repr__(self): + def __repr__(self): # type: ignore + # type: () -> unicode return 'TestCode(%r, %r, %r, options=%r)' % ( self.code, self.type, self.lineno, self.options) -class SphinxDocTestRunner(doctest.DocTestRunner): +class SphinxDocTestRunner(doctest.DocTestRunner): # type: ignore def summarize(self, out, verbose=None): + # type: (Callable, bool) -> Tuple[int, int] string_io = StringIO() old_stdout = sys.stdout sys.stdout = string_io try: - res = doctest.DocTestRunner.summarize(self, verbose) + res = doctest.DocTestRunner.summarize(self, verbose) # type: ignore finally: sys.stdout = old_stdout out(string_io.getvalue()) @@ -189,6 +204,7 @@ class SphinxDocTestRunner(doctest.DocTestRunner): def _DocTestRunner__patched_linecache_getlines(self, filename, module_globals=None): + # type: (unicode, Any) -> Any # this is overridden from DocTestRunner adding the try-except below m = self._DocTestRunner__LINECACHE_FILENAME_RE.match(filename) if m and m.group('name') == self.test.name: @@ -213,6 +229,7 @@ class DocTestBuilder(Builder): name = 'doctest' def init(self): + # type: () -> None # default options self.opt = self.config.doctest_default_flags @@ -221,7 +238,7 @@ class DocTestBuilder(Builder): # for doctest examples but unusable for multi-statement code such # as setup code -- to be able to use doctest error reporting with # that code nevertheless, we monkey-patch the "compile" it uses. - doctest.compile = self.compile + doctest.compile = self.compile # type: ignore sys.path[0:0] = self.config.doctest_path @@ -236,7 +253,8 @@ class DocTestBuilder(Builder): date = time.strftime('%Y-%m-%d %H:%M:%S') - self.outfile = codecs.open(path.join(self.outdir, 'output.txt'), + self.outfile = None # type: IO + self.outfile = codecs.open(path.join(self.outdir, 'output.txt'), # type: ignore 'w', encoding='utf-8') self.outfile.write('''\ Results of doctest builder run on %s @@ -244,10 +262,12 @@ Results of doctest builder run on %s ''' % (date, '='*len(date))) def _out(self, text): + # type: (unicode) -> None self.info(text, nonl=True) self.outfile.write(text) def _warn_out(self, text): + # type: (unicode) -> None if self.app.quiet or self.app.warningiserror: self.warn(text) else: @@ -257,14 +277,18 @@ Results of doctest builder run on %s self.outfile.write(text) def get_target_uri(self, docname, typ=None): + # type: (unicode, unicode) -> unicode return '' def get_outdated_docs(self): + # type: () -> Set[unicode] return self.env.found_docs def finish(self): + # type: () -> None # write executive summary def s(v): + # type: (int) -> unicode return v != 1 and 's' or '' repl = (self.total_tries, s(self.total_tries), self.total_failures, s(self.total_failures), @@ -284,6 +308,7 @@ Doctest summary self.app.statuscode = 1 def write(self, build_docnames, updated_docnames, method='update'): + # type: (Iterable[unicode], Sequence[unicode], unicode) -> None if build_docnames is None: build_docnames = sorted(self.env.all_docs) @@ -294,7 +319,8 @@ Doctest summary self.test_doc(docname, doctree) def test_doc(self, docname, doctree): - groups = {} + # type: (unicode, nodes.Node) -> None + groups = {} # type: Dict[unicode, TestGroup] add_to_all_groups = [] self.setup_runner = SphinxDocTestRunner(verbose=False, optionflags=self.opt) @@ -308,11 +334,13 @@ Doctest summary if self.config.doctest_test_doctest_blocks: def condition(node): + # type: (nodes.Node) -> bool return (isinstance(node, (nodes.literal_block, nodes.comment)) and 'testnodetype' in node) or \ isinstance(node, nodes.doctest_block) else: def condition(node): + # type: (nodes.Node) -> bool return isinstance(node, (nodes.literal_block, nodes.comment)) \ and 'testnodetype' in node for node in doctree.traverse(condition): @@ -366,26 +394,29 @@ Doctest summary self.cleanup_tries += res_t def compile(self, code, name, type, flags, dont_inherit): + # type: (unicode, unicode, unicode, Any, bool) -> Any return compile(code, name, self.type, flags, dont_inherit) def test_group(self, group, filename): + # type: (TestGroup, unicode) -> None if PY2: filename_str = filename.encode(fs_encoding) else: filename_str = filename - ns = {} + ns = {} # type: Dict def run_setup_cleanup(runner, testcodes, what): + # type: (Any, List[TestCode], Any) -> bool examples = [] for testcode in testcodes: - examples.append(doctest.Example( - doctest_encode(testcode.code, self.env.config.source_encoding), '', + examples.append(doctest.Example( # type: ignore + doctest_encode(testcode.code, self.env.config.source_encoding), '', # type: ignore # NOQA lineno=testcode.lineno)) if not examples: return True # simulate a doctest with the code - sim_doctest = doctest.DocTest(examples, {}, + sim_doctest = doctest.DocTest(examples, {}, # type: ignore '%s (%s code)' % (group.name, what), filename_str, 0, None) sim_doctest.globs = ns @@ -407,7 +438,7 @@ Doctest summary # ordinary doctests (code/output interleaved) try: test = parser.get_doctest( - doctest_encode(code[0].code, self.env.config.source_encoding), {}, + doctest_encode(code[0].code, self.env.config.source_encoding), {}, # type: ignore # NOQA group.name, filename_str, code[0].lineno) except Exception: self.warn('ignoring invalid doctest code: %r' % @@ -427,19 +458,19 @@ Doctest summary output = code[1] and code[1].code or '' options = code[1] and code[1].options or {} # disable <BLANKLINE> processing as it is not needed - options[doctest.DONT_ACCEPT_BLANKLINE] = True + options[doctest.DONT_ACCEPT_BLANKLINE] = True # type: ignore # find out if we're testing an exception m = parser._EXCEPTION_RE.match(output) if m: exc_msg = m.group('msg') else: exc_msg = None - example = doctest.Example( - doctest_encode(code[0].code, self.env.config.source_encoding), output, + example = doctest.Example( # type: ignore + doctest_encode(code[0].code, self.env.config.source_encoding), output, # type: ignore # NOQA exc_msg=exc_msg, lineno=code[0].lineno, options=options) - test = doctest.DocTest([example], {}, group.name, + test = doctest.DocTest([example], {}, group.name, # type: ignore filename_str, code[0].lineno, None) self.type = 'exec' # multiple statements again # DocTest.__init__ copies the globs namespace, which we don't want @@ -452,6 +483,7 @@ Doctest summary def setup(app): + # type: (Sphinx) -> Dict[unicode, Any] app.add_directive('testsetup', TestsetupDirective) app.add_directive('testcleanup', TestcleanupDirective) app.add_directive('doctest', DoctestDirective) @@ -465,6 +497,6 @@ def setup(app): app.add_config_value('doctest_global_cleanup', '', False) app.add_config_value( 'doctest_default_flags', - doctest.DONT_ACCEPT_TRUE_FOR_1 | doctest.ELLIPSIS | doctest.IGNORE_EXCEPTION_DETAIL, + doctest.DONT_ACCEPT_TRUE_FOR_1 | doctest.ELLIPSIS | doctest.IGNORE_EXCEPTION_DETAIL, # type: ignore # NOQA False) return {'version': sphinx.__display_version__, 'parallel_read_safe': True} diff --git a/sphinx/ext/graphviz.py b/sphinx/ext/graphviz.py index 47c8dcfff..0c29777dd 100644 --- a/sphinx/ext/graphviz.py +++ b/sphinx/ext/graphviz.py @@ -18,6 +18,7 @@ from subprocess import Popen, PIPE from hashlib import sha1 from six import text_type + from docutils import nodes from docutils.parsers.rst import directives from docutils.statemachine import ViewList @@ -29,6 +30,11 @@ from sphinx.util.i18n import search_image_for_language from sphinx.util.osutil import ensuredir, ENOENT, EPIPE, EINVAL from sphinx.util.compat import Directive +if False: + # For type annotation + from typing import Any, Tuple # NOQA + from sphinx.application import Sphinx # NOQA + mapname_re = re.compile(r'<map id="(.*?)"') @@ -42,6 +48,7 @@ class graphviz(nodes.General, nodes.Inline, nodes.Element): def figure_wrapper(directive, node, caption): + # type: (Directive, nodes.Node, unicode) -> nodes.figure figure_node = nodes.figure('', node) if 'align' in node: figure_node['align'] = node.attributes.pop('align') @@ -58,6 +65,7 @@ def figure_wrapper(directive, node, caption): def align_spec(argument): + # type: (Any) -> bool return directives.choice(argument, ('left', 'center', 'right')) @@ -79,6 +87,7 @@ class Graphviz(Directive): } def run(self): + # type: () -> List[nodes.Node] if self.arguments: document = self.state.document if self.content: @@ -140,6 +149,7 @@ class GraphvizSimple(Directive): } def run(self): + # type: () -> List[nodes.Node] node = graphviz() node['code'] = '%s %s {\n%s\n}\n' % \ (self.name, self.arguments[0], '\n'.join(self.content)) @@ -162,6 +172,7 @@ class GraphvizSimple(Directive): def render_dot(self, code, options, format, prefix='graphviz'): + # type: (nodes.NodeVisitor, unicode, Dict, unicode, unicode) -> Tuple[unicode, unicode] """Render graphviz code into a PNG or PDF output file.""" graphviz_dot = options.get('graphviz_dot', self.builder.config.graphviz_dot) hashkey = (code + str(options) + str(graphviz_dot) + @@ -221,6 +232,7 @@ def render_dot(self, code, options, format, prefix='graphviz'): def warn_for_deprecated_option(self, node): + # type: (nodes.NodeVisitor, graphviz) -> None if hasattr(self.builder, '_graphviz_warned_inline'): return @@ -231,6 +243,7 @@ def warn_for_deprecated_option(self, node): def render_dot_html(self, node, code, options, prefix='graphviz', imgcls=None, alt=None): + # type: (nodes.NodeVisitor, graphviz, unicode, Dict, unicode, unicode, unicode) -> Tuple[unicode, unicode] # NOQA format = self.builder.config.graphviz_output_format try: if format not in ('png', 'svg'): @@ -263,7 +276,7 @@ def render_dot_html(self, node, code, options, prefix='graphviz', (fname, alt, imgcss)) else: # has a map: get the name of the map and connect the parts - mapname = mapname_re.match(imgmap[0].decode('utf-8')).group(1) + mapname = mapname_re.match(imgmap[0].decode('utf-8')).group(1) # type: ignore self.body.append('<img src="%s" alt="%s" usemap="#%s" %s/>\n' % (fname, alt, mapname, imgcss)) self.body.extend([item.decode('utf-8') for item in imgmap]) @@ -274,11 +287,13 @@ def render_dot_html(self, node, code, options, prefix='graphviz', def html_visit_graphviz(self, node): + # type: (nodes.NodeVisitor, graphviz) -> None warn_for_deprecated_option(self, node) render_dot_html(self, node, node['code'], node['options']) def render_dot_latex(self, node, code, options, prefix='graphviz'): + # type: (nodes.NodeVisitor, graphviz, unicode, Dict, unicode) -> None try: fname, outfn = render_dot(self, code, options, 'pdf', prefix) except GraphvizError as exc: @@ -292,7 +307,7 @@ def render_dot_latex(self, node, code, options, prefix='graphviz'): para_separator = '\n' if fname is not None: - post = None + post = None # type: unicode if not is_inline and 'align' in node: if node['align'] == 'left': self.body.append('{') @@ -309,11 +324,13 @@ def render_dot_latex(self, node, code, options, prefix='graphviz'): def latex_visit_graphviz(self, node): + # type: (nodes.NodeVisitor, graphviz) -> None warn_for_deprecated_option(self, node) render_dot_latex(self, node, node['code'], node['options']) def render_dot_texinfo(self, node, code, options, prefix='graphviz'): + # type: (nodes.NodeVisitor, graphviz, unicode, Dict, unicode) -> None try: fname, outfn = render_dot(self, code, options, 'png', prefix) except GraphvizError as exc: @@ -325,11 +342,13 @@ def render_dot_texinfo(self, node, code, options, prefix='graphviz'): def texinfo_visit_graphviz(self, node): + # type: (nodes.NodeVisitor, graphviz) -> None warn_for_deprecated_option(self, node) render_dot_texinfo(self, node, node['code'], node['options']) def text_visit_graphviz(self, node): + # type: (nodes.NodeVisitor, graphviz) -> None warn_for_deprecated_option(self, node) if 'alt' in node.attributes: self.add_text(_('[graph: %s]') % node['alt']) @@ -339,6 +358,7 @@ def text_visit_graphviz(self, node): def man_visit_graphviz(self, node): + # type: (nodes.NodeVisitor, graphviz) -> None warn_for_deprecated_option(self, node) if 'alt' in node.attributes: self.body.append(_('[graph: %s]') % node['alt']) @@ -348,6 +368,7 @@ def man_visit_graphviz(self, node): def setup(app): + # type: (Sphinx) -> Dict[unicode, Any] app.add_node(graphviz, html=(html_visit_graphviz, None), latex=(latex_visit_graphviz, None), diff --git a/sphinx/ext/ifconfig.py b/sphinx/ext/ifconfig.py index 74580fb4a..923e2d080 100644 --- a/sphinx/ext/ifconfig.py +++ b/sphinx/ext/ifconfig.py @@ -26,6 +26,11 @@ import sphinx from sphinx.util.nodes import set_source_info from sphinx.util.compat import Directive +if False: + # For type annotation + from typing import Any # NOQA + from sphinx.application import Sphinx # NOQA + class ifconfig(nodes.Element): pass @@ -37,9 +42,10 @@ class IfConfig(Directive): required_arguments = 1 optional_arguments = 0 final_argument_whitespace = True - option_spec = {} + option_spec = {} # type: Dict def run(self): + # type: () -> List[nodes.Node] node = ifconfig() node.document = self.state.document set_source_info(self, node) @@ -50,16 +56,17 @@ class IfConfig(Directive): def process_ifconfig_nodes(app, doctree, docname): + # type: (Sphinx, nodes.Node, unicode) -> None ns = dict((k, app.config[k]) for k in app.config.values) ns.update(app.config.__dict__.copy()) ns['builder'] = app.builder.name for node in doctree.traverse(ifconfig): try: - res = eval(node['expr'], ns) + res = eval(node['expr'], ns) # type: ignore except Exception as err: # handle exceptions in a clean fashion from traceback import format_exception_only - msg = ''.join(format_exception_only(err.__class__, err)) + msg = ''.join(format_exception_only(err.__class__, err)) # type: ignore newnode = doctree.reporter.error('Exception occured in ' 'ifconfig expression: \n%s' % msg, base_node=node) @@ -72,6 +79,7 @@ def process_ifconfig_nodes(app, doctree, docname): def setup(app): + # type: (Sphinx) -> Dict[unicode, Any] app.add_node(ifconfig) app.add_directive('ifconfig', IfConfig) app.connect('doctree-resolved', process_ifconfig_nodes) diff --git a/sphinx/ext/imgmath.py b/sphinx/ext/imgmath.py index e5b8b26c5..9b75e7ee3 100644 --- a/sphinx/ext/imgmath.py +++ b/sphinx/ext/imgmath.py @@ -19,6 +19,7 @@ from subprocess import Popen, PIPE from hashlib import sha1 from six import text_type + from docutils import nodes import sphinx @@ -29,11 +30,18 @@ from sphinx.util.osutil import ensuredir, ENOENT, cd from sphinx.util.pycompat import sys_encoding from sphinx.ext.mathbase import setup_math as mathbase_setup, wrap_displaymath +if False: + # For type annotation + from typing import Any, Tuple # NOQA + from sphinx.application import Sphinx # NOQA + from sphinx.ext.mathbase import math as math_node, displaymath # NOQA + class MathExtError(SphinxError): category = 'Math extension error' def __init__(self, msg, stderr=None, stdout=None): + # type: (unicode, unicode, unicode) -> None if stderr: msg += '\n[stderr]\n' + stderr.decode(sys_encoding, 'replace') if stdout: @@ -72,6 +80,7 @@ depth_re = re.compile(br'\[\d+ depth=(-?\d+)\]') def render_math(self, math): + # type: (nodes.NodeVisitor, unicode) -> Tuple[unicode, int] """Render the LaTeX math expression *math* using latex and dvipng or dvisvgm. @@ -116,9 +125,8 @@ def render_math(self, math): else: tempdir = self.builder._imgmath_tempdir - tf = codecs.open(path.join(tempdir, 'math.tex'), 'w', 'utf-8') - tf.write(latex) - tf.close() + with codecs.open(path.join(tempdir, 'math.tex'), 'w', 'utf-8') as tf: # type: ignore + tf.write(latex) # build latex command; old versions of latex don't have the # --output-directory option, so we have to manually chdir to the @@ -199,23 +207,26 @@ def render_math(self, math): def cleanup_tempdir(app, exc): + # type: (Sphinx, Exception) -> None if exc: return if not hasattr(app.builder, '_imgmath_tempdir'): return try: - shutil.rmtree(app.builder._mathpng_tempdir) + shutil.rmtree(app.builder._mathpng_tempdir) # type: ignore except Exception: pass def get_tooltip(self, node): + # type: (nodes.NodeVisitor, math_node) -> unicode if self.builder.config.imgmath_add_tooltips: return ' alt="%s"' % self.encode(node['latex']).strip() return '' def html_visit_math(self, node): + # type: (nodes.NodeVisitor, math_node) -> None try: fname, depth = render_math(self, '$'+node['latex']+'$') except MathExtError as exc: @@ -238,6 +249,7 @@ def html_visit_math(self, node): def html_visit_displaymath(self, node): + # type: (nodes.NodeVisitor, displaymath) -> None if node['nowrap']: latex = node['latex'] else: @@ -268,6 +280,7 @@ def html_visit_displaymath(self, node): def setup(app): + # type: (Sphinx) -> Dict[unicode, Any] try: mathbase_setup(app, (html_visit_math, None), (html_visit_displaymath, None)) except ExtensionError: diff --git a/sphinx/ext/inheritance_diagram.py b/sphinx/ext/inheritance_diagram.py index 11af67dc5..341780473 100644 --- a/sphinx/ext/inheritance_diagram.py +++ b/sphinx/ext/inheritance_diagram.py @@ -42,10 +42,10 @@ import inspect try: from hashlib import md5 except ImportError: - from md5 import md5 + from md5 import md5 # type: ignore from six import text_type -from six.moves import builtins +from six.moves import builtins # type: ignore from docutils import nodes from docutils.parsers.rst import directives @@ -57,6 +57,12 @@ from sphinx.pycode import ModuleAnalyzer from sphinx.util import force_decode from sphinx.util.compat import Directive +if False: + # For type annotation + from typing import Any, Tuple # NOQA + from sphinx.application import Sphinx # NOQA + from sphinx.environment import BuildEnvironment # NOQA + class_sig_re = re.compile(r'''^([\w.]*\.)? # module names (\w+) \s* $ # class/final module name @@ -75,6 +81,7 @@ class InheritanceGraph(object): """ def __init__(self, class_names, currmodule, show_builtins=False, private_bases=False, parts=0): + # type: (unicode, str, bool, bool, int) -> None """*class_names* is a list of child classes to show bases from. If *show_builtins* is True, then Python builtins will be shown @@ -89,9 +96,10 @@ class InheritanceGraph(object): 'inheritance diagram') def _import_class_or_module(self, name, currmodule): + # type: (unicode, str) -> Any """Import a class using its fully-qualified *name*.""" try: - path, base = class_sig_re.match(name).groups() + path, base = class_sig_re.match(name).groups() # type: ignore except (AttributeError, ValueError): raise InheritanceException('Invalid class or module %r specified ' 'for inheritance diagram' % name) @@ -126,7 +134,7 @@ class InheritanceGraph(object): return [todoc] elif inspect.ismodule(todoc): classes = [] - for cls in todoc.__dict__.values(): + for cls in todoc.__dict__.values(): # type: ignore if inspect.isclass(cls) and cls.__module__ == todoc.__name__: classes.append(cls) return classes @@ -134,13 +142,15 @@ class InheritanceGraph(object): 'not a class or module' % name) def _import_classes(self, class_names, currmodule): + # type: (unicode, str) -> List[Any] """Import a list of classes.""" - classes = [] + classes = [] # type: List[Any] for name in class_names: classes.extend(self._import_class_or_module(name, currmodule)) return classes def _class_info(self, classes, show_builtins, private_bases, parts): + # type: (List[Any], bool, bool, int) -> List[Tuple[unicode, unicode, List[unicode], unicode]] # NOQA """Return name and bases for all classes that are ancestors of *classes*. @@ -151,6 +161,7 @@ class InheritanceGraph(object): py_builtins = vars(builtins).values() def recurse(cls): + # type: (Any) -> None if not show_builtins and cls in py_builtins: return if not private_bases and cls.__name__.startswith('_'): @@ -172,7 +183,7 @@ class InheritanceGraph(object): except Exception: # might raise AttributeError for strange classes pass - baselist = [] + baselist = [] # type: List[unicode] all_classes[cls] = (nodename, fullname, baselist, tooltip) for base in cls.__bases__: if not show_builtins and base in py_builtins: @@ -189,6 +200,7 @@ class InheritanceGraph(object): return list(all_classes.values()) def class_name(self, cls, parts=0): + # type: (Any, int) -> unicode """Given a class object, return a fully-qualified name. This works for things I've tested in matplotlib so far, but may not be @@ -205,8 +217,9 @@ class InheritanceGraph(object): return '.'.join(name_parts[-parts:]) def get_all_class_names(self): + # type: () -> List[unicode] """Get all of the class names involved in the graph.""" - return [fullname for (_, fullname, _, _) in self.class_info] + return [fullname for (_, fullname, _, _) in self.class_info] # type: ignore # These are the default attrs for graphviz default_graph_attrs = { @@ -227,13 +240,16 @@ class InheritanceGraph(object): } def _format_node_attrs(self, attrs): + # type: (Dict) -> unicode return ','.join(['%s=%s' % x for x in sorted(attrs.items())]) def _format_graph_attrs(self, attrs): + # type: (Dict) -> unicode return ''.join(['%s=%s;\n' % x for x in sorted(attrs.items())]) def generate_dot(self, name, urls={}, env=None, graph_attrs={}, node_attrs={}, edge_attrs={}): + # type: (unicode, Dict, BuildEnvironment, Dict, Dict, Dict) -> unicode """Generate a graphviz dot graph from the classes that were passed in to __init__. @@ -255,7 +271,7 @@ class InheritanceGraph(object): n_attrs.update(env.config.inheritance_node_attrs) e_attrs.update(env.config.inheritance_edge_attrs) - res = [] + res = [] # type: List[unicode] res.append('digraph %s {\n' % name) res.append(self._format_graph_attrs(g_attrs)) @@ -301,6 +317,7 @@ class InheritanceDiagram(Directive): } def run(self): + # type: () -> List[nodes.Node] node = inheritance_diagram() node.document = self.state.document env = self.state.document.settings.env @@ -340,11 +357,13 @@ class InheritanceDiagram(Directive): def get_graph_hash(node): + # type: (inheritance_diagram) -> unicode encoded = (node['content'] + str(node['parts'])).encode('utf-8') return md5(encoded).hexdigest()[-10:] def html_visit_inheritance_diagram(self, node): + # type: (nodes.NodeVisitor, inheritance_diagram) -> None """ Output the graph for HTML. This will insert a PNG with clickable image map. @@ -377,6 +396,7 @@ def html_visit_inheritance_diagram(self, node): def latex_visit_inheritance_diagram(self, node): + # type: (nodes.NodeVisitor, inheritance_diagram) -> None """ Output the graph for LaTeX. This will insert a PDF. """ @@ -392,6 +412,7 @@ def latex_visit_inheritance_diagram(self, node): def texinfo_visit_inheritance_diagram(self, node): + # type: (nodes.NodeVisitor, inheritance_diagram) -> None """ Output the graph for Texinfo. This will insert a PNG. """ @@ -407,10 +428,12 @@ def texinfo_visit_inheritance_diagram(self, node): def skip(self, node): + # type: (nodes.NodeVisitor, inheritance_diagram) -> None raise nodes.SkipNode def setup(app): + # type: (Sphinx) -> Dict[unicode, Any] app.setup_extension('sphinx.ext.graphviz') app.add_node( inheritance_diagram, diff --git a/sphinx/ext/intersphinx.py b/sphinx/ext/intersphinx.py index 4ef7e4b9b..df561204e 100644 --- a/sphinx/ext/intersphinx.py +++ b/sphinx/ext/intersphinx.py @@ -33,8 +33,9 @@ import posixpath from os import path import re -from six import iteritems, string_types +from six import PY3, iteritems, string_types from six.moves.urllib.parse import urlsplit, urlunsplit + from docutils import nodes from docutils.utils import relative_path @@ -43,13 +44,25 @@ from sphinx.locale import _ from sphinx.builders.html import INVENTORY_FILENAME from sphinx.util.requests import requests, useragent_header +if False: + # For type annotation + from typing import Any, Callable, Dict, IO, Iterator, Tuple, Union # NOQA + from sphinx.application import Sphinx # NOQA + from sphinx.environment import BuildEnvironment # NOQA + + if PY3: + unicode = str + + Inventory = Dict[unicode, Dict[unicode, Tuple[unicode, unicode, unicode, unicode]]] + UTF8StreamReader = codecs.lookup('utf-8')[2] def read_inventory_v1(f, uri, join): + # type: (IO, unicode, Callable) -> Inventory f = UTF8StreamReader(f) - invdata = {} + invdata = {} # type: Inventory line = next(f) projname = line.rstrip()[11:] line = next(f) @@ -69,7 +82,8 @@ def read_inventory_v1(f, uri, join): def read_inventory_v2(f, uri, join, bufsize=16*1024): - invdata = {} + # type: (IO, unicode, Callable, int) -> Inventory + invdata = {} # type: Inventory line = f.readline() projname = line.rstrip()[11:].decode('utf-8') line = f.readline() @@ -79,12 +93,14 @@ def read_inventory_v2(f, uri, join, bufsize=16*1024): raise ValueError def read_chunks(): + # type: () -> Iterator[bytes] decompressor = zlib.decompressobj() for chunk in iter(lambda: f.read(bufsize), b''): yield decompressor.decompress(chunk) yield decompressor.flush() def split_lines(iter): + # type: (Iterator[bytes]) -> Iterator[unicode] buf = b'' for chunk in iter: buf += chunk @@ -117,6 +133,7 @@ def read_inventory_v2(f, uri, join, bufsize=16*1024): def read_inventory(f, uri, join, bufsize=16*1024): + # type: (IO, unicode, Callable, int) -> Inventory line = f.readline().rstrip().decode('utf-8') if line == '# Sphinx inventory version 1': return read_inventory_v1(f, uri, join) @@ -125,6 +142,7 @@ def read_inventory(f, uri, join, bufsize=16*1024): def _strip_basic_auth(url): + # type: (unicode) -> unicode """Returns *url* with basic auth credentials removed. Also returns the basic auth username and password if they're present in *url*. @@ -146,6 +164,7 @@ def _strip_basic_auth(url): def _read_from_url(url, timeout=None): + # type: (unicode, int) -> IO """Reads data from *url* with an HTTP *GET*. This function supports fetching from resources which use basic HTTP auth as @@ -168,6 +187,7 @@ def _read_from_url(url, timeout=None): def _get_safe_url(url): + # type: (unicode) -> unicode """Gets version of *url* with basic auth passwords obscured. This function returns results suitable for printing and logging. @@ -193,6 +213,7 @@ def _get_safe_url(url): def fetch_inventory(app, uri, inv): + # type: (Sphinx, unicode, Any) -> Any """Fetch, parse and return an intersphinx inventory file.""" # both *uri* (base URI of the links to generate) and *inv* (actual # location of the inventory file) can be local or remote URIs @@ -211,7 +232,7 @@ def fetch_inventory(app, uri, inv): return try: if hasattr(f, 'url'): - newinv = f.url + newinv = f.url # type: ignore if inv != newinv: app.info('intersphinx inventory has moved: %s -> %s' % (inv, newinv)) @@ -231,17 +252,22 @@ def fetch_inventory(app, uri, inv): def load_mappings(app): + # type: (Sphinx) -> None """Load all intersphinx mappings into the environment.""" now = int(time.time()) cache_time = now - app.config.intersphinx_cache_limit * 86400 env = app.builder.env if not hasattr(env, 'intersphinx_cache'): - env.intersphinx_cache = {} - env.intersphinx_inventory = {} - env.intersphinx_named_inventory = {} - cache = env.intersphinx_cache + env.intersphinx_cache = {} # type: ignore + env.intersphinx_inventory = {} # type: ignore + env.intersphinx_named_inventory = {} # type: ignore + cache = env.intersphinx_cache # type: ignore update = False for key, value in iteritems(app.config.intersphinx_mapping): + name = None # type: unicode + uri = None # type: unicode + inv = None # type: Union[unicode, Tuple[unicode, ...]] + if isinstance(value, tuple): # new format name, (uri, inv) = key, value @@ -257,7 +283,7 @@ def load_mappings(app): if not isinstance(inv, tuple): invs = (inv, ) else: - invs = inv + invs = inv # type: ignore for inv in invs: if not inv: @@ -266,7 +292,7 @@ def load_mappings(app): # files; remote ones only if the cache time is expired if '://' not in inv or uri not in cache \ or cache[uri][1] < cache_time: - safe_inv_url = _get_safe_url(inv) + safe_inv_url = _get_safe_url(inv) # type: ignore app.info( 'loading intersphinx inventory from %s...' % safe_inv_url) invdata = fetch_inventory(app, uri, inv) @@ -276,8 +302,8 @@ def load_mappings(app): break if update: - env.intersphinx_inventory = {} - env.intersphinx_named_inventory = {} + env.intersphinx_inventory = {} # type: ignore + env.intersphinx_named_inventory = {} # type: ignore # Duplicate values in different inventories will shadow each # other; which one will override which can vary between builds # since they are specified using an unordered dict. To make @@ -290,15 +316,17 @@ def load_mappings(app): unnamed_vals = [v for v in cached_vals if not v[0]] for name, _x, invdata in named_vals + unnamed_vals: if name: - env.intersphinx_named_inventory[name] = invdata + env.intersphinx_named_inventory[name] = invdata # type: ignore for type, objects in iteritems(invdata): - env.intersphinx_inventory.setdefault( + env.intersphinx_inventory.setdefault( # type: ignore type, {}).update(objects) def missing_reference(app, env, node, contnode): + # type: (Sphinx, BuildEnvironment, nodes.Node, nodes.Node) -> None """Attempt to resolve a missing reference via intersphinx references.""" target = node['reftarget'] + objtypes = None # type: List[unicode] if node['reftype'] == 'any': # we search anything! objtypes = ['%s:%s' % (domain.name, objtype) @@ -317,14 +345,14 @@ def missing_reference(app, env, node, contnode): if not objtypes: return objtypes = ['%s:%s' % (domain, objtype) for objtype in objtypes] - to_try = [(env.intersphinx_inventory, target)] + to_try = [(env.intersphinx_inventory, target)] # type: ignore in_set = None if ':' in target: # first part may be the foreign doc set name setname, newtarget = target.split(':', 1) - if setname in env.intersphinx_named_inventory: + if setname in env.intersphinx_named_inventory: # type: ignore in_set = setname - to_try.append((env.intersphinx_named_inventory[setname], newtarget)) + to_try.append((env.intersphinx_named_inventory[setname], newtarget)) # type: ignore # NOQA for inventory, target in to_try: for objtype in objtypes: if objtype not in inventory or target not in inventory[objtype]: @@ -358,6 +386,7 @@ def missing_reference(app, env, node, contnode): def setup(app): + # type: (Sphinx) -> Dict[unicode, Any] app.add_config_value('intersphinx_mapping', {}, True) app.add_config_value('intersphinx_cache_limit', 5, False) app.add_config_value('intersphinx_timeout', None, False) @@ -377,7 +406,7 @@ if __name__ == '__main__': print(msg, file=sys.stderr) filename = sys.argv[1] - invdata = fetch_inventory(MockApp(), '', filename) + invdata = fetch_inventory(MockApp(), '', filename) # type: ignore for key in sorted(invdata or {}): print(key) for entry, einfo in sorted(invdata[key].items()): diff --git a/sphinx/ext/linkcode.py b/sphinx/ext/linkcode.py index 63bd38727..a9693299e 100644 --- a/sphinx/ext/linkcode.py +++ b/sphinx/ext/linkcode.py @@ -16,12 +16,18 @@ from sphinx import addnodes from sphinx.locale import _ from sphinx.errors import SphinxError +if False: + # For type annotation + from typing import Any # NOQA + from sphinx.application import Sphinx # NOQA + class LinkcodeError(SphinxError): category = "linkcode error" def doctree_read(app, doctree): + # type: (Sphinx, nodes.Node) -> None env = app.builder.env resolve_target = getattr(env.config, 'linkcode_resolve', None) @@ -38,7 +44,7 @@ def doctree_read(app, doctree): for objnode in doctree.traverse(addnodes.desc): domain = objnode.get('domain') - uris = set() + uris = set() # type: Set[unicode] for signode in objnode: if not isinstance(signode, addnodes.desc_signature): continue @@ -72,6 +78,7 @@ def doctree_read(app, doctree): def setup(app): + # type: (Sphinx) -> Dict[unicode, Any] app.connect('doctree-read', doctree_read) app.add_config_value('linkcode_resolve', None, '') return {'version': sphinx.__display_version__, 'parallel_read_safe': True} diff --git a/sphinx/ext/mathbase.py b/sphinx/ext/mathbase.py index ae4b439b7..4a5bcfb6e 100644 --- a/sphinx/ext/mathbase.py +++ b/sphinx/ext/mathbase.py @@ -18,6 +18,14 @@ from sphinx.domains import Domain from sphinx.util.nodes import make_refnode, set_source_info from sphinx.util.compat import Directive +if False: + # For type annotation + from typing import Any, Callable, Iterable, Tuple # NOQA + from docutils.parsers.rst.states import Inliner # NOQA + from sphinx.application import Sphinx # NOQA + from sphinx.builders import Builder # NOQA + from sphinx.environment import BuildEnvironment # NOQA + class math(nodes.Inline, nodes.TextElement): pass @@ -33,6 +41,7 @@ class eqref(nodes.Inline, nodes.TextElement): class EqXRefRole(XRefRole): def result_nodes(self, document, env, node, is_ref): + # type: (nodes.Node, BuildEnvironment, nodes.Node, bool) -> Tuple[List[nodes.Node], List[nodes.Node]] # NOQA node['refdomain'] = 'math' return [node], [] @@ -44,22 +53,25 @@ class MathDomain(Domain): initial_data = { 'objects': {}, # labelid -> (docname, eqno) - } + } # type: Dict[unicode, Dict[unicode, Tuple[unicode, int]]] dangling_warnings = { 'eq': 'equation not found: %(target)s', } def clear_doc(self, docname): + # type: (unicode) -> None for labelid, (doc, eqno) in list(self.data['objects'].items()): if doc == docname: del self.data['objects'][labelid] def merge_domaindata(self, docnames, otherdata): + # type: (Iterable[unicode], Dict) -> None for labelid, (doc, eqno) in otherdata['objects'].items(): if doc in docnames: self.data['objects'][labelid] = doc def resolve_xref(self, env, fromdocname, builder, typ, target, node, contnode): + # type: (BuildEnvironment, unicode, Builder, unicode, unicode, nodes.Node, nodes.Node) -> nodes.Node # NOQA assert typ == 'eq' docname, number = self.data['objects'].get(target, (None, None)) if docname: @@ -76,6 +88,7 @@ class MathDomain(Domain): return None def resolve_any_xref(self, env, fromdocname, builder, target, node, contnode): + # type: (BuildEnvironment, unicode, Builder, unicode, nodes.Node, nodes.Node) -> List[nodes.Node] # NOQA refnode = self.resolve_xref(env, fromdocname, builder, 'eq', target, node, contnode) if refnode is None: return [] @@ -83,9 +96,11 @@ class MathDomain(Domain): return [refnode] def get_objects(self): + # type: () -> List return [] def add_equation(self, env, docname, labelid): + # type: (BuildEnvironment, unicode, unicode) -> int equations = self.data['objects'] if labelid in equations: path = env.doc2path(equations[labelid][0]) @@ -97,12 +112,15 @@ class MathDomain(Domain): return eqno def get_next_equation_number(self, docname): + # type: (unicode) -> int targets = [eq for eq in self.data['objects'].values() if eq[0] == docname] return len(targets) + 1 def wrap_displaymath(math, label, numbering): + # type: (unicode, unicode, bool) -> unicode def is_equation(part): + # type: (unicode) -> unicode return part.strip() if label is None: @@ -137,11 +155,13 @@ def wrap_displaymath(math, label, numbering): def math_role(role, rawtext, text, lineno, inliner, options={}, content=[]): + # type: (unicode, unicode, unicode, int, Inliner, Dict, List[unicode]) -> Tuple[List[nodes.Node], List[nodes.Node]] # NOQA latex = utils.unescape(text, restore_backslashes=True) return [math(latex=latex)], [] def is_in_section_title(node): + # type: (nodes.Node) -> bool """Determine whether the node is in a section title""" from sphinx.util.nodes import traverse_parent @@ -165,6 +185,7 @@ class MathDirective(Directive): } def run(self): + # type: () -> List[nodes.Node] latex = '\n'.join(self.content) if self.arguments and self.arguments[0]: latex = self.arguments[0] + '\n\n' + latex @@ -186,6 +207,7 @@ class MathDirective(Directive): return ret def add_target(self, ret): + # type: (List[nodes.Node]) -> None node = ret[0] env = self.state.document.settings.env @@ -213,6 +235,7 @@ class MathDirective(Directive): def latex_visit_math(self, node): + # type: (nodes.NodeVisitor, math) -> None if is_in_section_title(node): protect = r'\protect' else: @@ -223,6 +246,7 @@ def latex_visit_math(self, node): def latex_visit_displaymath(self, node): + # type: (nodes.NodeVisitor, displaymath) -> None if not node['label']: label = None else: @@ -239,17 +263,20 @@ def latex_visit_displaymath(self, node): def latex_visit_eqref(self, node): + # type: (nodes.NodeVisitor, eqref) -> None label = "equation:%s:%s" % (node['docname'], node['target']) self.body.append('\\eqref{%s}' % label) raise nodes.SkipNode def text_visit_math(self, node): + # type: (nodes.NodeVisitor, math) -> None self.add_text(node['latex']) raise nodes.SkipNode def text_visit_displaymath(self, node): + # type: (nodes.NodeVisitor, displaymath) -> None self.new_state() self.add_text(node['latex']) self.end_state() @@ -257,24 +284,29 @@ def text_visit_displaymath(self, node): def man_visit_math(self, node): + # type: (nodes.NodeVisitor, math) -> None self.body.append(node['latex']) raise nodes.SkipNode def man_visit_displaymath(self, node): + # type: (nodes.NodeVisitor, displaymath) -> None self.visit_centered(node) def man_depart_displaymath(self, node): + # type: (nodes.NodeVisitor, displaymath) -> None self.depart_centered(node) def texinfo_visit_math(self, node): + # type: (nodes.NodeVisitor, math) -> None self.body.append('@math{' + self.escape_arg(node['latex']) + '}') raise nodes.SkipNode def texinfo_visit_displaymath(self, node): + # type: (nodes.NodeVisitor, displaymath) -> None if node.get('label'): self.add_anchor(node['label'], node) self.body.append('\n\n@example\n%s\n@end example\n\n' % @@ -282,10 +314,12 @@ def texinfo_visit_displaymath(self, node): def texinfo_depart_displaymath(self, node): + # type: (nodes.NodeVisitor, displaymath) -> None pass def setup_math(app, htmlinlinevisitors, htmldisplayvisitors): + # type: (Sphinx, Tuple[Callable, Any], Tuple[Callable, Any]) -> None app.add_config_value('math_number_all', False, 'env') app.add_domain(MathDomain) app.add_node(math, override=True, diff --git a/sphinx/ext/napoleon/__init__.py b/sphinx/ext/napoleon/__init__.py index 651355c57..b74dfb75d 100644 --- a/sphinx/ext/napoleon/__init__.py +++ b/sphinx/ext/napoleon/__init__.py @@ -14,8 +14,13 @@ import sys from six import PY2, iteritems import sphinx +from sphinx.application import Sphinx from sphinx.ext.napoleon.docstring import GoogleDocstring, NumpyDocstring +if False: + # For type annotation + from typing import Any # NOQA + class Config(object): """Sphinx napoleon extension settings in `conf.py`. @@ -254,6 +259,7 @@ class Config(object): } def __init__(self, **settings): + # type: (Any) -> None for name, (default, rebuild) in iteritems(self._config_values): setattr(self, name, default) for name, value in iteritems(settings): @@ -261,6 +267,7 @@ class Config(object): def setup(app): + # type: (Sphinx) -> Dict[unicode, Any] """Sphinx extension setup function. When the extension is loaded, Sphinx imports this module and executes @@ -282,9 +289,9 @@ def setup(app): `The Extension API <http://sphinx-doc.org/extdev/appapi.html>`_ """ - from sphinx.application import Sphinx if not isinstance(app, Sphinx): - return # probably called by tests + return # type: ignore + # probably called by tests _patch_python_domain() @@ -297,13 +304,14 @@ def setup(app): def _patch_python_domain(): + # type: () -> None try: from sphinx.domains.python import PyTypedField except ImportError: pass else: import sphinx.domains.python - import sphinx.locale + import sphinx.locale # type: ignore l_ = sphinx.locale.lazy_gettext for doc_field in sphinx.domains.python.PyObject.doc_field_types: if doc_field.name == 'parameter': @@ -317,6 +325,7 @@ def _patch_python_domain(): def _process_docstring(app, what, name, obj, options, lines): + # type: (Sphinx, unicode, unicode, Any, Any, List[unicode]) -> None """Process the docstring for a given python object. Called when autodoc has read and processed a docstring. `lines` is a list @@ -353,6 +362,7 @@ def _process_docstring(app, what, name, obj, options, lines): """ result_lines = lines + docstring = None # type: GoogleDocstring if app.config.napoleon_numpy_docstring: docstring = NumpyDocstring(result_lines, app.config, app, what, name, obj, options) @@ -365,6 +375,7 @@ def _process_docstring(app, what, name, obj, options, lines): def _skip_member(app, what, name, obj, skip, options): + # type: (Sphinx, unicode, unicode, Any, bool, Any) -> bool """Determine if private and special class members are included in docs. The following settings in conf.py determine if private and special class diff --git a/sphinx/ext/napoleon/docstring.py b/sphinx/ext/napoleon/docstring.py index e526a11ae..7df6e83ab 100644 --- a/sphinx/ext/napoleon/docstring.py +++ b/sphinx/ext/napoleon/docstring.py @@ -21,6 +21,12 @@ from six.moves import range from sphinx.ext.napoleon.iterators import modify_iter from sphinx.util.pycompat import UnicodeMixin +if False: + # For type annotation + from typing import Any, Callable, Tuple, Union # NOQA + from sphinx.application import Sphinx # NOQA + from sphinx.config import Config as SphinxConfig # NOQA + _directive_regex = re.compile(r'\.\. \S+::') _google_section_regex = re.compile(r'^(\s|\w)+:\s*$') @@ -99,19 +105,20 @@ class GoogleDocstring(UnicodeMixin): """ def __init__(self, docstring, config=None, app=None, what='', name='', obj=None, options=None): + # type: (Union[unicode, List[unicode]], SphinxConfig, Sphinx, unicode, unicode, Any, Any) -> None # NOQA self._config = config self._app = app if not self._config: from sphinx.ext.napoleon import Config - self._config = self._app and self._app.config or Config() + self._config = self._app and self._app.config or Config() # type: ignore if not what: if inspect.isclass(obj): what = 'class' elif inspect.ismodule(obj): what = 'module' - elif isinstance(obj, collections.Callable): + elif isinstance(obj, collections.Callable): # type: ignore what = 'function' else: what = 'object' @@ -121,14 +128,14 @@ class GoogleDocstring(UnicodeMixin): self._obj = obj self._opt = options if isinstance(docstring, string_types): - docstring = docstring.splitlines() + docstring = docstring.splitlines() # type: ignore self._lines = docstring self._line_iter = modify_iter(docstring, modifier=lambda s: s.rstrip()) - self._parsed_lines = [] + self._parsed_lines = [] # type: List[unicode] self._is_in_section = False self._section_indent = 0 if not hasattr(self, '_directive_sections'): - self._directive_sections = [] + self._directive_sections = [] # type: List[unicode] if not hasattr(self, '_sections'): self._sections = { 'args': self._parse_parameters_section, @@ -154,10 +161,11 @@ class GoogleDocstring(UnicodeMixin): 'warns': self._parse_warns_section, 'yield': self._parse_yields_section, 'yields': self._parse_yields_section, - } + } # type: Dict[unicode, Callable] self._parse() def __unicode__(self): + # type: () -> unicode """Return the parsed docstring in reStructuredText format. Returns @@ -169,6 +177,7 @@ class GoogleDocstring(UnicodeMixin): return u('\n').join(self.lines()) def lines(self): + # type: () -> List[unicode] """Return the parsed lines of the docstring in reStructuredText format. Returns @@ -180,38 +189,42 @@ class GoogleDocstring(UnicodeMixin): return self._parsed_lines def _consume_indented_block(self, indent=1): + # type: (int) -> List[unicode] lines = [] line = self._line_iter.peek() while(not self._is_section_break() and (not line or self._is_indented(line, indent))): - lines.append(next(self._line_iter)) + lines.append(next(self._line_iter)) # type: ignore line = self._line_iter.peek() return lines def _consume_contiguous(self): + # type: () -> List[unicode] lines = [] while (self._line_iter.has_next() and self._line_iter.peek() and not self._is_section_header()): - lines.append(next(self._line_iter)) + lines.append(next(self._line_iter)) # type: ignore return lines def _consume_empty(self): + # type: () -> List[unicode] lines = [] line = self._line_iter.peek() while self._line_iter.has_next() and not line: - lines.append(next(self._line_iter)) + lines.append(next(self._line_iter)) # type: ignore line = self._line_iter.peek() return lines def _consume_field(self, parse_type=True, prefer_type=False): - line = next(self._line_iter) + # type: (bool, bool) -> Tuple[unicode, unicode, List[unicode]] + line = next(self._line_iter) # type: ignore before, colon, after = self._partition_field_on_colon(line) - _name, _type, _desc = before, '', after + _name, _type, _desc = before, '', after # type: unicode, unicode, unicode if parse_type: - match = _google_typed_arg_regex.match(before) + match = _google_typed_arg_regex.match(before) # type: ignore if match: _name = match.group(1) _type = match.group(2) @@ -221,11 +234,12 @@ class GoogleDocstring(UnicodeMixin): if prefer_type and not _type: _type, _name = _name, _type indent = self._get_indent(line) + 1 - _desc = [_desc] + self._dedent(self._consume_indented_block(indent)) + _desc = [_desc] + self._dedent(self._consume_indented_block(indent)) # type: ignore _desc = self.__class__(_desc, self._config).lines() - return _name, _type, _desc + return _name, _type, _desc # type: ignore def _consume_fields(self, parse_type=True, prefer_type=False): + # type: (bool, bool) -> List[Tuple[unicode, unicode, List[unicode]]] self._consume_empty() fields = [] while not self._is_section_break(): @@ -235,19 +249,21 @@ class GoogleDocstring(UnicodeMixin): return fields def _consume_inline_attribute(self): - line = next(self._line_iter) + # type: () -> Tuple[unicode, List[unicode]] + line = next(self._line_iter) # type: ignore _type, colon, _desc = self._partition_field_on_colon(line) if not colon: _type, _desc = _desc, _type - _desc = [_desc] + self._dedent(self._consume_to_end()) + _desc = [_desc] + self._dedent(self._consume_to_end()) # type: ignore _desc = self.__class__(_desc, self._config).lines() - return _type, _desc + return _type, _desc # type: ignore def _consume_returns_section(self): + # type: () -> List[Tuple[unicode, unicode, List[unicode]]] lines = self._dedent(self._consume_to_next_section()) if lines: before, colon, after = self._partition_field_on_colon(lines[0]) - _name, _type, _desc = '', '', lines + _name, _type, _desc = '', '', lines # type: unicode, unicode, List[unicode] if colon: if after: @@ -263,30 +279,35 @@ class GoogleDocstring(UnicodeMixin): return [] def _consume_usage_section(self): + # type: () -> List[unicode] lines = self._dedent(self._consume_to_next_section()) return lines def _consume_section_header(self): - section = next(self._line_iter) + # type: () -> unicode + section = next(self._line_iter) # type: ignore stripped_section = section.strip(':') if stripped_section.lower() in self._sections: section = stripped_section return section def _consume_to_end(self): + # type: () -> List[unicode] lines = [] while self._line_iter.has_next(): - lines.append(next(self._line_iter)) + lines.append(next(self._line_iter)) # type: ignore return lines def _consume_to_next_section(self): + # type: () -> List[unicode] self._consume_empty() lines = [] while not self._is_section_break(): - lines.append(next(self._line_iter)) + lines.append(next(self._line_iter)) # type: ignore return lines + self._consume_empty() def _dedent(self, lines, full=False): + # type: (List[unicode], bool) -> List[unicode] if full: return [line.lstrip() for line in lines] else: @@ -294,6 +315,7 @@ class GoogleDocstring(UnicodeMixin): return [line[min_indent:] for line in lines] def _escape_args_and_kwargs(self, name): + # type: (unicode) -> unicode if name[:2] == '**': return r'\*\*' + name[2:] elif name[:1] == '*': @@ -302,29 +324,32 @@ class GoogleDocstring(UnicodeMixin): return name def _fix_field_desc(self, desc): + # type: (List[unicode]) -> List[unicode] if self._is_list(desc): - desc = [''] + desc + desc = [''] + desc # type: ignore elif desc[0].endswith('::'): desc_block = desc[1:] indent = self._get_indent(desc[0]) block_indent = self._get_initial_indent(desc_block) if block_indent > indent: - desc = [''] + desc + desc = [''] + desc # type: ignore else: desc = ['', desc[0]] + self._indent(desc_block, 4) return desc def _format_admonition(self, admonition, lines): + # type: (unicode, List[unicode]) -> List[unicode] lines = self._strip_empty(lines) if len(lines) == 1: return ['.. %s:: %s' % (admonition, lines[0].strip()), ''] elif lines: lines = self._indent(self._dedent(lines), 3) - return ['.. %s::' % admonition, ''] + lines + [''] + return ['.. %s::' % admonition, ''] + lines + [''] # type: ignore else: return ['.. %s::' % admonition, ''] def _format_block(self, prefix, lines, padding=None): + # type: (unicode, List[unicode], unicode) -> List[unicode] if lines: if padding is None: padding = ' ' * len(prefix) @@ -342,6 +367,7 @@ class GoogleDocstring(UnicodeMixin): def _format_docutils_params(self, fields, field_role='param', type_role='type'): + # type: (List[Tuple[unicode, unicode, List[unicode]]], unicode, unicode) -> List[unicode] # NOQA lines = [] for _name, _type, _desc in fields: _desc = self._strip_empty(_desc) @@ -357,13 +383,14 @@ class GoogleDocstring(UnicodeMixin): return lines + [''] def _format_field(self, _name, _type, _desc): + # type: (unicode, unicode, List[unicode]) -> List[unicode] _desc = self._strip_empty(_desc) has_desc = any(_desc) separator = has_desc and ' -- ' or '' if _name: if _type: if '`' in _type: - field = '**%s** (%s)%s' % (_name, _type, separator) + field = '**%s** (%s)%s' % (_name, _type, separator) # type: unicode else: field = '**%s** (*%s*)%s' % (_name, _type, separator) else: @@ -386,10 +413,11 @@ class GoogleDocstring(UnicodeMixin): return [field] def _format_fields(self, field_type, fields): + # type: (unicode, List[Tuple[unicode, unicode, List[unicode]]]) -> List[unicode] field_type = ':%s:' % field_type.strip() padding = ' ' * len(field_type) multi = len(fields) > 1 - lines = [] + lines = [] # type: List[unicode] for _name, _type, _desc in fields: field = self._format_field(_name, _type, _desc) if multi: @@ -404,6 +432,7 @@ class GoogleDocstring(UnicodeMixin): return lines def _get_current_indent(self, peek_ahead=0): + # type: (int) -> int line = self._line_iter.peek(peek_ahead + 1)[peek_ahead] while line != self._line_iter.sentinel: if line: @@ -413,18 +442,21 @@ class GoogleDocstring(UnicodeMixin): return 0 def _get_indent(self, line): + # type: (unicode) -> int for i, s in enumerate(line): if not s.isspace(): return i return len(line) def _get_initial_indent(self, lines): + # type: (List[unicode]) -> int for line in lines: if line: return self._get_indent(line) return 0 def _get_min_indent(self, lines): + # type: (List[unicode]) -> int min_indent = None for line in lines: if line: @@ -436,9 +468,11 @@ class GoogleDocstring(UnicodeMixin): return min_indent or 0 def _indent(self, lines, n=4): + # type: (List[unicode], int) -> List[unicode] return [(' ' * n) + line for line in lines] def _is_indented(self, line, indent=1): + # type: (unicode, int) -> bool for i, s in enumerate(line): if i >= indent: return True @@ -447,11 +481,12 @@ class GoogleDocstring(UnicodeMixin): return False def _is_list(self, lines): + # type: (List[unicode]) -> bool if not lines: return False - if _bullet_list_regex.match(lines[0]): + if _bullet_list_regex.match(lines[0]): # type: ignore return True - if _enumerated_list_regex.match(lines[0]): + if _enumerated_list_regex.match(lines[0]): # type: ignore return True if len(lines) < 2 or lines[0].endswith('::'): return False @@ -464,6 +499,7 @@ class GoogleDocstring(UnicodeMixin): return next_indent > indent def _is_section_header(self): + # type: () -> bool section = self._line_iter.peek().lower() match = _google_section_regex.match(section) if match and section.strip(':') in self._sections: @@ -478,6 +514,7 @@ class GoogleDocstring(UnicodeMixin): return False def _is_section_break(self): + # type: () -> bool line = self._line_iter.peek() return (not self._line_iter.has_next() or self._is_section_header() or @@ -486,6 +523,7 @@ class GoogleDocstring(UnicodeMixin): not self._is_indented(line, self._section_indent))) def _parse(self): + # type: () -> None self._parsed_lines = self._consume_empty() if self._name and (self._what == 'attribute' or self._what == 'data'): @@ -498,7 +536,7 @@ class GoogleDocstring(UnicodeMixin): section = self._consume_section_header() self._is_in_section = True self._section_indent = self._get_current_indent() - if _directive_regex.match(section): + if _directive_regex.match(section): # type: ignore lines = [section] + self._consume_to_next_section() else: lines = self._sections[section.lower()](section) @@ -513,42 +551,47 @@ class GoogleDocstring(UnicodeMixin): self._parsed_lines.extend(lines) def _parse_attribute_docstring(self): + # type: () -> List[unicode] _type, _desc = self._consume_inline_attribute() return self._format_field('', _type, _desc) def _parse_attributes_section(self, section): + # type: (unicode) -> List[unicode] lines = [] for _name, _type, _desc in self._consume_fields(): if self._config.napoleon_use_ivar: - field = ':ivar %s: ' % _name + field = ':ivar %s: ' % _name # type: unicode lines.extend(self._format_block(field, _desc)) if _type: lines.append(':vartype %s: %s' % (_name, _type)) else: lines.extend(['.. attribute:: ' + _name, '']) - field = self._format_field('', _type, _desc) - lines.extend(self._indent(field, 3)) + field = self._format_field('', _type, _desc) # type: ignore + lines.extend(self._indent(field, 3)) # type: ignore lines.append('') if self._config.napoleon_use_ivar: lines.append('') return lines def _parse_examples_section(self, section): + # type: (unicode) -> List[unicode] use_admonition = self._config.napoleon_use_admonition_for_examples return self._parse_generic_section(section, use_admonition) def _parse_usage_section(self, section): - header = ['.. rubric:: Usage:', ''] - block = ['.. code-block:: python', ''] + # type: (unicode) -> List[unicode] + header = ['.. rubric:: Usage:', ''] # type: List[unicode] + block = ['.. code-block:: python', ''] # type: List[unicode] lines = self._consume_usage_section() lines = self._indent(lines, 3) return header + block + lines + [''] def _parse_generic_section(self, section, use_admonition): + # type: (unicode, bool) -> List[unicode] lines = self._strip_empty(self._consume_to_next_section()) lines = self._dedent(lines) if use_admonition: - header = '.. admonition:: %s' % section + header = '.. admonition:: %s' % section # type: unicode lines = self._indent(lines, 3) else: header = '.. rubric:: %s' % section @@ -558,6 +601,7 @@ class GoogleDocstring(UnicodeMixin): return [header, ''] def _parse_keyword_arguments_section(self, section): + # type: (unicode) -> List[unicode] fields = self._consume_fields() if self._config.napoleon_use_keyword: return self._format_docutils_params( @@ -568,26 +612,31 @@ class GoogleDocstring(UnicodeMixin): return self._format_fields('Keyword Arguments', fields) def _parse_methods_section(self, section): - lines = [] + # type: (unicode) -> List[unicode] + lines = [] # type: List[unicode] for _name, _, _desc in self._consume_fields(parse_type=False): lines.append('.. method:: %s' % _name) if _desc: - lines.extend([''] + self._indent(_desc, 3)) + lines.extend([''] + self._indent(_desc, 3)) # type: ignore lines.append('') return lines def _parse_note_section(self, section): + # type: (unicode) -> List[unicode] lines = self._consume_to_next_section() return self._format_admonition('note', lines) def _parse_notes_section(self, section): + # type: (unicode) -> List[unicode] use_admonition = self._config.napoleon_use_admonition_for_notes return self._parse_generic_section('Notes', use_admonition) def _parse_other_parameters_section(self, section): + # type: (unicode) -> List[unicode] return self._format_fields('Other Parameters', self._consume_fields()) def _parse_parameters_section(self, section): + # type: (unicode) -> List[unicode] fields = self._consume_fields() if self._config.napoleon_use_param: return self._format_docutils_params(fields) @@ -595,11 +644,12 @@ class GoogleDocstring(UnicodeMixin): return self._format_fields('Parameters', fields) def _parse_raises_section(self, section): + # type: (unicode) -> List[unicode] fields = self._consume_fields(parse_type=False, prefer_type=True) field_type = ':raises:' padding = ' ' * len(field_type) multi = len(fields) > 1 - lines = [] + lines = [] # type: List[unicode] for _, _type, _desc in fields: _desc = self._strip_empty(_desc) has_desc = any(_desc) @@ -633,10 +683,12 @@ class GoogleDocstring(UnicodeMixin): return lines def _parse_references_section(self, section): + # type: (unicode) -> List[unicode] use_admonition = self._config.napoleon_use_admonition_for_references return self._parse_generic_section('References', use_admonition) def _parse_returns_section(self, section): + # type: (unicode) -> List[unicode] fields = self._consume_returns_section() multi = len(fields) > 1 if multi: @@ -644,7 +696,7 @@ class GoogleDocstring(UnicodeMixin): else: use_rtype = self._config.napoleon_use_rtype - lines = [] + lines = [] # type: List[unicode] for _name, _type, _desc in fields: if use_rtype: field = self._format_field(_name, '', _desc) @@ -665,30 +717,36 @@ class GoogleDocstring(UnicodeMixin): return lines def _parse_see_also_section(self, section): + # type: (unicode) -> List[unicode] lines = self._consume_to_next_section() return self._format_admonition('seealso', lines) def _parse_todo_section(self, section): + # type: (unicode) -> List[unicode] lines = self._consume_to_next_section() return self._format_admonition('todo', lines) def _parse_warning_section(self, section): + # type: (unicode) -> List[unicode] lines = self._consume_to_next_section() return self._format_admonition('warning', lines) def _parse_warns_section(self, section): + # type: (unicode) -> List[unicode] return self._format_fields('Warns', self._consume_fields()) def _parse_yields_section(self, section): + # type: (unicode) -> List[unicode] fields = self._consume_returns_section() return self._format_fields('Yields', fields) def _partition_field_on_colon(self, line): + # type: (unicode) -> Tuple[unicode, unicode, unicode] before_colon = [] after_colon = [] colon = '' found_colon = False - for i, source in enumerate(_xref_regex.split(line)): + for i, source in enumerate(_xref_regex.split(line)): # type: ignore if found_colon: after_colon.append(source) else: @@ -706,6 +764,7 @@ class GoogleDocstring(UnicodeMixin): "".join(after_colon).strip()) def _strip_empty(self, lines): + # type: (List[unicode]) -> List[unicode] if lines: start = -1 for i, line in enumerate(lines): @@ -820,12 +879,14 @@ class NumpyDocstring(GoogleDocstring): """ def __init__(self, docstring, config=None, app=None, what='', name='', obj=None, options=None): + # type: (Union[unicode, List[unicode]], SphinxConfig, Sphinx, unicode, unicode, Any, Any) -> None # NOQA self._directive_sections = ['.. index::'] super(NumpyDocstring, self).__init__(docstring, config, app, what, name, obj, options) def _consume_field(self, parse_type=True, prefer_type=False): - line = next(self._line_iter) + # type: (bool, bool) -> Tuple[unicode, unicode, List[unicode]] + line = next(self._line_iter) # type: ignore if parse_type: _name, _, _type = self._partition_field_on_colon(line) else: @@ -841,16 +902,19 @@ class NumpyDocstring(GoogleDocstring): return _name, _type, _desc def _consume_returns_section(self): + # type: () -> List[Tuple[unicode, unicode, List[unicode]]] return self._consume_fields(prefer_type=True) def _consume_section_header(self): - section = next(self._line_iter) + # type: () -> unicode + section = next(self._line_iter) # type: ignore if not _directive_regex.match(section): # Consume the header underline - next(self._line_iter) + next(self._line_iter) # type: ignore return section def _is_section_break(self): + # type: () -> bool line1, line2 = self._line_iter.peek(2) return (not self._line_iter.has_next() or self._is_section_header() or @@ -860,10 +924,11 @@ class NumpyDocstring(GoogleDocstring): not self._is_indented(line1, self._section_indent))) def _is_section_header(self): + # type: () -> bool section, underline = self._line_iter.peek(2) section = section.lower() if section in self._sections and isinstance(underline, string_types): - return bool(_numpy_section_regex.match(underline)) + return bool(_numpy_section_regex.match(underline)) # type: ignore elif self._directive_sections: if _directive_regex.match(section): for directive_section in self._directive_sections: @@ -875,6 +940,7 @@ class NumpyDocstring(GoogleDocstring): r" (?P<name2>[a-zA-Z0-9_.-]+))\s*", re.X) def _parse_see_also_section(self, section): + # type: (unicode) -> List[unicode] lines = self._consume_to_next_section() try: return self._parse_numpydoc_see_also_section(lines) @@ -882,6 +948,7 @@ class NumpyDocstring(GoogleDocstring): return self._format_admonition('seealso', lines) def _parse_numpydoc_see_also_section(self, content): + # type: (List[unicode]) -> List[unicode] """ Derived from the NumpyDoc implementation of _parse_see_also. @@ -914,13 +981,13 @@ class NumpyDocstring(GoogleDocstring): del rest[:] current_func = None - rest = [] + rest = [] # type: List[unicode] for line in content: if not line.strip(): continue - m = self._name_rgx.match(line) + m = self._name_rgx.match(line) # type: ignore if m and line[m.end():].strip().startswith(':'): push_item(current_func, rest) current_func, line = line[:m.end()], line[m.end():] @@ -960,12 +1027,12 @@ class NumpyDocstring(GoogleDocstring): 'const': 'const', 'attribute': 'attr', 'attr': 'attr' - } + } # type: Dict[unicode, unicode] if self._what is None: - func_role = 'obj' + func_role = 'obj' # type: unicode else: func_role = roles.get(self._what, '') - lines = [] + lines = [] # type: List[unicode] last_had_desc = True for func, desc, role in items: if role: diff --git a/sphinx/ext/napoleon/iterators.py b/sphinx/ext/napoleon/iterators.py index f66d67f2c..76544b534 100644 --- a/sphinx/ext/napoleon/iterators.py +++ b/sphinx/ext/napoleon/iterators.py @@ -13,6 +13,10 @@ import collections +if False: + # For type annotation + from typing import Any, Iterable # NOQA + class peek_iter(object): """An iterator object that supports peeking ahead. @@ -48,34 +52,39 @@ class peek_iter(object): """ def __init__(self, *args): + # type: (Any) -> None """__init__(o, sentinel=None)""" - self._iterable = iter(*args) - self._cache = collections.deque() + self._iterable = iter(*args) # type: Iterable + self._cache = collections.deque() # type: collections.deque if len(args) == 2: self.sentinel = args[1] else: self.sentinel = object() def __iter__(self): + # type: () -> peek_iter return self def __next__(self, n=None): + # type: (int) -> Any # note: prevent 2to3 to transform self.next() in next(self) which # causes an infinite loop ! return getattr(self, 'next')(n) def _fillcache(self, n): + # type: (int) -> None """Cache `n` items. If `n` is 0 or None, then 1 item is cached.""" if not n: n = 1 try: while len(self._cache) < n: - self._cache.append(next(self._iterable)) + self._cache.append(next(self._iterable)) # type: ignore except StopIteration: while len(self._cache) < n: self._cache.append(self.sentinel) def has_next(self): + # type: () -> bool """Determine if iterator is exhausted. Returns @@ -91,6 +100,7 @@ class peek_iter(object): return self.peek() != self.sentinel def next(self, n=None): + # type: (int) -> Any """Get the next item or `n` items of the iterator. Parameters @@ -126,6 +136,7 @@ class peek_iter(object): return result def peek(self, n=None): + # type: (int) -> Any """Preview the next item or `n` items of the iterator. The iterator is not advanced when peek is called. @@ -209,6 +220,7 @@ class modify_iter(peek_iter): """ def __init__(self, *args, **kwargs): + # type: (Any, Any) -> None """__init__(o, sentinel=None, modifier=lambda x: x)""" if 'modifier' in kwargs: self.modifier = kwargs['modifier'] @@ -223,6 +235,7 @@ class modify_iter(peek_iter): super(modify_iter, self).__init__(*args) def _fillcache(self, n): + # type: (int) -> None """Cache `n` modified items. If `n` is 0 or None, 1 item is cached. Each item returned by the iterator is passed through the @@ -233,7 +246,7 @@ class modify_iter(peek_iter): n = 1 try: while len(self._cache) < n: - self._cache.append(self.modifier(next(self._iterable))) + self._cache.append(self.modifier(next(self._iterable))) # type: ignore except StopIteration: while len(self._cache) < n: self._cache.append(self.sentinel) diff --git a/sphinx/ext/pngmath.py b/sphinx/ext/pngmath.py index d7660550e..a02b61b9b 100644 --- a/sphinx/ext/pngmath.py +++ b/sphinx/ext/pngmath.py @@ -20,6 +20,7 @@ from subprocess import Popen, PIPE from hashlib import sha1 from six import text_type + from docutils import nodes import sphinx @@ -29,11 +30,18 @@ from sphinx.util.osutil import ensuredir, ENOENT, cd from sphinx.util.pycompat import sys_encoding from sphinx.ext.mathbase import setup_math as mathbase_setup, wrap_displaymath +if False: + # For type annotation + from typing import Any, Tuple # NOQA + from sphinx.application import Sphinx # NOQA + from sphinx.ext.mathbase import math as math_node, displaymath # NOQA + class MathExtError(SphinxError): category = 'Math extension error' def __init__(self, msg, stderr=None, stdout=None): + # type: (unicode, unicode, unicode) -> None if stderr: msg += '\n[stderr]\n' + stderr.decode(sys_encoding, 'replace') if stdout: @@ -71,6 +79,7 @@ depth_re = re.compile(br'\[\d+ depth=(-?\d+)\]') def render_math(self, math): + # type: (nodes.NodeVisitor, unicode) -> Tuple[unicode, int] """Render the LaTeX math expression *math* using latex and dvipng. Return the filename relative to the built document and the "depth", @@ -107,9 +116,8 @@ def render_math(self, math): else: tempdir = self.builder._mathpng_tempdir - tf = codecs.open(path.join(tempdir, 'math.tex'), 'w', 'utf-8') - tf.write(latex) - tf.close() + with codecs.open(path.join(tempdir, 'math.tex'), 'w', 'utf-8') as tf: # type: ignore + tf.write(latex) # build latex command; old versions of latex don't have the # --output-directory option, so we have to manually chdir to the @@ -171,23 +179,26 @@ def render_math(self, math): def cleanup_tempdir(app, exc): + # type: (Sphinx, Exception) -> None if exc: return if not hasattr(app.builder, '_mathpng_tempdir'): return try: - shutil.rmtree(app.builder._mathpng_tempdir) + shutil.rmtree(app.builder._mathpng_tempdir) # type: ignore except Exception: pass def get_tooltip(self, node): + # type: (nodes.NodeVisitor, math_node) -> unicode if self.builder.config.pngmath_add_tooltips: return ' alt="%s"' % self.encode(node['latex']).strip() return '' def html_visit_math(self, node): + # type: (nodes.NodeVisitor, math_node) -> None try: fname, depth = render_math(self, '$'+node['latex']+'$') except MathExtError as exc: @@ -210,6 +221,7 @@ def html_visit_math(self, node): def html_visit_displaymath(self, node): + # type: (nodes.NodeVisitor, displaymath) -> None if node['nowrap']: latex = node['latex'] else: @@ -238,6 +250,7 @@ def html_visit_displaymath(self, node): def setup(app): + # type: (Sphinx) -> Dict[unicode, Any] app.warn('sphinx.ext.pngmath has been deprecated. Please use sphinx.ext.imgmath instead.') try: mathbase_setup(app, (html_visit_math, None), (html_visit_displaymath, None)) diff --git a/sphinx/ext/todo.py b/sphinx/ext/todo.py index f3b526ce6..5db878ad5 100644 --- a/sphinx/ext/todo.py +++ b/sphinx/ext/todo.py @@ -22,6 +22,12 @@ from sphinx.util.nodes import set_source_info from docutils.parsers.rst import Directive from docutils.parsers.rst.directives.admonitions import BaseAdmonition +if False: + # For type annotation + from typing import Any, Iterable # NOQA + from sphinx.application import Sphinx # NOQA + from sphinx.environment import BuildEnvironment # NOQA + class todo_node(nodes.Admonition, nodes.Element): pass @@ -46,6 +52,7 @@ class Todo(BaseAdmonition): } def run(self): + # type: () -> List[nodes.Node] if not self.options.get('class'): self.options['class'] = ['admonition-todo'] @@ -63,12 +70,13 @@ class Todo(BaseAdmonition): def process_todos(app, doctree): + # type: (Sphinx, nodes.Node) -> None # collect all todos in the environment # this is not done in the directive itself because it some transformations # must have already been run, e.g. substitutions env = app.builder.env if not hasattr(env, 'todo_all_todos'): - env.todo_all_todos = [] + env.todo_all_todos = [] # type: ignore for node in doctree.traverse(todo_node): app.emit('todo-defined', node) @@ -80,7 +88,7 @@ def process_todos(app, doctree): targetnode = None newnode = node.deepcopy() del newnode['ids'] - env.todo_all_todos.append({ + env.todo_all_todos.append({ # type: ignore 'docname': env.docname, 'source': node.source or env.doc2path(env.docname), 'lineno': node.line, @@ -101,15 +109,17 @@ class TodoList(Directive): required_arguments = 0 optional_arguments = 0 final_argument_whitespace = False - option_spec = {} + option_spec = {} # type: Dict def run(self): + # type: () -> List[todolist] # Simply insert an empty todolist node which will be replaced later # when process_todo_nodes is called return [todolist('')] def process_todo_nodes(app, doctree, fromdocname): + # type: (Sphinx, nodes.Node, unicode) -> None if not app.config['todo_include_todos']: for node in doctree.traverse(todo_node): node.parent.remove(node) @@ -119,7 +129,7 @@ def process_todo_nodes(app, doctree, fromdocname): env = app.builder.env if not hasattr(env, 'todo_all_todos'): - env.todo_all_todos = [] + env.todo_all_todos = [] # type: ignore for node in doctree.traverse(todolist): if not app.config['todo_include_todos']: @@ -128,7 +138,7 @@ def process_todo_nodes(app, doctree, fromdocname): content = [] - for todo_info in env.todo_all_todos: + for todo_info in env.todo_all_todos: # type: ignore para = nodes.paragraph(classes=['todo-source']) if app.config['todo_link_only']: description = _('<<original entry>>') @@ -168,30 +178,35 @@ def process_todo_nodes(app, doctree, fromdocname): def purge_todos(app, env, docname): + # type: (Sphinx, BuildEnvironment, unicode) -> None if not hasattr(env, 'todo_all_todos'): return - env.todo_all_todos = [todo for todo in env.todo_all_todos + env.todo_all_todos = [todo for todo in env.todo_all_todos # type: ignore if todo['docname'] != docname] def merge_info(app, env, docnames, other): + # type: (Sphinx, BuildEnvironment, Iterable[unicode], BuildEnvironment) -> None if not hasattr(other, 'todo_all_todos'): return if not hasattr(env, 'todo_all_todos'): - env.todo_all_todos = [] - env.todo_all_todos.extend(other.todo_all_todos) + env.todo_all_todos = [] # type: ignore + env.todo_all_todos.extend(other.todo_all_todos) # type: ignore def visit_todo_node(self, node): + # type: (nodes.NodeVisitor, todo_node) -> None self.visit_admonition(node) # self.visit_admonition(node, 'todo') def depart_todo_node(self, node): + # type: (nodes.NodeVisitor, todo_node) -> None self.depart_admonition(node) def setup(app): + # type: (Sphinx) -> Dict[unicode, Any] app.add_event('todo-defined') app.add_config_value('todo_include_todos', False, 'html') app.add_config_value('todo_link_only', False, 'html') diff --git a/sphinx/ext/viewcode.py b/sphinx/ext/viewcode.py index 276a137d5..813a465db 100644 --- a/sphinx/ext/viewcode.py +++ b/sphinx/ext/viewcode.py @@ -12,6 +12,7 @@ import traceback from six import iteritems, text_type + from docutils import nodes import sphinx @@ -20,10 +21,17 @@ from sphinx.locale import _ from sphinx.pycode import ModuleAnalyzer from sphinx.util import get_full_modname from sphinx.util.nodes import make_refnode -from sphinx.util.console import blue +from sphinx.util.console import blue # type: ignore + +if False: + # For type annotation + from typing import Any, Iterable, Iterator, Tuple # NOQA + from sphinx.application import Sphinx # NOQA + from sphinx.environment import BuildEnvironment # NOQA def _get_full_modname(app, modname, attribute): + # type: (Sphinx, str, unicode) -> unicode try: return get_full_modname(modname, attribute) except AttributeError: @@ -43,20 +51,21 @@ def _get_full_modname(app, modname, attribute): def doctree_read(app, doctree): + # type: (Sphinx, nodes.Node) -> None env = app.builder.env if not hasattr(env, '_viewcode_modules'): - env._viewcode_modules = {} + env._viewcode_modules = {} # type: ignore if app.builder.name == "singlehtml": return if app.builder.name.startswith("epub") and not env.config.viewcode_enable_epub: return def has_tag(modname, fullname, docname, refname): - entry = env._viewcode_modules.get(modname, None) + entry = env._viewcode_modules.get(modname, None) # type: ignore try: analyzer = ModuleAnalyzer.for_module(modname) except Exception: - env._viewcode_modules[modname] = False + env._viewcode_modules[modname] = False # type: ignore return if not isinstance(analyzer.code, text_type): code = analyzer.code.decode(analyzer.encoding) @@ -65,7 +74,7 @@ def doctree_read(app, doctree): if entry is None or entry[0] != code: analyzer.find_tags() entry = code, analyzer.tags, {}, refname - env._viewcode_modules[modname] = entry + env._viewcode_modules[modname] = entry # type: ignore elif entry is False: return _, tags, used, _ = entry @@ -76,7 +85,7 @@ def doctree_read(app, doctree): for objnode in doctree.traverse(addnodes.desc): if objnode.get('domain') != 'py': continue - names = set() + names = set() # type: Set[unicode] for signode in objnode: if not isinstance(signode, addnodes.desc_signature): continue @@ -106,16 +115,18 @@ def doctree_read(app, doctree): def env_merge_info(app, env, docnames, other): + # type: (Sphinx, BuildEnvironment, Iterable[unicode], BuildEnvironment) -> None if not hasattr(other, '_viewcode_modules'): return # create a _viewcode_modules dict on the main environment if not hasattr(env, '_viewcode_modules'): - env._viewcode_modules = {} + env._viewcode_modules = {} # type: ignore # now merge in the information from the subprocess - env._viewcode_modules.update(other._viewcode_modules) + env._viewcode_modules.update(other._viewcode_modules) # type: ignore def missing_reference(app, env, node, contnode): + # type: (Sphinx, BuildEnvironment, nodes.Node, nodes.Node) -> nodes.Node # resolve our "viewcode" reference nodes -- they need special treatment if node['reftype'] == 'viewcode': return make_refnode(app.builder, node['refdoc'], node['reftarget'], @@ -123,20 +134,21 @@ def missing_reference(app, env, node, contnode): def collect_pages(app): + # type: (Sphinx) -> Iterator[Tuple[unicode, Dict[unicode, Any], unicode]] env = app.builder.env if not hasattr(env, '_viewcode_modules'): return - highlighter = app.builder.highlighter + highlighter = app.builder.highlighter # type: ignore urito = app.builder.get_relative_uri - modnames = set(env._viewcode_modules) + modnames = set(env._viewcode_modules) # type: ignore # app.builder.info(' (%d module code pages)' % # len(env._viewcode_modules), nonl=1) for modname, entry in app.status_iterator( - iteritems(env._viewcode_modules), 'highlighting module code... ', - blue, len(env._viewcode_modules), lambda x: x[0]): + iteritems(env._viewcode_modules), 'highlighting module code... ', # type:ignore + blue, len(env._viewcode_modules), lambda x: x[0]): # type:ignore if not entry: continue code, tags, used, refname = entry @@ -185,7 +197,7 @@ def collect_pages(app): 'title': modname, 'body': (_('<h1>Source code for %s</h1>') % modname + '\n'.join(lines)), - } + } # type: Dict[unicode, Any] yield (pagename, context, 'page.html') if not modnames: @@ -218,6 +230,7 @@ def collect_pages(app): def setup(app): + # type: (Sphinx) -> Dict[unicode, Any] app.add_config_value('viewcode_import', True, False) app.add_config_value('viewcode_enable_epub', False, False) app.connect('doctree-read', doctree_read) From 3407ef0ca8a8ce41e67092d2605f8fc77bebb982 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Thu, 10 Nov 2016 14:05:58 +0900 Subject: [PATCH 228/297] Add type-check annotations to sphinx.writers --- sphinx/writers/latex.py | 312 ++++++++++++++++++++++++++++++++++---- sphinx/writers/texinfo.py | 306 +++++++++++++++++++++++++++++++++---- sphinx/writers/text.py | 248 +++++++++++++++++++++++++++--- sphinx/writers/xml.py | 12 +- 4 files changed, 795 insertions(+), 83 deletions(-) diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 60483ded5..e084c0b49 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -32,6 +32,11 @@ from sphinx.util.template import LaTeXRenderer from sphinx.util.texescape import tex_escape_map, tex_replace_map from sphinx.util.smartypants import educate_quotes_latex +if False: + # For type annotation + from typing import Any, Callable, Iterator, Pattern, Tuple, Union # NOQA + from sphinx.builder import Builder # NOQA + BEGIN_DOC = r''' \begin{document} @@ -96,7 +101,7 @@ DEFAULT_SETTINGS = { 'tocdepth': '', 'secnumdepth': '', 'pageautorefname': '', -} +} # type: Dict[unicode, unicode] ADDITIONAL_SETTINGS = { 'pdflatex': { @@ -121,7 +126,7 @@ ADDITIONAL_SETTINGS = { 'platex': { 'latex_engine': 'platex', }, -} +} # type: Dict[unicode, Dict[unicode, unicode]] class collected_footnote(nodes.footnote): @@ -141,17 +146,19 @@ class LaTeXWriter(writers.Writer): ('Document class', ['--docclass'], {'default': 'manual'}), ('Author', ['--author'], {'default': ''}), )) - settings_defaults = {} + settings_defaults = {} # type: Dict output = None def __init__(self, builder): + # type: (Builder) -> None writers.Writer.__init__(self) self.builder = builder self.translator_class = ( self.builder.translator_class or LaTeXTranslator) def translate(self): + # type: () -> None transform = ShowUrlsTransform(self.document) transform.apply() visitor = self.translator_class(self.document, self.builder) @@ -163,10 +170,12 @@ class LaTeXWriter(writers.Writer): class ExtBabel(Babel): def __init__(self, language_code): + # type: (unicode) -> None super(ExtBabel, self).__init__(language_code or '') self.language_code = language_code def get_shorthandoff(self): + # type: () -> unicode shortlang = self.language.split('_')[0] if shortlang in ('de', 'ngerman', 'sl', 'slovene', 'pt', 'portuges', 'es', 'spanish', 'nl', 'dutch', 'pl', 'polish', 'it', @@ -177,15 +186,18 @@ class ExtBabel(Babel): return '' def uses_cyrillic(self): + # type: () -> bool shortlang = self.language.split('_')[0] return shortlang in ('bg', 'bulgarian', 'kk', 'kazakh', 'mn', 'mongolian', 'ru', 'russian', 'uk', 'ukrainian') def is_supported_language(self): + # type: () -> bool return bool(super(ExtBabel, self).get_language()) def get_language(self): + # type: () -> unicode language = super(ExtBabel, self).get_language() if not language: return 'english' # fallback to english @@ -197,9 +209,11 @@ class ShowUrlsTransform(object): expanded = False def __init__(self, document): + # type: (nodes.Node) -> None self.document = document def apply(self): + # type: () -> None # replace id_prefix temporarily id_prefix = self.document.settings.id_prefix self.document.settings.id_prefix = 'show_urls' @@ -212,6 +226,7 @@ class ShowUrlsTransform(object): self.document.settings.id_prefix = id_prefix def expand_show_urls(self): + # type: () -> None show_urls = self.document.settings.env.config.latex_show_urls if show_urls is False or show_urls == 'no': return @@ -234,6 +249,7 @@ class ShowUrlsTransform(object): node.parent.insert(index + 1, textnode) def create_footnote(self, uri): + # type: (unicode) -> List[Union[nodes.footnote, nodes.footnote_ref]] label = nodes.label('', '#') para = nodes.paragraph() para.append(nodes.reference('', nodes.Text(uri), refuri=uri, nolinkurl=True)) @@ -250,7 +266,9 @@ class ShowUrlsTransform(object): return [footnote, footnote_ref] def renumber_footnotes(self): + # type: () -> None def is_used_number(number): + # type: (unicode) -> bool for node in self.document.traverse(nodes.footnote): if not node.get('auto') and number in node['names']: return True @@ -258,13 +276,16 @@ class ShowUrlsTransform(object): return False def is_auto_footnote(node): + # type: (nodes.Node) -> bool return isinstance(node, nodes.footnote) and node.get('auto') def footnote_ref_by(node): + # type: (nodes.Node) -> Callable[[nodes.Node], bool] ids = node['ids'] parent = list(traverse_parent(node, (nodes.document, addnodes.start_of_file)))[0] def is_footnote_ref(node): + # type: (nodes.Node) -> bool return (isinstance(node, nodes.footnote_reference) and ids[0] == node['refid'] and parent in list(traverse_parent(node))) @@ -293,23 +314,26 @@ class ShowUrlsTransform(object): class Table(object): def __init__(self): + # type: () -> None self.col = 0 self.colcount = 0 - self.colspec = None + self.colspec = None # type: unicode self.rowcount = 0 self.had_head = False self.has_problematic = False self.has_verbatim = False - self.caption = None + self.caption = None # type: List[unicode] self.longtable = False def escape_abbr(text): + # type: (unicode) -> unicode """Adjust spacing after abbreviations.""" return re.sub('\.(?=\s|$)', '.\\@', text) def rstdim_to_latexdim(width_str): + # type: (unicode) -> unicode """Convert `width_str` with rst length to LaTeX length.""" match = re.match('^(\d*\.?\d*)\s*(\S*)$', width_str) if not match: @@ -336,9 +360,10 @@ class LaTeXTranslator(nodes.NodeVisitor): docclasses = ('howto', 'manual') def __init__(self, document, builder): + # type: (nodes.Node, Builder) -> None nodes.NodeVisitor.__init__(self, document) self.builder = builder - self.body = [] + self.body = [] # type: List[unicode] # flags self.in_title = 0 @@ -355,8 +380,8 @@ class LaTeXTranslator(nodes.NodeVisitor): self.no_contractions = 0 self.compact_list = 0 self.first_param = 0 - self.remember_multirow = {} - self.remember_multirowcol = {} + self.remember_multirow = {} # type: Dict[int, int] + self.remember_multirowcol = {} # type: Dict[int, int] # determine top section level if builder.config.latex_toplevel_sectioning: @@ -438,6 +463,7 @@ class LaTeXTranslator(nodes.NodeVisitor): if getattr(builder, 'usepackages', None): def declare_package(packagename, options=None): + # type:(unicode, unicode) -> unicode if options: return '\\usepackage[%s]{%s}' % (options, packagename) else: @@ -486,54 +512,61 @@ class LaTeXTranslator(nodes.NodeVisitor): self.highlighter = highlighting.PygmentsBridge( 'latex', builder.config.pygments_style, builder.config.trim_doctest_flags) - self.context = [] - self.descstack = [] - self.bibitems = [] - self.table = None - self.next_table_colspec = None + self.context = [] # type: List[Any] + self.descstack = [] # type: List[unicode] + self.bibitems = [] # type: List[List[unicode]] + self.table = None # type: Table + self.next_table_colspec = None # type: unicode # stack of [language, linenothreshold] settings per file # the first item here is the default and must not be changed # the second item is the default for the master file and can be changed # by .. highlight:: directive in the master file self.hlsettingstack = 2 * [[builder.config.highlight_language, sys.maxsize]] - self.bodystack = [] - self.footnotestack = [] + self.bodystack = [] # type: List[List[unicode]] + self.footnotestack = [] # type: List[Dict[unicode, List[Union[collected_footnote, bool]]]] # NOQA self.footnote_restricted = False - self.pending_footnotes = [] - self.curfilestack = [] - self.handled_abbrs = set() - self.next_hyperlink_ids = {} - self.next_section_ids = set() + self.pending_footnotes = [] # type: List[nodes.footnote_reference] + self.curfilestack = [] # type: List[unicode] + self.handled_abbrs = set() # type: Set[unicode] + self.next_hyperlink_ids = {} # type: Dict[unicode, Set[unicode]] + self.next_section_ids = set() # type: Set[unicode] def pushbody(self, newbody): + # type: (List[unicode]) -> None self.bodystack.append(self.body) self.body = newbody def popbody(self): + # type: () -> List[unicode] body = self.body self.body = self.bodystack.pop() return body def push_hyperlink_ids(self, figtype, ids): + # type: (unicode, Set[unicode]) -> None hyperlink_ids = self.next_hyperlink_ids.setdefault(figtype, set()) hyperlink_ids.update(ids) def pop_hyperlink_ids(self, figtype): + # type: (unicode) -> Set[unicode] return self.next_hyperlink_ids.pop(figtype, set()) def check_latex_elements(self): + # type: () -> None for key in self.builder.config.latex_elements: if key not in self.elements: msg = _("Unknown configure key: latex_elements[%r] is ignored.") self.builder.warn(msg % key) def restrict_footnote(self, node): + # type: (nodes.Node) -> None if self.footnote_restricted is False: self.footnote_restricted = node self.pending_footnotes = [] def unrestrict_footnote(self, node): + # type: (nodes.Node) -> None if self.footnote_restricted == node: self.footnote_restricted = False for footnode in self.pending_footnotes: @@ -542,6 +575,7 @@ class LaTeXTranslator(nodes.NodeVisitor): self.pending_footnotes = [] def format_docclass(self, docclass): + # type: (unicode) -> unicode """ prepends prefix to sphinx document classes """ if docclass in self.docclasses: @@ -549,6 +583,7 @@ class LaTeXTranslator(nodes.NodeVisitor): return docclass def astext(self): + # type: () -> unicode self.elements.update({ 'body': u''.join(self.body), 'indices': self.generate_indices() @@ -561,26 +596,32 @@ class LaTeXTranslator(nodes.NodeVisitor): return LaTeXRenderer().render(DEFAULT_TEMPLATE, self.elements) def hypertarget(self, id, withdoc=True, anchor=True): + # type: (unicode, bool, bool) -> unicode if withdoc: id = self.curfilestack[-1] + ':' + id return (anchor and '\\phantomsection' or '') + \ '\\label{%s}' % self.idescape(id) def hyperlink(self, id): + # type: (unicode) -> unicode return '{\\hyperref[%s]{' % self.hyperrefescape(id) def hyperpageref(self, id): + # type: (unicode) -> unicode return '\\autopageref*{%s}' % self.idescape(id) def idescape(self, id): + # type: (unicode) -> unicode return text_type(id).translate(tex_replace_map).\ encode('ascii', 'backslashreplace').decode('ascii').\ replace('\\', '_') def hyperrefescape(self, ref): + # type: (unicode) -> unicode return self.idescape(ref).replace('-', '\\string-') def babel_renewcommand(self, command, definition): + # type: (unicode, unicode) -> unicode if self.elements['babel']: prefix = '\\addto\\captions%s{' % self.babel.get_language() suffix = '}' @@ -591,6 +632,7 @@ class LaTeXTranslator(nodes.NodeVisitor): return ('%s\\renewcommand{%s}{%s}%s\n' % (prefix, command, definition, suffix)) def babel_defmacro(self, name, definition): + # type: (unicode, unicode) -> unicode if self.elements['babel']: prefix = '\\addto\\extras%s{' % self.babel.get_language() suffix = '}' @@ -601,7 +643,8 @@ class LaTeXTranslator(nodes.NodeVisitor): return ('%s\\def%s{%s}%s\n' % (prefix, name, definition, suffix)) def generate_numfig_format(self, builder): - ret = [] + # type: (Builder) -> unicode + ret = [] # type: List[unicode] figure = self.builder.config.numfig_format['figure'].split('%s', 1) if len(figure) == 1: ret.append('\\def\\fnum@figure{%s}\n' % @@ -640,7 +683,9 @@ class LaTeXTranslator(nodes.NodeVisitor): return ''.join(ret) def generate_indices(self): + # type: (Builder) -> unicode def generate(content, collapsed): + # type: (List[Tuple[unicode, List[Tuple[unicode, unicode, unicode, unicode, unicode]]]], bool) -> unicode # NOQA ret.append('\\begin{sphinxtheindex}\n') ret.append('\\def\\bigletter#1{{\\Large\\sffamily#1}' '\\nopagebreak\\vspace{1mm}}\n') @@ -685,6 +730,7 @@ class LaTeXTranslator(nodes.NodeVisitor): return ''.join(ret) def visit_document(self, node): + # type: (nodes.Node) -> None self.footnotestack.append(self.collect_footnotes(node)) self.curfilestack.append(node.get('docname', '')) if self.first_document == 1: @@ -701,8 +747,9 @@ class LaTeXTranslator(nodes.NodeVisitor): self.sectionlevel = self.top_sectionlevel - 1 def depart_document(self, node): + # type: (nodes.Node) -> None if self.bibitems: - widest_label = "" + widest_label = "" # type: unicode for bi in self.bibitems: if len(widest_label) < len(bi[0]): widest_label = bi[0] @@ -717,6 +764,7 @@ class LaTeXTranslator(nodes.NodeVisitor): self.bibitems = [] def visit_start_of_file(self, node): + # type: (nodes.Node) -> None # collect new footnotes self.footnotestack.append(self.collect_footnotes(node)) # also add a document target @@ -726,7 +774,9 @@ class LaTeXTranslator(nodes.NodeVisitor): self.hlsettingstack.append(self.hlsettingstack[0]) def collect_footnotes(self, node): + # type: (nodes.Node) -> Dict[unicode, List[Union[collected_footnote, bool]]] def footnotes_under(n): + # type: (nodes.Node) -> Iterator[nodes.Node] if isinstance(n, nodes.footnote): yield n else: @@ -735,7 +785,8 @@ class LaTeXTranslator(nodes.NodeVisitor): continue for k in footnotes_under(c): yield k - fnotes = {} + + fnotes = {} # type: Dict[unicode, List[Union[collected_footnote, bool]]] for fn in footnotes_under(node): num = fn.children[0].astext().strip() newnode = collected_footnote(*fn.children, number=num) @@ -743,15 +794,18 @@ class LaTeXTranslator(nodes.NodeVisitor): return fnotes def depart_start_of_file(self, node): + # type: (nodes.Node) -> None self.footnotestack.pop() self.curfilestack.pop() self.hlsettingstack.pop() def visit_highlightlang(self, node): + # type: (nodes.Node) -> None self.hlsettingstack[-1] = [node['lang'], node['linenothreshold']] raise nodes.SkipNode def visit_section(self, node): + # type: (nodes.Node) -> None if not self.this_is_the_title: self.sectionlevel += 1 self.body.append('\n\n') @@ -759,40 +813,50 @@ class LaTeXTranslator(nodes.NodeVisitor): self.next_section_ids.update(node['ids']) def depart_section(self, node): + # type: (nodes.Node) -> None self.sectionlevel = max(self.sectionlevel - 1, self.top_sectionlevel - 1) def visit_problematic(self, node): + # type: (nodes.Node) -> None self.body.append(r'{\color{red}\bfseries{}') def depart_problematic(self, node): + # type: (nodes.Node) -> None self.body.append('}') def visit_topic(self, node): + # type: (nodes.Node) -> None self.in_minipage = 1 self.body.append('\n\\begin{sphinxShadowBox}\n') def depart_topic(self, node): + # type: (nodes.Node) -> None self.in_minipage = 0 self.body.append('\\end{sphinxShadowBox}\n') visit_sidebar = visit_topic depart_sidebar = depart_topic def visit_glossary(self, node): + # type: (nodes.Node) -> None pass def depart_glossary(self, node): + # type: (nodes.Node) -> None pass def visit_productionlist(self, node): + # type: (nodes.Node) -> None self.body.append('\n\n\\begin{productionlist}\n') self.in_production_list = 1 def depart_productionlist(self, node): + # type: (nodes.Node) -> None self.body.append('\\end{productionlist}\n\n') self.in_production_list = 0 def visit_production(self, node): + # type: (nodes.Node) -> None if node['tokenname']: tn = node['tokenname'] self.body.append(self.hypertarget('grammar-token-' + tn)) @@ -801,15 +865,19 @@ class LaTeXTranslator(nodes.NodeVisitor): self.body.append('\\productioncont{') def depart_production(self, node): + # type: (nodes.Node) -> None self.body.append('}\n') def visit_transition(self, node): + # type: (nodes.Node) -> None self.body.append(self.elements['transition']) def depart_transition(self, node): + # type: (nodes.Node) -> None pass def visit_title(self, node): + # type: (nodes.Node) -> None parent = node.parent if isinstance(parent, addnodes.seealso): # the environment already handles this @@ -866,6 +934,7 @@ class LaTeXTranslator(nodes.NodeVisitor): self.in_title = 1 def depart_title(self, node): + # type: (nodes.Node) -> None self.in_title = 0 if isinstance(node.parent, nodes.table): self.table.caption = self.popbody() @@ -874,6 +943,7 @@ class LaTeXTranslator(nodes.NodeVisitor): self.unrestrict_footnote(node) def visit_subtitle(self, node): + # type: (nodes.Node) -> None if isinstance(node.parent, nodes.sidebar): self.body.append('\\sphinxstylesidebarsubtitle{') self.context.append('}\n') @@ -881,17 +951,21 @@ class LaTeXTranslator(nodes.NodeVisitor): self.context.append('') def depart_subtitle(self, node): + # type: (nodes.Node) -> None self.body.append(self.context.pop()) def visit_desc(self, node): + # type: (nodes.Node) -> None self.body.append('\n\n\\begin{fulllineitems}\n') if self.table: self.table.has_problematic = True def depart_desc(self, node): + # type: (nodes.Node) -> None self.body.append('\n\\end{fulllineitems}\n\n') def _visit_signature_line(self, node): + # type: (nodes.Node) -> None for child in node: if isinstance(child, addnodes.desc_parameterlist): self.body.append(r'\pysiglinewithargsret{') @@ -900,9 +974,11 @@ class LaTeXTranslator(nodes.NodeVisitor): self.body.append(r'\pysigline{') def _depart_signature_line(self, node): + # type: (nodes.Node) -> None self.body.append('}') def visit_desc_signature(self, node): + # type: (nodes.Node) -> None if node.parent['objtype'] != 'describe' and node['ids']: hyper = self.hypertarget(node['ids'][0]) else: @@ -912,55 +988,69 @@ class LaTeXTranslator(nodes.NodeVisitor): self._visit_signature_line(node) def depart_desc_signature(self, node): + # type: (nodes.Node) -> None if not node.get('is_multiline'): self._depart_signature_line(node) def visit_desc_signature_line(self, node): + # type: (nodes.Node) -> None self._visit_signature_line(node) def depart_desc_signature_line(self, node): + # type: (nodes.Node) -> None self._depart_signature_line(node) def visit_desc_addname(self, node): + # type: (nodes.Node) -> None self.body.append(r'\sphinxcode{') self.literal_whitespace += 1 def depart_desc_addname(self, node): + # type: (nodes.Node) -> None self.body.append('}') self.literal_whitespace -= 1 def visit_desc_type(self, node): + # type: (nodes.Node) -> None pass def depart_desc_type(self, node): + # type: (nodes.Node) -> None pass def visit_desc_returns(self, node): + # type: (nodes.Node) -> None self.body.append(r'{ $\rightarrow$ ') def depart_desc_returns(self, node): + # type: (nodes.Node) -> None self.body.append(r'}') def visit_desc_name(self, node): + # type: (nodes.Node) -> None self.body.append(r'\sphinxbfcode{') self.no_contractions += 1 self.literal_whitespace += 1 def depart_desc_name(self, node): + # type: (nodes.Node) -> None self.body.append('}') self.literal_whitespace -= 1 self.no_contractions -= 1 def visit_desc_parameterlist(self, node): + # type: (nodes.Node) -> None # close name, open parameterlist self.body.append('}{') self.first_param = 1 def depart_desc_parameterlist(self, node): + # type: (nodes.Node) -> None # close parameterlist, open return annotation self.body.append('}{') def visit_desc_parameter(self, node): + # type: (nodes.Node) -> None if not self.first_param: self.body.append(', ') else: @@ -969,36 +1059,46 @@ class LaTeXTranslator(nodes.NodeVisitor): self.body.append(r'\emph{') def depart_desc_parameter(self, node): + # type: (nodes.Node) -> None if not node.hasattr('noemph'): self.body.append('}') def visit_desc_optional(self, node): + # type: (nodes.Node) -> None self.body.append(r'\sphinxoptional{') def depart_desc_optional(self, node): + # type: (nodes.Node) -> None self.body.append('}') def visit_desc_annotation(self, node): + # type: (nodes.Node) -> None self.body.append(r'\sphinxstrong{') def depart_desc_annotation(self, node): + # type: (nodes.Node) -> None self.body.append('}') def visit_desc_content(self, node): + # type: (nodes.Node) -> None if node.children and not isinstance(node.children[0], nodes.paragraph): # avoid empty desc environment which causes a formatting bug self.body.append('~') def depart_desc_content(self, node): + # type: (nodes.Node) -> None pass def visit_seealso(self, node): + # type: (nodes.Node) -> None self.body.append(u'\n\n\\sphinxstrong{%s:}\n\n' % admonitionlabels['seealso']) def depart_seealso(self, node): + # type: (nodes.Node) -> None self.body.append("\n\n") def visit_rubric(self, node): + # type: (nodes.Node) -> None if len(node.children) == 1 and node.children[0].astext() in \ ('Footnotes', _('Footnotes')): raise nodes.SkipNode @@ -1007,13 +1107,16 @@ class LaTeXTranslator(nodes.NodeVisitor): self.in_title = 1 def depart_rubric(self, node): + # type: (nodes.Node) -> None self.in_title = 0 self.body.append(self.context.pop()) def visit_footnote(self, node): + # type: (nodes.Node) -> None raise nodes.SkipNode def visit_collected_footnote(self, node): + # type: (nodes.Node) -> None self.in_footnote += 1 if 'footnotetext' in node: self.body.append('%%\n\\begin{footnotetext}[%s]' @@ -1023,6 +1126,7 @@ class LaTeXTranslator(nodes.NodeVisitor): '\\sphinxAtStartFootnote\n' % node['number']) def depart_collected_footnote(self, node): + # type: (nodes.Node) -> None if 'footnotetext' in node: self.body.append('%\n\\end{footnotetext}') else: @@ -1030,6 +1134,7 @@ class LaTeXTranslator(nodes.NodeVisitor): self.in_footnote -= 1 def visit_label(self, node): + # type: (nodes.Node) -> None if isinstance(node.parent, nodes.citation): self.bibitems[-1][0] = node.astext() self.bibitems[-1][2] = self.curfilestack[-1] @@ -1037,23 +1142,26 @@ class LaTeXTranslator(nodes.NodeVisitor): raise nodes.SkipNode def visit_tabular_col_spec(self, node): + # type: (nodes.Node) -> None self.next_table_colspec = node['spec'] raise nodes.SkipNode def visit_table(self, node): + # type: (nodes.Node) -> None if self.table: raise UnsupportedError( '%s:%s: nested tables are not yet implemented.' % (self.curfilestack[-1], node.line or '')) self.table = Table() self.table.longtable = 'longtable' in node['classes'] - self.tablebody = [] - self.tableheaders = [] + self.tablebody = [] # type: List[unicode] + self.tableheaders = [] # type: List[unicode] # Redirect body output until table is finished. self.pushbody(self.tablebody) self.restrict_footnote(node) def depart_table(self, node): + # type: (nodes.Node) -> None if self.table.rowcount > 30: self.table.longtable = True self.popbody() @@ -1130,18 +1238,23 @@ class LaTeXTranslator(nodes.NodeVisitor): self.tablebody = None def visit_colspec(self, node): + # type: (nodes.Node) -> None self.table.colcount += 1 def depart_colspec(self, node): + # type: (nodes.Node) -> None pass def visit_tgroup(self, node): + # type: (nodes.Node) -> None pass def depart_tgroup(self, node): + # type: (nodes.Node) -> None pass def visit_thead(self, node): + # type: (nodes.Node) -> None self.table.had_head = True if self.next_table_colspec: self.table.colspec = '{%s}\n' % self.next_table_colspec @@ -1150,24 +1263,29 @@ class LaTeXTranslator(nodes.NodeVisitor): self.body = self.tableheaders def depart_thead(self, node): + # type: (nodes.Node) -> None pass def visit_tbody(self, node): + # type: (nodes.Node) -> None if not self.table.had_head: self.visit_thead(node) self.body = self.tablebody def depart_tbody(self, node): + # type: (nodes.Node) -> None self.remember_multirow = {} self.remember_multirowcol = {} def visit_row(self, node): + # type: (nodes.Node) -> None self.table.col = 0 for key, value in self.remember_multirow.items(): if not value and key in self.remember_multirowcol: del self.remember_multirowcol[key] def depart_row(self, node): + # type: (nodes.Node) -> None self.body.append('\\\\\n') if any(self.remember_multirow.values()): linestart = 1 @@ -1188,6 +1306,7 @@ class LaTeXTranslator(nodes.NodeVisitor): self.table.rowcount += 1 def visit_entry(self, node): + # type: (nodes.Node) -> None if self.table.col == 0: while self.remember_multirow.get(self.table.col + 1, 0): self.table.col += 1 @@ -1249,6 +1368,7 @@ class LaTeXTranslator(nodes.NodeVisitor): self.context.append(context) def depart_entry(self, node): + # type: (nodes.Node) -> None if self.in_merged_cell: self.in_merged_cell = 0 self.literal_whitespace -= 1 @@ -1262,6 +1382,7 @@ class LaTeXTranslator(nodes.NodeVisitor): self.body.append(self.context.pop()) # header def visit_acks(self, node): + # type: (nodes.Node) -> None # this is a list in the source, but should be rendered as a # comma-separated list here self.body.append('\n\n') @@ -1271,16 +1392,19 @@ class LaTeXTranslator(nodes.NodeVisitor): raise nodes.SkipNode def visit_bullet_list(self, node): + # type: (nodes.Node) -> None if not self.compact_list: self.body.append('\\begin{itemize}\n') if self.table: self.table.has_problematic = True def depart_bullet_list(self, node): + # type: (nodes.Node) -> None if not self.compact_list: self.body.append('\\end{itemize}\n') def visit_enumerated_list(self, node): + # type: (nodes.Node) -> None self.body.append('\\begin{enumerate}\n') if 'start' in node: self.body.append('\\setcounter{enumi}{%d}\n' % (node['start'] - 1)) @@ -1288,33 +1412,41 @@ class LaTeXTranslator(nodes.NodeVisitor): self.table.has_problematic = True def depart_enumerated_list(self, node): + # type: (nodes.Node) -> None self.body.append('\\end{enumerate}\n') def visit_list_item(self, node): + # type: (nodes.Node) -> None # Append "{}" in case the next character is "[", which would break # LaTeX's list environment (no numbering and the "[" is not printed). self.body.append(r'\item {} ') def depart_list_item(self, node): + # type: (nodes.Node) -> None self.body.append('\n') def visit_definition_list(self, node): + # type: (nodes.Node) -> None self.body.append('\\begin{description}\n') if self.table: self.table.has_problematic = True def depart_definition_list(self, node): + # type: (nodes.Node) -> None self.body.append('\\end{description}\n') def visit_definition_list_item(self, node): + # type: (nodes.Node) -> None pass def depart_definition_list_item(self, node): + # type: (nodes.Node) -> None pass def visit_term(self, node): + # type: (nodes.Node) -> None self.in_term += 1 - ctx = '}] \\leavevmode' + ctx = '}] \\leavevmode' # type: unicode if node.get('ids'): ctx += self.hypertarget(node['ids'][0]) self.body.append('\\item[{') @@ -1322,40 +1454,50 @@ class LaTeXTranslator(nodes.NodeVisitor): self.context.append(ctx) def depart_term(self, node): + # type: (nodes.Node) -> None self.body.append(self.context.pop()) self.unrestrict_footnote(node) self.in_term -= 1 def visit_termsep(self, node): + # type: (nodes.Node) -> None warnings.warn('sphinx.addnodes.termsep will be removed at Sphinx-1.5', DeprecationWarning) self.body.append(', ') raise nodes.SkipNode def visit_classifier(self, node): + # type: (nodes.Node) -> None self.body.append('{[}') def depart_classifier(self, node): + # type: (nodes.Node) -> None self.body.append('{]}') def visit_definition(self, node): + # type: (nodes.Node) -> None pass def depart_definition(self, node): + # type: (nodes.Node) -> None self.body.append('\n') def visit_field_list(self, node): + # type: (nodes.Node) -> None self.body.append('\\begin{quote}\\begin{description}\n') if self.table: self.table.has_problematic = True def depart_field_list(self, node): + # type: (nodes.Node) -> None self.body.append('\\end{description}\\end{quote}\n') def visit_field(self, node): + # type: (nodes.Node) -> None pass def depart_field(self, node): + # type: (nodes.Node) -> None pass visit_field_name = visit_term @@ -1365,6 +1507,7 @@ class LaTeXTranslator(nodes.NodeVisitor): depart_field_body = depart_definition def visit_paragraph(self, node): + # type: (nodes.Node) -> None index = node.parent.index(node) if (index > 0 and isinstance(node.parent, nodes.compound) and not isinstance(node.parent[index - 1], nodes.paragraph) and @@ -1378,17 +1521,21 @@ class LaTeXTranslator(nodes.NodeVisitor): self.body.append('\n') def depart_paragraph(self, node): + # type: (nodes.Node) -> None self.body.append('\n') def visit_centered(self, node): + # type: (nodes.Node) -> None self.body.append('\n\\begin{center}') if self.table: self.table.has_problematic = True def depart_centered(self, node): + # type: (nodes.Node) -> None self.body.append('\n\\end{center}') def visit_hlist(self, node): + # type: (nodes.Node) -> None # for now, we don't support a more compact list format # don't add individual itemize environments, but one for all columns self.compact_list += 1 @@ -1398,26 +1545,32 @@ class LaTeXTranslator(nodes.NodeVisitor): self.table.has_problematic = True def depart_hlist(self, node): + # type: (nodes.Node) -> None self.compact_list -= 1 self.body.append('\\end{itemize}\n') def visit_hlistcol(self, node): + # type: (nodes.Node) -> None pass def depart_hlistcol(self, node): + # type: (nodes.Node) -> None pass def latex_image_length(self, width_str): + # type: (nodes.Node) -> unicode try: return rstdim_to_latexdim(width_str) except ValueError: self.builder.warn('dimension unit %s is invalid. Ignored.' % width_str) def is_inline(self, node): + # type: (nodes.Node) -> bool """Check whether a node represents an inline element.""" return isinstance(node.parent, nodes.TextElement) def visit_image(self, node): + # type: (nodes.Node) -> None attrs = node.attributes pre = [] # in reverse order post = [] @@ -1490,10 +1643,12 @@ class LaTeXTranslator(nodes.NodeVisitor): self.body.extend(post) def depart_image(self, node): + # type: (nodes.Node) -> None pass def visit_figure(self, node): - ids = '' + # type: (nodes.Node) -> None + ids = '' # type: unicode for id in self.pop_hyperlink_ids('figure'): ids += self.hypertarget(id, anchor=False) if node['ids']: @@ -1549,10 +1704,12 @@ class LaTeXTranslator(nodes.NodeVisitor): self.context.append(ids + align_end + '\\end{figure}\n') def depart_figure(self, node): + # type: (nodes.Node) -> None self.body.append(self.context.pop()) self.unrestrict_footnote(node) def visit_caption(self, node): + # type: (nodes.Node) -> None self.in_caption += 1 self.restrict_footnote(node) if self.in_container_literal_block: @@ -1565,29 +1722,36 @@ class LaTeXTranslator(nodes.NodeVisitor): self.body.append('\\caption{') def depart_caption(self, node): + # type: (nodes.Node) -> None self.body.append('}') self.in_caption -= 1 self.unrestrict_footnote(node) def visit_legend(self, node): + # type: (nodes.Node) -> None self.body.append('{\\small ') def depart_legend(self, node): + # type: (nodes.Node) -> None self.body.append('}') def visit_admonition(self, node): + # type: (nodes.Node) -> None self.body.append('\n\\begin{sphinxadmonition}{note}') def depart_admonition(self, node): + # type: (nodes.Node) -> None self.body.append('\\end{sphinxadmonition}\n') def _make_visit_admonition(name): def visit_admonition(self, node): + # type: (nodes.Node) -> None self.body.append(u'\n\\begin{sphinxadmonition}{%s}{%s:}' % (name, admonitionlabels[name])) return visit_admonition def _depart_named_admonition(self, node): + # type: (nodes.Node) -> None self.body.append('\\end{sphinxadmonition}\n') visit_attention = _make_visit_admonition('attention') @@ -1610,13 +1774,17 @@ class LaTeXTranslator(nodes.NodeVisitor): depart_warning = _depart_named_admonition def visit_versionmodified(self, node): + # type: (nodes.Node) -> None pass def depart_versionmodified(self, node): + # type: (nodes.Node) -> None pass def visit_target(self, node): + # type: (nodes.Node) -> None def add_target(id): + # type: (unicode) -> None # indexing uses standard LaTeX index markup, so the targets # will be generated differently if id.startswith('index-'): @@ -1664,16 +1832,20 @@ class LaTeXTranslator(nodes.NodeVisitor): add_target(id) def depart_target(self, node): + # type: (nodes.Node) -> None pass def visit_attribution(self, node): + # type: (nodes.Node) -> None self.body.append('\n\\begin{flushright}\n') self.body.append('---') def depart_attribution(self, node): + # type: (nodes.Node) -> None self.body.append('\n\\end{flushright}\n') def visit_index(self, node, scre=re.compile(r';\s*')): + # type: (nodes.Node, Pattern) -> None if not node.get('inline', True): self.body.append('\n') entries = node['entries'] @@ -1710,11 +1882,13 @@ class LaTeXTranslator(nodes.NodeVisitor): raise nodes.SkipNode def visit_raw(self, node): + # type: (nodes.Node) -> None if 'latex' in node.get('format', '').split(): self.body.append(node.astext()) raise nodes.SkipNode def visit_reference(self, node): + # type: (nodes.Node) -> None if not self.in_title: for id in node.get('ids'): anchor = not self.in_caption @@ -1773,9 +1947,11 @@ class LaTeXTranslator(nodes.NodeVisitor): self.context.append('') def depart_reference(self, node): + # type: (nodes.Node) -> None self.body.append(self.context.pop()) def visit_number_reference(self, node): + # type: (nodes.Node) -> None if node.get('refid'): id = self.curfilestack[-1] + ':' + node['refid'] else: @@ -1797,46 +1973,59 @@ class LaTeXTranslator(nodes.NodeVisitor): raise nodes.SkipNode def visit_download_reference(self, node): + # type: (nodes.Node) -> None pass def depart_download_reference(self, node): + # type: (nodes.Node) -> None pass def visit_pending_xref(self, node): + # type: (nodes.Node) -> None pass def depart_pending_xref(self, node): + # type: (nodes.Node) -> None pass def visit_emphasis(self, node): + # type: (nodes.Node) -> None self.body.append(r'\sphinxstyleemphasis{') def depart_emphasis(self, node): + # type: (nodes.Node) -> None self.body.append('}') def visit_literal_emphasis(self, node): + # type: (nodes.Node) -> None self.body.append(r'\sphinxstyleliteralemphasis{') self.no_contractions += 1 def depart_literal_emphasis(self, node): + # type: (nodes.Node) -> None self.body.append('}') self.no_contractions -= 1 def visit_strong(self, node): + # type: (nodes.Node) -> None self.body.append(r'\sphinxstylestrong{') def depart_strong(self, node): + # type: (nodes.Node) -> None self.body.append('}') def visit_literal_strong(self, node): + # type: (nodes.Node) -> None self.body.append(r'\sphinxstyleliteralstrong{') self.no_contractions += 1 def depart_literal_strong(self, node): + # type: (nodes.Node) -> None self.body.append('}') self.no_contractions -= 1 def visit_abbreviation(self, node): + # type: (nodes.Node) -> None abbr = node.astext() self.body.append(r'\sphinxstyleabbreviation{') # spell out the explanation once @@ -1847,39 +2036,48 @@ class LaTeXTranslator(nodes.NodeVisitor): self.context.append('}') def depart_abbreviation(self, node): + # type: (nodes.Node) -> None self.body.append(self.context.pop()) def visit_manpage(self, node): + # type: (nodes.Node) -> Any return self.visit_literal_emphasis(node) def depart_manpage(self, node): + # type: (nodes.Node) -> Any return self.depart_literal_emphasis(node) def visit_title_reference(self, node): + # type: (nodes.Node) -> None self.body.append(r'\sphinxtitleref{') def depart_title_reference(self, node): + # type: (nodes.Node) -> None self.body.append('}') def visit_citation(self, node): + # type: (nodes.Node) -> None # TODO maybe use cite bibitems # bibitem: [citelabel, citetext, docname, citeid] self.bibitems.append(['', '', '', '']) self.context.append(len(self.body)) def depart_citation(self, node): + # type: (nodes.Node) -> None size = self.context.pop() text = ''.join(self.body[size:]) del self.body[size:] self.bibitems[-1][1] = text def visit_citation_reference(self, node): + # type: (nodes.Node) -> None # This is currently never encountered, since citation_reference nodes # are already replaced by pending_xref nodes in the environment. self.body.append('\\cite{%s}' % self.idescape(node.astext())) raise nodes.SkipNode def visit_literal(self, node): + # type: (nodes.Node) -> None self.no_contractions += 1 if self.in_title: self.body.append(r'\sphinxstyleliteralintitle{') @@ -1887,10 +2085,12 @@ class LaTeXTranslator(nodes.NodeVisitor): self.body.append(r'\sphinxcode{') def depart_literal(self, node): + # type: (nodes.Node) -> None self.no_contractions -= 1 self.body.append('}') def visit_footnote_reference(self, node): + # type: (nodes.Node) -> None num = node.astext().strip() try: footnode, used = self.footnotestack[-1][num] @@ -1906,18 +2106,20 @@ class LaTeXTranslator(nodes.NodeVisitor): self.pending_footnotes.append(footnode) else: self.footnotestack[-1][num][1] = True - footnode.walkabout(self) + footnode.walkabout(self) # type: ignore raise nodes.SkipChildren def depart_footnote_reference(self, node): + # type: (nodes.Node) -> None pass def visit_literal_block(self, node): + # type: (nodes.Node) -> None if node.rawsource != node.astext(): # most probably a parsed-literal block -- don't highlight self.body.append('\\begin{alltt}\n') else: - ids = '' + ids = '' # type: unicode for id in self.pop_hyperlink_ids('code-block'): ids += self.hypertarget(id, anchor=False) if node['ids']: @@ -1943,6 +2145,7 @@ class LaTeXTranslator(nodes.NodeVisitor): opts = {} def warner(msg): + # type: (unicode) -> None self.builder.warn(msg, (self.curfilestack[-1], node.line)) hlcode = self.highlighter.highlight_block(code, lang, opts=opts, warn=warner, linenos=linenos, @@ -1974,17 +2177,21 @@ class LaTeXTranslator(nodes.NodeVisitor): raise nodes.SkipNode def depart_literal_block(self, node): + # type: (nodes.Node) -> None self.body.append('\n\\end{alltt}\n') visit_doctest_block = visit_literal_block depart_doctest_block = depart_literal_block def visit_line(self, node): + # type: (nodes.Node) -> None self.body.append('\item[] ') def depart_line(self, node): + # type: (nodes.Node) -> None self.body.append('\n') def visit_line_block(self, node): + # type: (nodes.Node) -> None if isinstance(node.parent, nodes.line_block): self.body.append('\\item[]\n' '\\begin{DUlineblock}{\\DUlineblockindent}\n') @@ -1994,9 +2201,11 @@ class LaTeXTranslator(nodes.NodeVisitor): self.table.has_problematic = True def depart_line_block(self, node): + # type: (nodes.Node) -> None self.body.append('\\end{DUlineblock}\n') def visit_block_quote(self, node): + # type: (nodes.Node) -> None # If the block quote contains a single object and that object # is a list, then generate a list not a block quote. # This lets us indent lists. @@ -2012,6 +2221,7 @@ class LaTeXTranslator(nodes.NodeVisitor): self.table.has_problematic = True def depart_block_quote(self, node): + # type: (nodes.Node) -> None done = 0 if len(node.children) == 1: child = node.children[0] @@ -2024,45 +2234,56 @@ class LaTeXTranslator(nodes.NodeVisitor): # option node handling copied from docutils' latex writer def visit_option(self, node): + # type: (nodes.Node) -> None if self.context[-1]: # this is not the first option self.body.append(', ') def depart_option(self, node): + # type: (nodes.Node) -> None # flag that the first option is done. self.context[-1] += 1 def visit_option_argument(self, node): + # type: (nodes.Node) -> None """The delimiter betweeen an option and its argument.""" self.body.append(node.get('delimiter', ' ')) def depart_option_argument(self, node): + # type: (nodes.Node) -> None pass def visit_option_group(self, node): + # type: (nodes.Node) -> None self.body.append('\\item [') # flag for first option self.context.append(0) def depart_option_group(self, node): + # type: (nodes.Node) -> None self.context.pop() # the flag self.body.append('] ') def visit_option_list(self, node): + # type: (nodes.Node) -> None self.body.append('\\begin{optionlist}{3cm}\n') if self.table: self.table.has_problematic = True def depart_option_list(self, node): + # type: (nodes.Node) -> None self.body.append('\\end{optionlist}\n') def visit_option_list_item(self, node): + # type: (nodes.Node) -> None pass def depart_option_list_item(self, node): + # type: (nodes.Node) -> None pass def visit_option_string(self, node): + # type: (nodes.Node) -> None ostring = node.astext() self.no_contractions += 1 self.body.append(self.encode(ostring)) @@ -2070,30 +2291,39 @@ class LaTeXTranslator(nodes.NodeVisitor): raise nodes.SkipNode def visit_description(self, node): + # type: (nodes.Node) -> None self.body.append(' ') def depart_description(self, node): + # type: (nodes.Node) -> None pass def visit_superscript(self, node): + # type: (nodes.Node) -> None self.body.append('$^{\\text{') def depart_superscript(self, node): + # type: (nodes.Node) -> None self.body.append('}}$') def visit_subscript(self, node): + # type: (nodes.Node) -> None self.body.append('$_{\\text{') def depart_subscript(self, node): + # type: (nodes.Node) -> None self.body.append('}}$') def visit_substitution_definition(self, node): + # type: (nodes.Node) -> None raise nodes.SkipNode def visit_substitution_reference(self, node): + # type: (nodes.Node) -> None raise nodes.SkipNode def visit_inline(self, node): + # type: (nodes.Node) -> None classes = node.get('classes', []) if classes in [['menuselection'], ['guilabel']]: self.body.append(r'\sphinxmenuselection{') @@ -2108,24 +2338,30 @@ class LaTeXTranslator(nodes.NodeVisitor): self.context.append('') def depart_inline(self, node): + # type: (nodes.Node) -> None self.body.append(self.context.pop()) def visit_generated(self, node): + # type: (nodes.Node) -> None pass def depart_generated(self, node): + # type: (nodes.Node) -> None pass def visit_compound(self, node): + # type: (nodes.Node) -> None pass def depart_compound(self, node): + # type: (nodes.Node) -> None pass def visit_container(self, node): + # type: (nodes.Node) -> None if node.get('literal_block'): self.in_container_literal_block += 1 - ids = '' + ids = '' # type: unicode for id in self.pop_hyperlink_ids('code-block'): ids += self.hypertarget(id, anchor=False) if node['ids']: @@ -2136,31 +2372,38 @@ class LaTeXTranslator(nodes.NodeVisitor): self.body.append('\n\\def\\sphinxLiteralBlockLabel{' + ids + '}\n') def depart_container(self, node): + # type: (nodes.Node) -> None if node.get('literal_block'): self.in_container_literal_block -= 1 self.body.append('\\let\\sphinxVerbatimTitle\\empty\n') self.body.append('\\let\\sphinxLiteralBlockLabel\\empty\n') def visit_decoration(self, node): + # type: (nodes.Node) -> None pass def depart_decoration(self, node): + # type: (nodes.Node) -> None pass # docutils-generated elements that we don't support def visit_header(self, node): + # type: (nodes.Node) -> None raise nodes.SkipNode def visit_footer(self, node): + # type: (nodes.Node) -> None raise nodes.SkipNode def visit_docinfo(self, node): + # type: (nodes.Node) -> None raise nodes.SkipNode # text handling def encode(self, text): + # type: (unicode) -> unicode text = text_type(text).translate(tex_escape_map) if self.literal_whitespace: # Insert a blank before the newline, to avoid @@ -2172,32 +2415,40 @@ class LaTeXTranslator(nodes.NodeVisitor): return text def encode_uri(self, text): + # type: (unicode) -> unicode # in \href, the tilde is allowed and must be represented literally return self.encode(text).replace('\\textasciitilde{}', '~') def visit_Text(self, node): + # type: (nodes.Node) -> None text = self.encode(node.astext()) if not self.no_contractions: text = educate_quotes_latex(text) self.body.append(text) def depart_Text(self, node): + # type: (nodes.Node) -> None pass def visit_comment(self, node): + # type: (nodes.Node) -> None raise nodes.SkipNode def visit_meta(self, node): + # type: (nodes.Node) -> None # only valid for HTML raise nodes.SkipNode def visit_system_message(self, node): + # type: (nodes.Node) -> None pass def depart_system_message(self, node): + # type: (nodes.Node) -> None self.body.append('\n') def visit_math(self, node): + # type: (nodes.Node) -> None self.builder.warn('using "math" markup without a Sphinx math extension ' 'active, please use one of the math extensions ' 'described at http://sphinx-doc.org/ext/math.html', @@ -2207,4 +2458,5 @@ class LaTeXTranslator(nodes.NodeVisitor): visit_math_block = visit_math def unknown_visit(self, node): + # type: (nodes.Node) -> None raise NotImplementedError('Unknown node: ' + node.__class__.__name__) diff --git a/sphinx/writers/texinfo.py b/sphinx/writers/texinfo.py index 6ec077fd7..0a9a42aca 100644 --- a/sphinx/writers/texinfo.py +++ b/sphinx/writers/texinfo.py @@ -16,6 +16,7 @@ import warnings from six import itervalues from six.moves import range + from docutils import nodes, writers from sphinx import addnodes, __display_version__ @@ -23,6 +24,11 @@ from sphinx.locale import admonitionlabels, _ from sphinx.util.i18n import format_date from sphinx.writers.latex import collected_footnote +if False: + # For type annotation + from typing import Any, Callable, Iterator, Pattern, Tuple, Union # NOQA + from sphinx.builders.texinfo import TexinfoBuilder # NOQA + COPYING = """\ @quotation @@ -80,6 +86,7 @@ TEMPLATE = """\ def find_subsections(section): + # type: (nodes.Node) -> List[nodes.Node] """Return a list of subsections for the given ``section``.""" result = [] for child in section.children: @@ -91,6 +98,7 @@ def find_subsections(section): def smart_capwords(s, sep=None): + # type: (unicode, unicode) -> unicode """Like string.capwords() but does not capitalize words that already contain a capital letter.""" words = s.split(sep) @@ -110,21 +118,23 @@ class TexinfoWriter(writers.Writer): ('Dir entry', ['--texinfo-dir-entry'], {'default': ''}), ('Description', ['--texinfo-dir-description'], {'default': ''}), ('Category', ['--texinfo-dir-category'], {'default': - 'Miscellaneous'}))) + 'Miscellaneous'}))) # type: Tuple[unicode, Any, Tuple[Tuple[unicode, List[unicode], Dict[unicode, unicode]], ...]] # NOQA - settings_defaults = {} + settings_defaults = {} # type: Dict - output = None + output = None # type: unicode visitor_attributes = ('output', 'fragment') def __init__(self, builder): + # type: (TexinfoBuilder) -> None writers.Writer.__init__(self) self.builder = builder self.translator_class = ( self.builder.translator_class or TexinfoTranslator) def translate(self): + # type: () -> None self.visitor = visitor = self.translator_class( self.document, self.builder) self.document.walkabout(visitor) @@ -153,44 +163,53 @@ class TexinfoTranslator(nodes.NodeVisitor): } def __init__(self, document, builder): + # type: (nodes.Node, TexinfoBuilder) -> None nodes.NodeVisitor.__init__(self, document) self.builder = builder self.init_settings() - self.written_ids = set() # node names and anchors in output + self.written_ids = set() # type: Set[unicode] + # node names and anchors in output # node names and anchors that should be in output - self.referenced_ids = set() - self.indices = [] # (node name, content) - self.short_ids = {} # anchors --> short ids - self.node_names = {} # node name --> node's name to display - self.node_menus = {} # node name --> node's menu entries - self.rellinks = {} # node name --> (next, previous, up) + self.referenced_ids = set() # type: Set[unicode] + self.indices = [] # type: List[Tuple[unicode, unicode]] + # (node name, content) + self.short_ids = {} # type: Dict[unicode, unicode] + # anchors --> short ids + self.node_names = {} # type: Dict[unicode, unicode] + # node name --> node's name to display + self.node_menus = {} # type: Dict[unicode, List[unicode]] + # node name --> node's menu entries + self.rellinks = {} # type: Dict[unicode, List[unicode]] + # node name --> (next, previous, up) self.collect_indices() self.collect_node_names() self.collect_node_menus() self.collect_rellinks() - self.body = [] - self.context = [] - self.previous_section = None + self.body = [] # type: List[unicode] + self.context = [] # type: List[unicode] + self.previous_section = None # type: nodes.section self.section_level = 0 self.seen_title = False - self.next_section_ids = set() + self.next_section_ids = set() # type: Set[unicode] self.escape_newlines = 0 self.escape_hyphens = 0 - self.curfilestack = [] - self.footnotestack = [] + self.curfilestack = [] # type: List[unicode] + self.footnotestack = [] # type: List[Dict[unicode, List[Union[collected_footnote, bool]]]] # NOQA self.in_footnote = 0 - self.handled_abbrs = set() + self.handled_abbrs = set() # type: Set[unicode] + self.colwidths = None # type: List[int] def finish(self): + # type: () -> None if self.previous_section is None: self.add_menu('Top') for index in self.indices: name, content = index pointers = tuple([name] + self.rellinks[name]) - self.body.append('\n@node %s,%s,%s,%s\n' % pointers) + self.body.append('\n@node %s,%s,%s,%s\n' % pointers) # type: ignore self.body.append('@unnumbered %s\n\n%s\n' % (name, content)) while self.referenced_ids: @@ -206,6 +225,7 @@ class TexinfoTranslator(nodes.NodeVisitor): # -- Helper routines def init_settings(self): + # type: () -> None settings = self.settings = self.document.settings elements = self.elements = self.default_elements.copy() elements.update({ @@ -222,17 +242,18 @@ class TexinfoTranslator(nodes.NodeVisitor): language=self.builder.config.language)) }) # title - title = elements['title'] + title = None # type: unicode + title = elements['title'] # type: ignore if not title: - title = self.document.next_node(nodes.title) - title = (title and title.astext()) or '<untitled>' + title = self.document.next_node(nodes.title) # type: ignore + title = (title and title.astext()) or '<untitled>' # type: ignore elements['title'] = self.escape_id(title) or '<untitled>' # filename if not elements['filename']: elements['filename'] = self.document.get('source') or 'untitled' - if elements['filename'][-4:] in ('.txt', '.rst'): - elements['filename'] = elements['filename'][:-4] - elements['filename'] += '.info' + if elements['filename'][-4:] in ('.txt', '.rst'): # type: ignore + elements['filename'] = elements['filename'][:-4] # type: ignore + elements['filename'] += '.info' # type: ignore # direntry if settings.texinfo_dir_entry: entry = self.format_menu_entry( @@ -249,11 +270,13 @@ class TexinfoTranslator(nodes.NodeVisitor): elements.update(settings.texinfo_elements) def collect_node_names(self): + # type: () -> None """Generates a unique id for each section. Assigns the attribute ``node_name`` to each section.""" def add_node_name(name): + # type: (unicode) -> unicode node_id = self.escape_id(name) nth, suffix = 1, '' while node_id + suffix in self.written_ids or \ @@ -279,6 +302,7 @@ class TexinfoTranslator(nodes.NodeVisitor): section['node_name'] = add_node_name(name) def collect_node_menus(self): + # type: () -> None """Collect the menu entries for each "node" section.""" node_menus = self.node_menus for node in ([self.document] + @@ -303,6 +327,7 @@ class TexinfoTranslator(nodes.NodeVisitor): node_menus['Top'].append(name) def collect_rellinks(self): + # type: () -> None """Collect the relative links (next, previous, up) for each "node".""" rellinks = self.rellinks node_menus = self.node_menus @@ -336,6 +361,7 @@ class TexinfoTranslator(nodes.NodeVisitor): # characters. def escape(self, s): + # type: (unicode) -> unicode """Return a string with Texinfo command characters escaped.""" s = s.replace('@', '@@') s = s.replace('{', '@{') @@ -346,6 +372,7 @@ class TexinfoTranslator(nodes.NodeVisitor): return s def escape_arg(self, s): + # type: (unicode) -> unicode """Return an escaped string suitable for use as an argument to a Texinfo command.""" s = self.escape(s) @@ -356,6 +383,7 @@ class TexinfoTranslator(nodes.NodeVisitor): return s def escape_id(self, s): + # type: (unicode) -> unicode """Return an escaped string suitable for node names and anchors.""" bad_chars = ',:.()' for bc in bad_chars: @@ -364,6 +392,7 @@ class TexinfoTranslator(nodes.NodeVisitor): return self.escape(s) def escape_menu(self, s): + # type: (unicode) -> unicode """Return an escaped string suitable for menu entries.""" s = self.escape_arg(s) s = s.replace(':', ';') @@ -371,11 +400,13 @@ class TexinfoTranslator(nodes.NodeVisitor): return s def ensure_eol(self): + # type: () -> None """Ensure the last line in body is terminated by new line.""" if self.body and self.body[-1][-1:] != '\n': self.body.append('\n') def format_menu_entry(self, name, node_name, desc): + # type: (unicode, unicode, unicode) -> unicode if name == node_name: s = '* %s:: ' % (name,) else: @@ -386,6 +417,7 @@ class TexinfoTranslator(nodes.NodeVisitor): return s + wdesc.strip() + '\n' def add_menu_entries(self, entries, reg=re.compile(r'\s+---?\s+')): + # type: (List[unicode], Pattern) -> None for entry in entries: name = self.node_names[entry] # special formatting for entries that are divided by an em-dash @@ -403,6 +435,7 @@ class TexinfoTranslator(nodes.NodeVisitor): self.body.append(self.format_menu_entry(name, entry, desc)) def add_menu(self, node_name): + # type: (unicode) -> None entries = self.node_menus[node_name] if not entries: return @@ -415,6 +448,7 @@ class TexinfoTranslator(nodes.NodeVisitor): return def _add_detailed_menu(name): + # type: (unicode) -> None entries = self.node_menus[name] if not entries: return @@ -431,6 +465,7 @@ class TexinfoTranslator(nodes.NodeVisitor): '@end menu\n') def tex_image_length(self, width_str): + # type: (unicode) -> unicode match = re.match('(\d*\.?\d*)\s*(\S*)', width_str) if not match: # fallback @@ -446,15 +481,17 @@ class TexinfoTranslator(nodes.NodeVisitor): return res def collect_indices(self): + # type: () -> None def generate(content, collapsed): - ret = ['\n@menu\n'] + # type: (List[Tuple[unicode, List[List[Union[unicode, int]]]]], bool) -> unicode + ret = ['\n@menu\n'] # type: List[unicode] for letter, entries in content: for entry in entries: if not entry[3]: continue - name = self.escape_menu(entry[0]) + name = self.escape_menu(entry[0]) # type: ignore sid = self.get_short_id('%s:%s' % (entry[2], entry[3])) - desc = self.escape_arg(entry[6]) + desc = self.escape_arg(entry[6]) # type: ignore me = self.format_menu_entry(name, sid, desc) ret.append(me) ret.append('@end menu\n') @@ -484,7 +521,9 @@ class TexinfoTranslator(nodes.NodeVisitor): # TODO: move this to sphinx.util def collect_footnotes(self, node): + # type: (nodes.Node) -> Dict[unicode, List[Union[collected_footnote, bool]]] def footnotes_under(n): + # type: (nodes.Node) -> Iterator[nodes.footnote] if isinstance(n, nodes.footnote): yield n else: @@ -493,7 +532,7 @@ class TexinfoTranslator(nodes.NodeVisitor): continue for k in footnotes_under(c): yield k - fnotes = {} + fnotes = {} # type: Dict[unicode, List[Union[collected_footnote, bool]]] for fn in footnotes_under(node): num = fn.children[0].astext().strip() fnotes[num] = [collected_footnote(*fn.children), False] @@ -502,6 +541,7 @@ class TexinfoTranslator(nodes.NodeVisitor): # -- xref handling def get_short_id(self, id): + # type: (unicode) -> unicode """Return a shorter 'id' associated with ``id``.""" # Shorter ids improve paragraph filling in places # that the id is hidden by Emacs. @@ -513,6 +553,7 @@ class TexinfoTranslator(nodes.NodeVisitor): return sid def add_anchor(self, id, node): + # type: (unicode, nodes.Node) -> None if id.startswith('index-'): return id = self.curfilestack[-1] + ':' + id @@ -524,6 +565,7 @@ class TexinfoTranslator(nodes.NodeVisitor): self.written_ids.add(id) def add_xref(self, id, name, node): + # type: (unicode, unicode, nodes.Node) -> None name = self.escape_menu(name) sid = self.get_short_id(id) self.body.append('@ref{%s,,%s}' % (sid, name)) @@ -533,16 +575,19 @@ class TexinfoTranslator(nodes.NodeVisitor): # -- Visiting def visit_document(self, node): + # type: (nodes.Node) -> None self.footnotestack.append(self.collect_footnotes(node)) self.curfilestack.append(node.get('docname', '')) if 'docname' in node: self.add_anchor(':doc', node) def depart_document(self, node): + # type: (nodes.Node) -> None self.footnotestack.pop() self.curfilestack.pop() def visit_Text(self, node): + # type: (nodes.Node) -> None s = self.escape(node.astext()) if self.escape_newlines: s = s.replace('\n', ' ') @@ -552,9 +597,11 @@ class TexinfoTranslator(nodes.NodeVisitor): self.body.append(s) def depart_Text(self, node): + # type: (nodes.Node) -> None pass def visit_section(self, node): + # type: (nodes.section) -> None self.next_section_ids.update(node.get('ids', [])) if not self.seen_title: return @@ -565,7 +612,7 @@ class TexinfoTranslator(nodes.NodeVisitor): node_name = node['node_name'] pointers = tuple([node_name] + self.rellinks[node_name]) - self.body.append('\n@node %s,%s,%s,%s\n' % pointers) + self.body.append('\n@node %s,%s,%s,%s\n' % pointers) # type: ignore for id in self.next_section_ids: self.add_anchor(id, node) @@ -574,6 +621,7 @@ class TexinfoTranslator(nodes.NodeVisitor): self.section_level += 1 def depart_section(self, node): + # type: (nodes.Node) -> None self.section_level -= 1 headings = ( @@ -582,15 +630,16 @@ class TexinfoTranslator(nodes.NodeVisitor): '@section', '@subsection', '@subsubsection', - ) + ) # type: Tuple[unicode, ...] rubrics = ( '@heading', '@subheading', '@subsubheading', - ) + ) # type: Tuple[unicode, ...] def visit_title(self, node): + # type: (nodes.Node) -> None if not self.seen_title: self.seen_title = 1 raise nodes.SkipNode @@ -612,9 +661,11 @@ class TexinfoTranslator(nodes.NodeVisitor): self.body.append('\n%s ' % heading) def depart_title(self, node): + # type: (nodes.Node) -> None self.body.append('\n\n') def visit_rubric(self, node): + # type: (nodes.Node) -> None if len(node.children) == 1 and node.children[0].astext() in \ ('Footnotes', _('Footnotes')): raise nodes.SkipNode @@ -625,17 +676,21 @@ class TexinfoTranslator(nodes.NodeVisitor): self.body.append('\n%s ' % rubric) def depart_rubric(self, node): + # type: (nodes.Node) -> None self.body.append('\n\n') def visit_subtitle(self, node): + # type: (nodes.Node) -> None self.body.append('\n\n@noindent\n') def depart_subtitle(self, node): + # type: (nodes.Node) -> None self.body.append('\n\n') # -- References def visit_target(self, node): + # type: (nodes.Node) -> None # postpone the labels until after the sectioning command parindex = node.parent.index(node) try: @@ -660,9 +715,11 @@ class TexinfoTranslator(nodes.NodeVisitor): self.add_anchor(id, node) def depart_target(self, node): + # type: (nodes.Node) -> None pass def visit_reference(self, node): + # type: (nodes.Node) -> None # an xref's target is displayed in Info so we ignore a few # cases for the sake of appearance if isinstance(node.parent, (nodes.title, addnodes.desc_type)): @@ -726,14 +783,17 @@ class TexinfoTranslator(nodes.NodeVisitor): raise nodes.SkipNode def depart_reference(self, node): + # type: (nodes.Node) -> None pass def visit_number_reference(self, node): + # type: (nodes.Node) -> None text = nodes.Text(node.get('title', '#')) self.visit_Text(text) raise nodes.SkipNode def visit_title_reference(self, node): + # type: (nodes.Node) -> None text = node.astext() self.body.append('@cite{%s}' % self.escape_arg(text)) raise nodes.SkipNode @@ -741,22 +801,28 @@ class TexinfoTranslator(nodes.NodeVisitor): # -- Blocks def visit_paragraph(self, node): + # type: (nodes.Node) -> None self.body.append('\n') def depart_paragraph(self, node): + # type: (nodes.Node) -> None self.body.append('\n') def visit_block_quote(self, node): + # type: (nodes.Node) -> None self.body.append('\n@quotation\n') def depart_block_quote(self, node): + # type: (nodes.Node) -> None self.ensure_eol() self.body.append('@end quotation\n') def visit_literal_block(self, node): + # type: (nodes.Node) -> None self.body.append('\n@example\n') def depart_literal_block(self, node): + # type: (nodes.Node) -> None self.ensure_eol() self.body.append('@end example\n') @@ -764,101 +830,126 @@ class TexinfoTranslator(nodes.NodeVisitor): depart_doctest_block = depart_literal_block def visit_line_block(self, node): + # type: (nodes.Node) -> None if not isinstance(node.parent, nodes.line_block): self.body.append('\n\n') self.body.append('@display\n') def depart_line_block(self, node): + # type: (nodes.Node) -> None self.body.append('@end display\n') if not isinstance(node.parent, nodes.line_block): self.body.append('\n\n') def visit_line(self, node): + # type: (nodes.Node) -> None self.escape_newlines += 1 def depart_line(self, node): + # type: (nodes.Node) -> None self.body.append('@w{ }\n') self.escape_newlines -= 1 # -- Inline def visit_strong(self, node): + # type: (nodes.Node) -> None self.body.append('@strong{') def depart_strong(self, node): + # type: (nodes.Node) -> None self.body.append('}') def visit_emphasis(self, node): + # type: (nodes.Node) -> None self.body.append('@emph{') def depart_emphasis(self, node): + # type: (nodes.Node) -> None self.body.append('}') def visit_literal(self, node): + # type: (nodes.Node) -> None self.body.append('@code{') def depart_literal(self, node): + # type: (nodes.Node) -> None self.body.append('}') def visit_superscript(self, node): + # type: (nodes.Node) -> None self.body.append('@w{^') def depart_superscript(self, node): + # type: (nodes.Node) -> None self.body.append('}') def visit_subscript(self, node): + # type: (nodes.Node) -> None self.body.append('@w{[') def depart_subscript(self, node): + # type: (nodes.Node) -> None self.body.append(']}') # -- Footnotes def visit_footnote(self, node): + # type: (nodes.Node) -> None raise nodes.SkipNode def visit_collected_footnote(self, node): + # type: (nodes.Node) -> None self.in_footnote += 1 self.body.append('@footnote{') def depart_collected_footnote(self, node): + # type: (nodes.Node) -> None self.body.append('}') self.in_footnote -= 1 def visit_footnote_reference(self, node): + # type: (nodes.Node) -> None num = node.astext().strip() try: footnode, used = self.footnotestack[-1][num] except (KeyError, IndexError): raise nodes.SkipNode # footnotes are repeated for each reference - footnode.walkabout(self) + footnode.walkabout(self) # type: ignore raise nodes.SkipChildren def visit_citation(self, node): + # type: (nodes.Node) -> None for id in node.get('ids'): self.add_anchor(id, node) def depart_citation(self, node): + # type: (nodes.Node) -> None pass def visit_citation_reference(self, node): + # type: (nodes.Node) -> None self.body.append('@w{[') def depart_citation_reference(self, node): + # type: (nodes.Node) -> None self.body.append(']}') # -- Lists def visit_bullet_list(self, node): + # type: (nodes.Node) -> None bullet = node.get('bullet', '*') self.body.append('\n\n@itemize %s\n' % bullet) def depart_bullet_list(self, node): + # type: (nodes.Node) -> None self.ensure_eol() self.body.append('@end itemize\n') def visit_enumerated_list(self, node): + # type: (nodes.Node) -> None # doesn't support Roman numerals enum = node.get('enumtype', 'arabic') starters = {'arabic': '', @@ -868,75 +959,96 @@ class TexinfoTranslator(nodes.NodeVisitor): self.body.append('\n\n@enumerate %s\n' % start) def depart_enumerated_list(self, node): + # type: (nodes.Node) -> None self.ensure_eol() self.body.append('@end enumerate\n') def visit_list_item(self, node): + # type: (nodes.Node) -> None self.body.append('\n@item ') def depart_list_item(self, node): + # type: (nodes.Node) -> None pass # -- Option List def visit_option_list(self, node): + # type: (nodes.Node) -> None self.body.append('\n\n@table @option\n') def depart_option_list(self, node): + # type: (nodes.Node) -> None self.ensure_eol() self.body.append('@end table\n') def visit_option_list_item(self, node): + # type: (nodes.Node) -> None pass def depart_option_list_item(self, node): + # type: (nodes.Node) -> None pass def visit_option_group(self, node): + # type: (nodes.Node) -> None self.at_item_x = '@item' def depart_option_group(self, node): + # type: (nodes.Node) -> None pass def visit_option(self, node): + # type: (nodes.Node) -> None self.escape_hyphens += 1 self.body.append('\n%s ' % self.at_item_x) self.at_item_x = '@itemx' def depart_option(self, node): + # type: (nodes.Node) -> None self.escape_hyphens -= 1 def visit_option_string(self, node): + # type: (nodes.Node) -> None pass def depart_option_string(self, node): + # type: (nodes.Node) -> None pass def visit_option_argument(self, node): + # type: (nodes.Node) -> None self.body.append(node.get('delimiter', ' ')) def depart_option_argument(self, node): + # type: (nodes.Node) -> None pass def visit_description(self, node): + # type: (nodes.Node) -> None self.body.append('\n') def depart_description(self, node): + # type: (nodes.Node) -> None pass # -- Definitions def visit_definition_list(self, node): + # type: (nodes.Node) -> None self.body.append('\n\n@table @asis\n') def depart_definition_list(self, node): + # type: (nodes.Node) -> None self.ensure_eol() self.body.append('@end table\n') def visit_definition_list_item(self, node): + # type: (nodes.Node) -> None self.at_item_x = '@item' def depart_definition_list_item(self, node): + # type: (nodes.Node) -> None pass def visit_term(self, node): @@ -951,43 +1063,55 @@ class TexinfoTranslator(nodes.NodeVisitor): self.at_item_x = '@itemx' def depart_term(self, node): + # type: (nodes.Node) -> None pass def visit_termsep(self, node): + # type: (nodes.Node) -> None warnings.warn('sphinx.addnodes.termsep will be removed at Sphinx-1.5', DeprecationWarning) self.body.append('\n%s ' % self.at_item_x) def depart_termsep(self, node): + # type: (nodes.Node) -> None pass def visit_classifier(self, node): + # type: (nodes.Node) -> None self.body.append(' : ') def depart_classifier(self, node): + # type: (nodes.Node) -> None pass def visit_definition(self, node): + # type: (nodes.Node) -> None self.body.append('\n') def depart_definition(self, node): + # type: (nodes.Node) -> None pass # -- Tables def visit_table(self, node): + # type: (nodes.Node) -> None self.entry_sep = '@item' def depart_table(self, node): + # type: (nodes.Node) -> None self.body.append('\n@end multitable\n\n') def visit_tabular_col_spec(self, node): + # type: (nodes.Node) -> None pass def depart_tabular_col_spec(self, node): + # type: (nodes.Node) -> None pass def visit_colspec(self, node): + # type: (nodes.Node) -> None self.colwidths.append(node['colwidth']) if len(self.colwidths) != self.n_cols: return @@ -996,82 +1120,104 @@ class TexinfoTranslator(nodes.NodeVisitor): self.body.append('{%s} ' % ('x' * (n+2))) def depart_colspec(self, node): + # type: (nodes.Node) -> None pass def visit_tgroup(self, node): + # type: (nodes.Node) -> None self.colwidths = [] self.n_cols = node['cols'] def depart_tgroup(self, node): + # type: (nodes.Node) -> None pass def visit_thead(self, node): + # type: (nodes.Node) -> None self.entry_sep = '@headitem' def depart_thead(self, node): + # type: (nodes.Node) -> None pass def visit_tbody(self, node): + # type: (nodes.Node) -> None pass def depart_tbody(self, node): + # type: (nodes.Node) -> None pass def visit_row(self, node): + # type: (nodes.Node) -> None pass def depart_row(self, node): + # type: (nodes.Node) -> None self.entry_sep = '@item' def visit_entry(self, node): + # type: (nodes.Node) -> None self.body.append('\n%s\n' % self.entry_sep) self.entry_sep = '@tab' def depart_entry(self, node): + # type: (nodes.Node) -> None for i in range(node.get('morecols', 0)): self.body.append('\n@tab\n') # -- Field Lists def visit_field_list(self, node): + # type: (nodes.Node) -> None pass def depart_field_list(self, node): + # type: (nodes.Node) -> None pass def visit_field(self, node): + # type: (nodes.Node) -> None self.body.append('\n') def depart_field(self, node): + # type: (nodes.Node) -> None self.body.append('\n') def visit_field_name(self, node): + # type: (nodes.Node) -> None self.ensure_eol() self.body.append('@*') def depart_field_name(self, node): + # type: (nodes.Node) -> None self.body.append(': ') def visit_field_body(self, node): + # type: (nodes.Node) -> None pass def depart_field_body(self, node): + # type: (nodes.Node) -> None pass # -- Admonitions def visit_admonition(self, node, name=''): + # type: (nodes.Node, unicode) -> None if not name: name = self.escape(node[0].astext()) self.body.append(u'\n@cartouche\n@quotation %s ' % name) def depart_admonition(self, node): + # type: (nodes.Node) -> None self.ensure_eol() self.body.append('@end quotation\n' '@end cartouche\n') def _make_visit_admonition(name): def visit(self, node): + # type: (nodes.Node) -> None self.visit_admonition(node, admonitionlabels[name]) return visit @@ -1097,32 +1243,41 @@ class TexinfoTranslator(nodes.NodeVisitor): # -- Misc def visit_docinfo(self, node): + # type: (nodes.Node) -> None raise nodes.SkipNode def visit_generated(self, node): + # type: (nodes.Node) -> None raise nodes.SkipNode def visit_header(self, node): + # type: (nodes.Node) -> None raise nodes.SkipNode def visit_footer(self, node): + # type: (nodes.Node) -> None raise nodes.SkipNode def visit_container(self, node): + # type: (nodes.Node) -> None if node.get('literal_block'): self.body.append('\n\n@float LiteralBlock\n') def depart_container(self, node): + # type: (nodes.Node) -> None if node.get('literal_block'): self.body.append('\n@end float\n\n') def visit_decoration(self, node): + # type: (nodes.Node) -> None pass def depart_decoration(self, node): + # type: (nodes.Node) -> None pass def visit_topic(self, node): + # type: (nodes.Node) -> None # ignore TOC's since we have to have a "menu" anyway if 'contents' in node.get('classes', []): raise nodes.SkipNode @@ -1131,33 +1286,42 @@ class TexinfoTranslator(nodes.NodeVisitor): self.body.append('%s\n' % self.escape(title.astext())) def depart_topic(self, node): + # type: (nodes.Node) -> None pass def visit_transition(self, node): + # type: (nodes.Node) -> None self.body.append('\n\n%s\n\n' % ('_' * 66)) def depart_transition(self, node): + # type: (nodes.Node) -> None pass def visit_attribution(self, node): + # type: (nodes.Node) -> None self.body.append('\n\n@center --- ') def depart_attribution(self, node): + # type: (nodes.Node) -> None self.body.append('\n\n') def visit_raw(self, node): + # type: (nodes.Node) -> None format = node.get('format', '').split() if 'texinfo' in format or 'texi' in format: self.body.append(node.astext()) raise nodes.SkipNode def visit_figure(self, node): + # type: (nodes.Node) -> None self.body.append('\n\n@float Figure\n') def depart_figure(self, node): + # type: (nodes.Node) -> None self.body.append('\n@end float\n\n') def visit_caption(self, node): + # type: (nodes.Node) -> None if (isinstance(node.parent, nodes.figure) or (isinstance(node.parent, nodes.container) and node.parent.get('literal_block'))): @@ -1167,12 +1331,14 @@ class TexinfoTranslator(nodes.NodeVisitor): (self.curfilestack[-1], node.line)) def depart_caption(self, node): + # type: (nodes.Node) -> None if (isinstance(node.parent, nodes.figure) or (isinstance(node.parent, nodes.container) and node.parent.get('literal_block'))): self.body.append('}\n') def visit_image(self, node): + # type: (nodes.Node) -> None if node['uri'] in self.builder.images: uri = self.builder.images[node['uri']] else: @@ -1193,73 +1359,93 @@ class TexinfoTranslator(nodes.NodeVisitor): (name, width, height, alt, ext[1:])) def depart_image(self, node): + # type: (nodes.Node) -> None pass def visit_compound(self, node): + # type: (nodes.Node) -> None pass def depart_compound(self, node): + # type: (nodes.Node) -> None pass def visit_sidebar(self, node): + # type: (nodes.Node) -> None self.visit_topic(node) def depart_sidebar(self, node): + # type: (nodes.Node) -> None self.depart_topic(node) def visit_label(self, node): + # type: (nodes.Node) -> None self.body.append('@w{(') def depart_label(self, node): + # type: (nodes.Node) -> None self.body.append(')} ') def visit_legend(self, node): + # type: (nodes.Node) -> None pass def depart_legend(self, node): + # type: (nodes.Node) -> None pass def visit_substitution_reference(self, node): + # type: (nodes.Node) -> None pass def depart_substitution_reference(self, node): + # type: (nodes.Node) -> None pass def visit_substitution_definition(self, node): + # type: (nodes.Node) -> None raise nodes.SkipNode def visit_system_message(self, node): + # type: (nodes.Node) -> None self.body.append('\n@verbatim\n' '<SYSTEM MESSAGE: %s>\n' '@end verbatim\n' % node.astext()) raise nodes.SkipNode def visit_comment(self, node): + # type: (nodes.Node) -> None self.body.append('\n') for line in node.astext().splitlines(): self.body.append('@c %s\n' % line) raise nodes.SkipNode def visit_problematic(self, node): + # type: (nodes.Node) -> None self.body.append('>>') def depart_problematic(self, node): + # type: (nodes.Node) -> None self.body.append('<<') def unimplemented_visit(self, node): + # type: (nodes.Node) -> None self.builder.warn("unimplemented node type: %r" % node, (self.curfilestack[-1], node.line)) def unknown_visit(self, node): + # type: (nodes.Node) -> None self.builder.warn("unknown node type: %r" % node, (self.curfilestack[-1], node.line)) def unknown_departure(self, node): + # type: (nodes.Node) -> None pass # -- Sphinx specific def visit_productionlist(self, node): + # type: (nodes.Node) -> None self.visit_literal_block(None) names = [] for production in node: @@ -1278,24 +1464,31 @@ class TexinfoTranslator(nodes.NodeVisitor): raise nodes.SkipNode def visit_production(self, node): + # type: (nodes.Node) -> None pass def depart_production(self, node): + # type: (nodes.Node) -> None pass def visit_literal_emphasis(self, node): + # type: (nodes.Node) -> None self.body.append('@code{') def depart_literal_emphasis(self, node): + # type: (nodes.Node) -> None self.body.append('}') def visit_literal_strong(self, node): + # type: (nodes.Node) -> None self.body.append('@code{') def depart_literal_strong(self, node): + # type: (nodes.Node) -> None self.body.append('}') def visit_index(self, node): + # type: (nodes.Node) -> None # terminate the line but don't prevent paragraph breaks if isinstance(node.parent, nodes.paragraph): self.ensure_eol() @@ -1307,43 +1500,54 @@ class TexinfoTranslator(nodes.NodeVisitor): self.body.append('@geindex %s\n' % text) def visit_versionmodified(self, node): + # type: (nodes.Node) -> None self.body.append('\n') def depart_versionmodified(self, node): + # type: (nodes.Node) -> None self.body.append('\n') def visit_start_of_file(self, node): + # type: (nodes.Node) -> None # add a document target self.next_section_ids.add(':doc') self.curfilestack.append(node['docname']) self.footnotestack.append(self.collect_footnotes(node)) def depart_start_of_file(self, node): + # type: (nodes.Node) -> None self.curfilestack.pop() self.footnotestack.pop() def visit_centered(self, node): + # type: (nodes.Node) -> None txt = self.escape_arg(node.astext()) self.body.append('\n\n@center %s\n\n' % txt) raise nodes.SkipNode def visit_seealso(self, node): + # type: (nodes.Node) -> None self.body.append(u'\n\n@subsubheading %s\n\n' % admonitionlabels['seealso']) def depart_seealso(self, node): + # type: (nodes.Node) -> None self.body.append('\n') def visit_meta(self, node): + # type: (nodes.Node) -> None raise nodes.SkipNode def visit_glossary(self, node): + # type: (nodes.Node) -> None pass def depart_glossary(self, node): + # type: (nodes.Node) -> None pass def visit_acks(self, node): + # type: (nodes.Node) -> None self.body.append('\n\n') self.body.append(', '.join(n.astext() for n in node.children[0].children) + '.') @@ -1351,23 +1555,28 @@ class TexinfoTranslator(nodes.NodeVisitor): raise nodes.SkipNode def visit_highlightlang(self, node): + # type: (nodes.Node) -> None pass def depart_highlightlang(self, node): + # type: (nodes.Node) -> None pass # -- Desc def visit_desc(self, node): + # type: (nodes.Node) -> None self.desc = node self.at_deffnx = '@deffn' def depart_desc(self, node): + # type: (nodes.Node) -> None self.desc = None self.ensure_eol() self.body.append('@end deffn\n') def visit_desc_signature(self, node): + # type: (nodes.Node) -> None self.escape_hyphens += 1 objtype = node.parent['objtype'] if objtype != 'describe': @@ -1388,42 +1597,54 @@ class TexinfoTranslator(nodes.NodeVisitor): self.desc_type_name = name def depart_desc_signature(self, node): + # type: (nodes.Node) -> None self.body.append("\n") self.escape_hyphens -= 1 self.desc_type_name = None def visit_desc_name(self, node): + # type: (nodes.Node) -> None pass def depart_desc_name(self, node): + # type: (nodes.Node) -> None pass def visit_desc_addname(self, node): + # type: (nodes.Node) -> None pass def depart_desc_addname(self, node): + # type: (nodes.Node) -> None pass def visit_desc_type(self, node): + # type: (nodes.Node) -> None pass def depart_desc_type(self, node): + # type: (nodes.Node) -> None pass def visit_desc_returns(self, node): + # type: (nodes.Node) -> None self.body.append(' -> ') def depart_desc_returns(self, node): + # type: (nodes.Node) -> None pass def visit_desc_parameterlist(self, node): + # type: (nodes.Node) -> None self.body.append(' (') self.first_param = 1 def depart_desc_parameterlist(self, node): + # type: (nodes.Node) -> None self.body.append(')') def visit_desc_parameter(self, node): + # type: (nodes.Node) -> None if not self.first_param: self.body.append(', ') else: @@ -1435,12 +1656,15 @@ class TexinfoTranslator(nodes.NodeVisitor): raise nodes.SkipNode def visit_desc_optional(self, node): + # type: (nodes.Node) -> None self.body.append('[') def depart_desc_optional(self, node): + # type: (nodes.Node) -> None self.body.append(']') def visit_desc_annotation(self, node): + # type: (nodes.Node) -> None # Try to avoid duplicating info already displayed by the deffn category. # e.g. # @deffn {Class} Foo @@ -1453,21 +1677,27 @@ class TexinfoTranslator(nodes.NodeVisitor): raise nodes.SkipNode def depart_desc_annotation(self, node): + # type: (nodes.Node) -> None pass def visit_desc_content(self, node): + # type: (nodes.Node) -> None pass def depart_desc_content(self, node): + # type: (nodes.Node) -> None pass def visit_inline(self, node): + # type: (nodes.Node) -> None pass def depart_inline(self, node): + # type: (nodes.Node) -> None pass def visit_abbreviation(self, node): + # type: (nodes.Node) -> None abbr = node.astext() self.body.append('@abbr{') if node.hasattr('explanation') and abbr not in self.handled_abbrs: @@ -1477,39 +1707,51 @@ class TexinfoTranslator(nodes.NodeVisitor): self.context.append('}') def depart_abbreviation(self, node): + # type: (nodes.Node) -> None self.body.append(self.context.pop()) def visit_manpage(self, node): + # type: (nodes.Node) -> Any return self.visit_literal_emphasis(node) def depart_manpage(self, node): + # type: (nodes.Node) -> Any return self.depart_literal_emphasis(node) def visit_download_reference(self, node): + # type: (nodes.Node) -> None pass def depart_download_reference(self, node): + # type: (nodes.Node) -> None pass def visit_hlist(self, node): + # type: (nodes.Node) -> None self.visit_bullet_list(node) def depart_hlist(self, node): + # type: (nodes.Node) -> None self.depart_bullet_list(node) def visit_hlistcol(self, node): + # type: (nodes.Node) -> None pass def depart_hlistcol(self, node): + # type: (nodes.Node) -> None pass def visit_pending_xref(self, node): + # type: (nodes.Node) -> None pass def depart_pending_xref(self, node): + # type: (nodes.Node) -> None pass def visit_math(self, node): + # type: (nodes.Node) -> None self.builder.warn('using "math" markup without a Sphinx math extension ' 'active, please use one of the math extensions ' 'described at http://sphinx-doc.org/ext/math.html') diff --git a/sphinx/writers/text.py b/sphinx/writers/text.py index 7032208ea..da58906e7 100644 --- a/sphinx/writers/text.py +++ b/sphinx/writers/text.py @@ -22,6 +22,11 @@ from docutils.utils import column_width from sphinx import addnodes from sphinx.locale import admonitionlabels, _ +if False: + # For type annotation + from typing import Any, Callable, Tuple, Union # NOQA + from sphinx.builders.text import TextBuilder # NOQA + class TextWrapper(textwrap.TextWrapper): """Custom subclass that uses a different word separator regex.""" @@ -33,13 +38,14 @@ class TextWrapper(textwrap.TextWrapper): r'(?<=[\w\!\"\'\&\.\,\?])-{2,}(?=\w))') # em-dash def _wrap_chunks(self, chunks): + # type: (List[unicode]) -> List[unicode] """_wrap_chunks(chunks : [string]) -> [string] The original _wrap_chunks uses len() to calculate width. This method respects wide/fullwidth characters for width adjustment. """ drop_whitespace = getattr(self, 'drop_whitespace', True) # py25 compat - lines = [] + lines = [] # type: List[unicode] if self.width <= 0: raise ValueError("invalid width %r (must be > 0)" % self.width) @@ -81,6 +87,7 @@ class TextWrapper(textwrap.TextWrapper): return lines def _break_word(self, word, space_left): + # type: (unicode, int) -> Tuple[unicode, unicode] """_break_word(word : string, space_left : int) -> (string, string) Break line by unicode width instead of len(word). @@ -93,14 +100,16 @@ class TextWrapper(textwrap.TextWrapper): return word, '' def _split(self, text): + # type: (unicode) -> List[unicode] """_split(text : string) -> [string] Override original method that only split by 'wordsep_re'. This '_split' split wide-characters into chunk by one character. """ def split(t): - return textwrap.TextWrapper._split(self, t) - chunks = [] + # type: (unicode) -> List[unicode] + return textwrap.TextWrapper._split(self, t) # type: ignore + chunks = [] # type: List[unicode] for chunk in split(text): for w, g in groupby(chunk, column_width): if w == 1: @@ -110,6 +119,7 @@ class TextWrapper(textwrap.TextWrapper): return chunks def _handle_long_word(self, reversed_chunks, cur_line, cur_len, width): + # type: (List[unicode], List[unicode], int, int) -> None """_handle_long_word(chunks : [string], cur_line : [string], cur_len : int, width : int) @@ -131,6 +141,7 @@ STDINDENT = 3 def my_wrap(text, width=MAXWIDTH, **kwargs): + # type: (unicode, int, Any) -> List[unicode] w = TextWrapper(width=width, **kwargs) return w.wrap(text) @@ -138,16 +149,18 @@ def my_wrap(text, width=MAXWIDTH, **kwargs): class TextWriter(writers.Writer): supported = ('text',) settings_spec = ('No options here.', '', ()) - settings_defaults = {} + settings_defaults = {} # type: Dict output = None def __init__(self, builder): + # type: (TextBuilder) -> None writers.Writer.__init__(self) self.builder = builder self.translator_class = self.builder.translator_class or TextTranslator def translate(self): + # type: () -> None visitor = self.translator_class(self.document, self.builder) self.document.walkabout(visitor) self.output = visitor.body @@ -157,6 +170,7 @@ class TextTranslator(nodes.NodeVisitor): sectionchars = '*=-~"+`' def __init__(self, document, builder): + # type: (nodes.Node, TextBuilder) -> None nodes.NodeVisitor.__init__(self, document) self.builder = builder @@ -168,28 +182,32 @@ class TextTranslator(nodes.NodeVisitor): else: self.nl = '\n' self.sectionchars = builder.config.text_sectionchars - self.states = [[]] + self.states = [[]] # type: List[List[Tuple[int, Union[unicode, List[unicode]]]]] self.stateindent = [0] - self.list_counter = [] + self.list_counter = [] # type: List[int] self.sectionlevel = 0 self.lineblocklevel = 0 - self.table = None + self.table = None # type: List[Union[unicode, List[int]]] def add_text(self, text): + # type: (unicode) -> None self.states[-1].append((-1, text)) def new_state(self, indent=STDINDENT): + # type: (int) -> None self.states.append([]) self.stateindent.append(indent) def end_state(self, wrap=True, end=[''], first=None): + # type: (bool, List[unicode], unicode) -> None content = self.states.pop() maxindent = sum(self.stateindent) indent = self.stateindent.pop() - result = [] - toformat = [] + result = [] # type: List[Tuple[int, List[unicode]]] + toformat = [] # type: List[unicode] def do_format(): + # type: () -> None if not toformat: return if wrap: @@ -201,10 +219,10 @@ class TextTranslator(nodes.NodeVisitor): result.append((indent, res)) for itemindent, item in content: if itemindent == -1: - toformat.append(item) + toformat.append(item) # type: ignore else: do_format() - result.append((indent + itemindent, item)) + result.append((indent + itemindent, item)) # type: ignore toformat = [] do_format() if first is not None and result: @@ -220,9 +238,11 @@ class TextTranslator(nodes.NodeVisitor): self.states[-1].extend(result) def visit_document(self, node): + # type: (nodes.Node) -> None self.new_state(0) def depart_document(self, node): + # type: (nodes.Node) -> None self.end_state() self.body = self.nl.join(line and (' '*indent + line) for indent, lines in self.states[0] @@ -230,126 +250,161 @@ class TextTranslator(nodes.NodeVisitor): # XXX header/footer? def visit_highlightlang(self, node): + # type: (nodes.Node) -> None raise nodes.SkipNode def visit_section(self, node): + # type: (nodes.Node) -> None self._title_char = self.sectionchars[self.sectionlevel] self.sectionlevel += 1 def depart_section(self, node): + # type: (nodes.Node) -> None self.sectionlevel -= 1 def visit_topic(self, node): + # type: (nodes.Node) -> None self.new_state(0) def depart_topic(self, node): + # type: (nodes.Node) -> None self.end_state() visit_sidebar = visit_topic depart_sidebar = depart_topic def visit_rubric(self, node): + # type: (nodes.Node) -> None self.new_state(0) self.add_text('-[ ') def depart_rubric(self, node): + # type: (nodes.Node) -> None self.add_text(' ]-') self.end_state() def visit_compound(self, node): + # type: (nodes.Node) -> None pass def depart_compound(self, node): + # type: (nodes.Node) -> None pass def visit_glossary(self, node): + # type: (nodes.Node) -> None pass def depart_glossary(self, node): + # type: (nodes.Node) -> None pass def visit_title(self, node): + # type: (nodes.Node) -> None if isinstance(node.parent, nodes.Admonition): self.add_text(node.astext()+': ') raise nodes.SkipNode self.new_state(0) def depart_title(self, node): + # type: (nodes.Node) -> None if isinstance(node.parent, nodes.section): char = self._title_char else: char = '^' - text = ''.join(x[1] for x in self.states.pop() if x[0] == -1) + text = None # type: unicode + text = ''.join(x[1] for x in self.states.pop() if x[0] == -1) # type: ignore self.stateindent.pop() - title = ['', text, '%s' % (char * column_width(text)), ''] + title = ['', text, '%s' % (char * column_width(text)), ''] # type: List[unicode] if len(self.states) == 2 and len(self.states[-1]) == 0: # remove an empty line before title if it is first section title in the document title.pop(0) self.states[-1].append((0, title)) def visit_subtitle(self, node): + # type: (nodes.Node) -> None pass def depart_subtitle(self, node): + # type: (nodes.Node) -> None pass def visit_attribution(self, node): + # type: (nodes.Node) -> None self.add_text('-- ') def depart_attribution(self, node): + # type: (nodes.Node) -> None pass def visit_desc(self, node): + # type: (nodes.Node) -> None pass def depart_desc(self, node): + # type: (nodes.Node) -> None pass def visit_desc_signature(self, node): + # type: (nodes.Node) -> None self.new_state(0) def depart_desc_signature(self, node): + # type: (nodes.Node) -> None # XXX: wrap signatures in a way that makes sense self.end_state(wrap=False, end=None) def visit_desc_signature_line(self, node): + # type: (nodes.Node) -> None pass def depart_desc_signature_line(self, node): + # type: (nodes.Node) -> None self.add_text('\n') def visit_desc_name(self, node): + # type: (nodes.Node) -> None pass def depart_desc_name(self, node): + # type: (nodes.Node) -> None pass def visit_desc_addname(self, node): + # type: (nodes.Node) -> None pass def depart_desc_addname(self, node): + # type: (nodes.Node) -> None pass def visit_desc_type(self, node): + # type: (nodes.Node) -> None pass def depart_desc_type(self, node): + # type: (nodes.Node) -> None pass def visit_desc_returns(self, node): + # type: (nodes.Node) -> None self.add_text(' -> ') def depart_desc_returns(self, node): + # type: (nodes.Node) -> None pass def visit_desc_parameterlist(self, node): + # type: (nodes.Node) -> None self.add_text('(') self.first_param = 1 def depart_desc_parameterlist(self, node): + # type: (nodes.Node) -> None self.add_text(')') def visit_desc_parameter(self, node): + # type: (nodes.Node) -> None if not self.first_param: self.add_text(', ') else: @@ -358,37 +413,48 @@ class TextTranslator(nodes.NodeVisitor): raise nodes.SkipNode def visit_desc_optional(self, node): + # type: (nodes.Node) -> None self.add_text('[') def depart_desc_optional(self, node): + # type: (nodes.Node) -> None self.add_text(']') def visit_desc_annotation(self, node): + # type: (nodes.Node) -> None pass def depart_desc_annotation(self, node): + # type: (nodes.Node) -> None pass def visit_desc_content(self, node): + # type: (nodes.Node) -> None self.new_state() self.add_text(self.nl) def depart_desc_content(self, node): + # type: (nodes.Node) -> None self.end_state() def visit_figure(self, node): + # type: (nodes.Node) -> None self.new_state() def depart_figure(self, node): + # type: (nodes.Node) -> None self.end_state() def visit_caption(self, node): + # type: (nodes.Node) -> None pass def depart_caption(self, node): + # type: (nodes.Node) -> None pass def visit_productionlist(self, node): + # type: (nodes.Node) -> None self.new_state() names = [] for production in node: @@ -406,13 +472,16 @@ class TextTranslator(nodes.NodeVisitor): raise nodes.SkipNode def visit_footnote(self, node): + # type: (nodes.Node) -> None self._footnote = node.children[0].astext().strip() self.new_state(len(self._footnote) + 3) def depart_footnote(self, node): + # type: (nodes.Node) -> None self.end_state(first='[%s] ' % self._footnote) def visit_citation(self, node): + # type: (nodes.Node) -> None if len(node) and isinstance(node[0], nodes.label): self._citlabel = node[0].astext() else: @@ -420,116 +489,150 @@ class TextTranslator(nodes.NodeVisitor): self.new_state(len(self._citlabel) + 3) def depart_citation(self, node): + # type: (nodes.Node) -> None self.end_state(first='[%s] ' % self._citlabel) def visit_label(self, node): + # type: (nodes.Node) -> None raise nodes.SkipNode def visit_legend(self, node): + # type: (nodes.Node) -> None pass def depart_legend(self, node): + # type: (nodes.Node) -> None pass # XXX: option list could use some better styling def visit_option_list(self, node): + # type: (nodes.Node) -> None pass def depart_option_list(self, node): + # type: (nodes.Node) -> None pass def visit_option_list_item(self, node): + # type: (nodes.Node) -> None self.new_state(0) def depart_option_list_item(self, node): + # type: (nodes.Node) -> None self.end_state() def visit_option_group(self, node): + # type: (nodes.Node) -> None self._firstoption = True def depart_option_group(self, node): + # type: (nodes.Node) -> None self.add_text(' ') def visit_option(self, node): + # type: (nodes.Node) -> None if self._firstoption: self._firstoption = False else: self.add_text(', ') def depart_option(self, node): + # type: (nodes.Node) -> None pass def visit_option_string(self, node): + # type: (nodes.Node) -> None pass def depart_option_string(self, node): + # type: (nodes.Node) -> None pass def visit_option_argument(self, node): + # type: (nodes.Node) -> None self.add_text(node['delimiter']) def depart_option_argument(self, node): + # type: (nodes.Node) -> None pass def visit_description(self, node): + # type: (nodes.Node) -> None pass def depart_description(self, node): + # type: (nodes.Node) -> None pass def visit_tabular_col_spec(self, node): + # type: (nodes.Node) -> None raise nodes.SkipNode def visit_colspec(self, node): - self.table[0].append(node['colwidth']) + # type: (nodes.Node) -> None + self.table[0].append(node['colwidth']) # type: ignore raise nodes.SkipNode def visit_tgroup(self, node): + # type: (nodes.Node) -> None pass def depart_tgroup(self, node): + # type: (nodes.Node) -> None pass def visit_thead(self, node): + # type: (nodes.Node) -> None pass def depart_thead(self, node): + # type: (nodes.Node) -> None pass def visit_tbody(self, node): + # type: (nodes.Node) -> None self.table.append('sep') def depart_tbody(self, node): + # type: (nodes.Node) -> None pass def visit_row(self, node): + # type: (nodes.Node) -> None self.table.append([]) def depart_row(self, node): + # type: (nodes.Node) -> None pass def visit_entry(self, node): + # type: (nodes.Node) -> None if 'morerows' in node or 'morecols' in node: raise NotImplementedError('Column or row spanning cells are ' 'not implemented.') self.new_state(0) def depart_entry(self, node): + # type: (nodes.Node) -> None text = self.nl.join(self.nl.join(x[1]) for x in self.states.pop()) self.stateindent.pop() - self.table[-1].append(text) + self.table[-1].append(text) # type: ignore def visit_table(self, node): + # type: (nodes.Node) -> None if self.table: raise NotImplementedError('Nested tables are not supported.') self.new_state(0) self.table = [[]] def depart_table(self, node): - lines = self.table[1:] - fmted_rows = [] - colwidths = self.table[0] + # type: (nodes.Node) -> None + lines = None # type: List[unicode] + lines = self.table[1:] # type: ignore + fmted_rows = [] # type: List[List[List[unicode]]] + colwidths = None # type: List[int] + colwidths = self.table[0] # type: ignore realwidths = colwidths[:] separator = 0 # don't allow paragraphs in table cells for now @@ -537,7 +640,7 @@ class TextTranslator(nodes.NodeVisitor): if line == 'sep': separator = len(fmted_rows) else: - cells = [] + cells = [] # type: List[List[unicode]] for i, cell in enumerate(line): par = my_wrap(cell, width=colwidths[i]) if par: @@ -549,13 +652,15 @@ class TextTranslator(nodes.NodeVisitor): fmted_rows.append(cells) def writesep(char='-'): - out = ['+'] + # type: (unicode) -> None + out = ['+'] # type: List[unicode] for width in realwidths: out.append(char * (width+2)) out.append('+') self.add_text(''.join(out) + self.nl) def writerow(row): + # type: (list[List[unicode]]) -> None lines = zip_longest(*row) for line in lines: out = ['|'] @@ -580,6 +685,7 @@ class TextTranslator(nodes.NodeVisitor): self.end_state(wrap=False) def visit_acks(self, node): + # type: (nodes.Node) -> None self.new_state(0) self.add_text(', '.join(n.astext() for n in node.children[0].children) + '.') @@ -587,12 +693,14 @@ class TextTranslator(nodes.NodeVisitor): raise nodes.SkipNode def visit_image(self, node): + # type: (nodes.Node) -> None if 'alt' in node.attributes: self.add_text(_('[image: %s]') % node['alt']) self.add_text(_('[image]')) raise nodes.SkipNode def visit_transition(self, node): + # type: (nodes.Node) -> None indent = sum(self.stateindent) self.new_state(0) self.add_text('=' * (MAXWIDTH - indent)) @@ -600,24 +708,31 @@ class TextTranslator(nodes.NodeVisitor): raise nodes.SkipNode def visit_bullet_list(self, node): + # type: (nodes.Node) -> None self.list_counter.append(-1) def depart_bullet_list(self, node): + # type: (nodes.Node) -> None self.list_counter.pop() def visit_enumerated_list(self, node): + # type: (nodes.Node) -> None self.list_counter.append(node.get('start', 1) - 1) def depart_enumerated_list(self, node): + # type: (nodes.Node) -> None self.list_counter.pop() def visit_definition_list(self, node): + # type: (nodes.Node) -> None self.list_counter.append(-2) def depart_definition_list(self, node): + # type: (nodes.Node) -> None self.list_counter.pop() def visit_list_item(self, node): + # type: (nodes.Node) -> None if self.list_counter[-1] == -1: # bullet list self.new_state(2) @@ -630,6 +745,7 @@ class TextTranslator(nodes.NodeVisitor): self.new_state(len(str(self.list_counter[-1])) + 2) def depart_list_item(self, node): + # type: (nodes.Node) -> None if self.list_counter[-1] == -1: self.end_state(first='* ') elif self.list_counter[-1] == -2: @@ -638,88 +754,114 @@ class TextTranslator(nodes.NodeVisitor): self.end_state(first='%s. ' % self.list_counter[-1]) def visit_definition_list_item(self, node): + # type: (nodes.Node) -> None self._classifier_count_in_li = len(node.traverse(nodes.classifier)) def depart_definition_list_item(self, node): + # type: (nodes.Node) -> None pass def visit_term(self, node): + # type: (nodes.Node) -> None self.new_state(0) def depart_term(self, node): + # type: (nodes.Node) -> None if not self._classifier_count_in_li: self.end_state(end=None) def visit_termsep(self, node): + # type: (nodes.Node) -> None warnings.warn('sphinx.addnodes.termsep will be removed at Sphinx-1.5', DeprecationWarning) self.add_text(', ') raise nodes.SkipNode def visit_classifier(self, node): + # type: (nodes.Node) -> None self.add_text(' : ') def depart_classifier(self, node): + # type: (nodes.Node) -> None self._classifier_count_in_li -= 1 if not self._classifier_count_in_li: self.end_state(end=None) def visit_definition(self, node): + # type: (nodes.Node) -> None self.new_state() def depart_definition(self, node): + # type: (nodes.Node) -> None self.end_state() def visit_field_list(self, node): + # type: (nodes.Node) -> None pass def depart_field_list(self, node): + # type: (nodes.Node) -> None pass def visit_field(self, node): + # type: (nodes.Node) -> None pass def depart_field(self, node): + # type: (nodes.Node) -> None pass def visit_field_name(self, node): + # type: (nodes.Node) -> None self.new_state(0) def depart_field_name(self, node): + # type: (nodes.Node) -> None self.add_text(':') self.end_state(end=None) def visit_field_body(self, node): + # type: (nodes.Node) -> None self.new_state() def depart_field_body(self, node): + # type: (nodes.Node) -> None self.end_state() def visit_centered(self, node): + # type: (nodes.Node) -> None pass def depart_centered(self, node): + # type: (nodes.Node) -> None pass def visit_hlist(self, node): + # type: (nodes.Node) -> None pass def depart_hlist(self, node): + # type: (nodes.Node) -> None pass def visit_hlistcol(self, node): + # type: (nodes.Node) -> None pass def depart_hlistcol(self, node): + # type: (nodes.Node) -> None pass def visit_admonition(self, node): + # type: (nodes.Node) -> None self.new_state(0) def depart_admonition(self, node): + # type: (nodes.Node) -> None self.end_state() def _visit_admonition(self, node): + # type: (nodes.Node) -> None self.new_state(2) if isinstance(node.children[0], nodes.Sequential): @@ -727,6 +869,7 @@ class TextTranslator(nodes.NodeVisitor): def _make_depart_admonition(name): def depart_admonition(self, node): + # type: (nodes.NodeVisitor, nodes.Node) -> None self.end_state(first=admonitionlabels[name] + ': ') return depart_admonition @@ -752,211 +895,274 @@ class TextTranslator(nodes.NodeVisitor): depart_seealso = _make_depart_admonition('seealso') def visit_versionmodified(self, node): + # type: (nodes.Node) -> None self.new_state(0) def depart_versionmodified(self, node): + # type: (nodes.Node) -> None self.end_state() def visit_literal_block(self, node): + # type: (nodes.Node) -> None self.new_state() def depart_literal_block(self, node): + # type: (nodes.Node) -> None self.end_state(wrap=False) def visit_doctest_block(self, node): + # type: (nodes.Node) -> None self.new_state(0) def depart_doctest_block(self, node): + # type: (nodes.Node) -> None self.end_state(wrap=False) def visit_line_block(self, node): + # type: (nodes.Node) -> None self.new_state() self.lineblocklevel += 1 def depart_line_block(self, node): + # type: (nodes.Node) -> None self.lineblocklevel -= 1 self.end_state(wrap=False, end=None) if not self.lineblocklevel: self.add_text('\n') def visit_line(self, node): + # type: (nodes.Node) -> None pass def depart_line(self, node): + # type: (nodes.Node) -> None self.add_text('\n') def visit_block_quote(self, node): + # type: (nodes.Node) -> None self.new_state() def depart_block_quote(self, node): + # type: (nodes.Node) -> None self.end_state() def visit_compact_paragraph(self, node): + # type: (nodes.Node) -> None pass def depart_compact_paragraph(self, node): + # type: (nodes.Node) -> None pass def visit_paragraph(self, node): + # type: (nodes.Node) -> None if not isinstance(node.parent, nodes.Admonition) or \ isinstance(node.parent, addnodes.seealso): self.new_state(0) def depart_paragraph(self, node): + # type: (nodes.Node) -> None if not isinstance(node.parent, nodes.Admonition) or \ isinstance(node.parent, addnodes.seealso): self.end_state() def visit_target(self, node): + # type: (nodes.Node) -> None raise nodes.SkipNode def visit_index(self, node): + # type: (nodes.Node) -> None raise nodes.SkipNode def visit_toctree(self, node): + # type: (nodes.Node) -> None raise nodes.SkipNode def visit_substitution_definition(self, node): + # type: (nodes.Node) -> None raise nodes.SkipNode def visit_pending_xref(self, node): + # type: (nodes.Node) -> None pass def depart_pending_xref(self, node): + # type: (nodes.Node) -> None pass def visit_reference(self, node): + # type: (nodes.Node) -> None pass def depart_reference(self, node): + # type: (nodes.Node) -> None pass def visit_number_reference(self, node): + # type: (nodes.Node) -> None text = nodes.Text(node.get('title', '#')) self.visit_Text(text) raise nodes.SkipNode def visit_download_reference(self, node): + # type: (nodes.Node) -> None pass def depart_download_reference(self, node): + # type: (nodes.Node) -> None pass def visit_emphasis(self, node): + # type: (nodes.Node) -> None self.add_text('*') def depart_emphasis(self, node): + # type: (nodes.Node) -> None self.add_text('*') def visit_literal_emphasis(self, node): + # type: (nodes.Node) -> None self.add_text('*') def depart_literal_emphasis(self, node): + # type: (nodes.Node) -> None self.add_text('*') def visit_strong(self, node): + # type: (nodes.Node) -> None self.add_text('**') def depart_strong(self, node): + # type: (nodes.Node) -> None self.add_text('**') def visit_literal_strong(self, node): + # type: (nodes.Node) -> None self.add_text('**') def depart_literal_strong(self, node): + # type: (nodes.Node) -> None self.add_text('**') def visit_abbreviation(self, node): + # type: (nodes.Node) -> None self.add_text('') def depart_abbreviation(self, node): + # type: (nodes.Node) -> None if node.hasattr('explanation'): self.add_text(' (%s)' % node['explanation']) def visit_manpage(self, node): + # type: (nodes.Node) -> Any return self.visit_literal_emphasis(node) def depart_manpage(self, node): + # type: (nodes.Node) -> Any return self.depart_literal_emphasis(node) def visit_title_reference(self, node): + # type: (nodes.Node) -> None self.add_text('*') def depart_title_reference(self, node): + # type: (nodes.Node) -> None self.add_text('*') def visit_literal(self, node): + # type: (nodes.Node) -> None self.add_text('"') def depart_literal(self, node): + # type: (nodes.Node) -> None self.add_text('"') def visit_subscript(self, node): + # type: (nodes.Node) -> None self.add_text('_') def depart_subscript(self, node): + # type: (nodes.Node) -> None pass def visit_superscript(self, node): + # type: (nodes.Node) -> None self.add_text('^') def depart_superscript(self, node): + # type: (nodes.Node) -> None pass def visit_footnote_reference(self, node): + # type: (nodes.Node) -> None self.add_text('[%s]' % node.astext()) raise nodes.SkipNode def visit_citation_reference(self, node): + # type: (nodes.Node) -> None self.add_text('[%s]' % node.astext()) raise nodes.SkipNode def visit_Text(self, node): + # type: (nodes.Node) -> None self.add_text(node.astext()) def depart_Text(self, node): + # type: (nodes.Node) -> None pass def visit_generated(self, node): + # type: (nodes.Node) -> None pass def depart_generated(self, node): + # type: (nodes.Node) -> None pass def visit_inline(self, node): + # type: (nodes.Node) -> None if 'xref' in node['classes'] or 'term' in node['classes']: self.add_text('*') def depart_inline(self, node): + # type: (nodes.Node) -> None if 'xref' in node['classes'] or 'term' in node['classes']: self.add_text('*') def visit_container(self, node): + # type: (nodes.Node) -> None pass def depart_container(self, node): + # type: (nodes.Node) -> None pass def visit_problematic(self, node): + # type: (nodes.Node) -> None self.add_text('>>') def depart_problematic(self, node): + # type: (nodes.Node) -> None self.add_text('<<') def visit_system_message(self, node): + # type: (nodes.Node) -> None self.new_state(0) self.add_text('<SYSTEM MESSAGE: %s>' % node.astext()) self.end_state() raise nodes.SkipNode def visit_comment(self, node): + # type: (nodes.Node) -> None raise nodes.SkipNode def visit_meta(self, node): + # type: (nodes.Node) -> None # only valid for HTML raise nodes.SkipNode def visit_raw(self, node): + # type: (nodes.Node) -> None if 'text' in node.get('format', '').split(): self.new_state(0) self.add_text(node.astext()) @@ -964,6 +1170,7 @@ class TextTranslator(nodes.NodeVisitor): raise nodes.SkipNode def visit_math(self, node): + # type: (nodes.Node) -> None self.builder.warn('using "math" markup without a Sphinx math extension ' 'active, please use one of the math extensions ' 'described at http://sphinx-doc.org/ext/math.html', @@ -973,4 +1180,5 @@ class TextTranslator(nodes.NodeVisitor): visit_math_block = visit_math def unknown_visit(self, node): + # type: (nodes.Node) -> None raise NotImplementedError('Unknown node: ' + node.__class__.__name__) diff --git a/sphinx/writers/xml.py b/sphinx/writers/xml.py index 5aa0ad96a..879f65dd3 100644 --- a/sphinx/writers/xml.py +++ b/sphinx/writers/xml.py @@ -12,16 +12,23 @@ from docutils import writers from docutils.writers.docutils_xml import Writer as BaseXMLWriter +if False: + # For type annotation + from typing import Any, Tuple # NOQA + from sphinx.builders import Builder # NOQA + class XMLWriter(BaseXMLWriter): def __init__(self, builder): + # type: (Builder) -> None BaseXMLWriter.__init__(self) self.builder = builder if self.builder.translator_class: self.translator_class = self.builder.translator_class def translate(self, *args, **kwargs): + # type: (Any, Any) -> None self.document.settings.newlines = \ self.document.settings.indents = \ self.builder.env.config.xml_pretty @@ -36,18 +43,21 @@ class PseudoXMLWriter(writers.Writer): """Formats this writer supports.""" config_section = 'pseudoxml writer' - config_section_dependencies = ('writers',) + config_section_dependencies = ('writers',) # type: Tuple[unicode] output = None """Final translated form of `document`.""" def __init__(self, builder): + # type: (Builder) -> None writers.Writer.__init__(self) self.builder = builder def translate(self): + # type: () -> None self.output = self.document.pformat() def supports(self, format): + # type: (unicode) -> bool """This writer supports all format-specific elements.""" return True From ceec82451bfbefc0fd720bbf48e4b9a029cacd99 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Tue, 8 Nov 2016 14:05:58 +0900 Subject: [PATCH 229/297] Add type-check annotations to sphinx.* --- sphinx/__init__.py | 2 +- sphinx/apidoc.py | 24 ++++- sphinx/cmdline.py | 25 +++-- sphinx/config.py | 44 ++++++--- sphinx/directives/__init__.py | 26 ++++- sphinx/directives/code.py | 22 ++++- sphinx/directives/other.py | 38 ++++++-- sphinx/highlighting.py | 3 +- sphinx/io.py | 30 +++++- sphinx/jinja2glue.py | 23 ++++- sphinx/locale/__init__.py | 21 ++-- sphinx/make_mode.py | 36 ++++++- sphinx/pycode/__init__.py | 38 ++++---- sphinx/pycode/nodes.py | 6 +- sphinx/pycode/pgen2/grammar.py | 18 ++-- sphinx/pycode/pgen2/parse.py | 15 ++- sphinx/pycode/pgen2/pgen.py | 27 ++++-- sphinx/pycode/pgen2/tokenize.py | 16 ++-- sphinx/quickstart.py | 5 +- sphinx/roles.py | 4 +- sphinx/search/__init__.py | 95 +++++++++++++------ sphinx/search/en.py | 5 + sphinx/search/ja.py | 21 +++- sphinx/search/ro.py | 4 +- sphinx/search/tr.py | 4 +- sphinx/search/zh.py | 11 ++- sphinx/setup_command.py | 35 ++++--- sphinx/theming.py | 26 +++-- sphinx/transforms/__init__.py | 13 +++ sphinx/transforms/compact_bullet_list.py | 6 ++ sphinx/transforms/i18n.py | 19 +++- sphinx/versioning.py | 13 ++- sphinx/websupport/__init__.py | 6 +- sphinx/websupport/storage/sqlalchemy_db.py | 10 +- .../websupport/storage/sqlalchemystorage.py | 4 +- 35 files changed, 510 insertions(+), 185 deletions(-) diff --git a/sphinx/__init__.py b/sphinx/__init__.py index 368f9d8fe..2f126b6f6 100644 --- a/sphinx/__init__.py +++ b/sphinx/__init__.py @@ -39,7 +39,7 @@ if __version__.endswith('+'): stdout=subprocess.PIPE, stderr=subprocess.PIPE) out, err = p.communicate() if out: - __display_version__ += '/' + out.decode().strip() + __display_version__ += '/' + out.decode().strip() # type: ignore except Exception: pass diff --git a/sphinx/apidoc.py b/sphinx/apidoc.py index d4793ff4d..e48a527a5 100644 --- a/sphinx/apidoc.py +++ b/sphinx/apidoc.py @@ -26,6 +26,10 @@ from fnmatch import fnmatch from sphinx.util.osutil import FileAvoidWrite, walk from sphinx import __display_version__ +if False: + # For type annotation + from typing import Any, Tuple # NOQA + # automodule options if 'SPHINX_APIDOC_OPTIONS' in os.environ: OPTIONS = os.environ['SPHINX_APIDOC_OPTIONS'].split(',') @@ -42,6 +46,7 @@ PY_SUFFIXES = set(['.py', '.pyx']) def makename(package, module): + # type: (unicode, unicode) -> unicode """Join package and module with a dot.""" # Both package and module can be None/empty. if package: @@ -54,6 +59,7 @@ def makename(package, module): def write_file(name, text, opts): + # type: (unicode, unicode, Any) -> None """Write the output file for module/package <name>.""" fname = path.join(opts.destdir, '%s.%s' % (name, opts.suffix)) if opts.dryrun: @@ -68,12 +74,14 @@ def write_file(name, text, opts): def format_heading(level, text): + # type: (int, unicode) -> unicode """Create a heading of <level> [1, 2 or 3 supported].""" underlining = ['=', '-', '~', ][level - 1] * len(text) return '%s\n%s\n\n' % (text, underlining) def format_directive(module, package=None): + # type: (unicode, unicode) -> unicode """Create the automodule directive and add the options.""" directive = '.. automodule:: %s\n' % makename(package, module) for option in OPTIONS: @@ -82,6 +90,7 @@ def format_directive(module, package=None): def create_module_file(package, module, opts): + # type: (unicode, unicode, Any) -> None """Build the text of the file and write the file.""" if not opts.noheadings: text = format_heading(1, '%s module' % module) @@ -93,6 +102,7 @@ def create_module_file(package, module, opts): def create_package_file(root, master_package, subroot, py_files, opts, subs, is_namespace): + # type: (unicode, unicode, unicode, List[unicode], Any, List[unicode], bool) -> None """Build the text of the file and write the file.""" text = format_heading(1, ('%s package' if not is_namespace else "%s namespace") % makename(master_package, subroot)) @@ -148,13 +158,14 @@ def create_package_file(root, master_package, subroot, py_files, opts, subs, is_ def create_modules_toc_file(modules, opts, name='modules'): + # type: (List[unicode], Any, unicode) -> None """Create the module's index.""" text = format_heading(1, '%s' % opts.header) text += '.. toctree::\n' text += ' :maxdepth: %s\n\n' % opts.maxdepth modules.sort() - prev_module = '' + prev_module = '' # type: unicode for module in modules: # look if the module is a subpackage and, if yes, ignore it if module.startswith(prev_module + '.'): @@ -166,6 +177,7 @@ def create_modules_toc_file(modules, opts, name='modules'): def shall_skip(module, opts): + # type: (unicode, Any) -> bool """Check if we want to skip this module.""" # skip if the file doesn't exist and not using implicit namespaces if not opts.implicit_namespaces and not path.exists(module): @@ -184,6 +196,7 @@ def shall_skip(module, opts): def recurse_tree(rootpath, excludes, opts): + # type: (unicode, List[unicode], Any) -> List[unicode] """ Look for every file in the directory tree and create the corresponding ReST files. @@ -217,7 +230,7 @@ def recurse_tree(rootpath, excludes, opts): # remove hidden ('.') and private ('_') directories, as well as # excluded dirs if includeprivate: - exclude_prefixes = ('.',) + exclude_prefixes = ('.',) # type: Tuple[unicode, ...] else: exclude_prefixes = ('.', '_') subs[:] = sorted(sub for sub in subs if not sub.startswith(exclude_prefixes) and @@ -247,23 +260,26 @@ def recurse_tree(rootpath, excludes, opts): def normalize_excludes(rootpath, excludes): + # type: (unicode, List[unicode]) -> List[unicode] """Normalize the excluded directory list.""" return [path.abspath(exclude) for exclude in excludes] def is_excluded(root, excludes): + # type: (unicode, List[unicode]) -> bool """Check if the directory is in the exclude list. Note: by having trailing slashes, we avoid common prefix issues, like e.g. an exlude "foo" also accidentally excluding "foobar". """ for exclude in excludes: - if fnmatch(root, exclude): + if fnmatch(root, exclude): # type: ignore return True return False def main(argv=sys.argv): + # type: (List[str]) -> int """Parse and check the command line arguments.""" parser = optparse.OptionParser( usage="""\ @@ -359,7 +375,7 @@ Note: By default this script will not overwrite already created files.""") if opts.full: from sphinx import quickstart as qs modules.sort() - prev_module = '' + prev_module = '' # type: unicode text = '' for module in modules: if module.startswith(prev_module + '.'): diff --git a/sphinx/cmdline.py b/sphinx/cmdline.py index 0d85767e4..7a97e10e2 100644 --- a/sphinx/cmdline.py +++ b/sphinx/cmdline.py @@ -16,17 +16,22 @@ import traceback from os import path from six import text_type, binary_type + from docutils.utils import SystemMessage from sphinx import __display_version__ from sphinx.errors import SphinxError from sphinx.application import Sphinx from sphinx.util import Tee, format_exception_cut_frames, save_traceback -from sphinx.util.console import red, nocolor, color_terminal +from sphinx.util.console import red, nocolor, color_terminal # type: ignore from sphinx.util.docutils import docutils_namespace from sphinx.util.osutil import abspath, fs_encoding from sphinx.util.pycompat import terminal_safe +if False: + # For type annotation + from typing import Any, IO, Union # NOQA + USAGE = """\ Sphinx v%s @@ -45,18 +50,21 @@ For more information, visit <http://sphinx-doc.org/>. class MyFormatter(optparse.IndentedHelpFormatter): def format_usage(self, usage): + # type: (Any) -> Any return usage def format_help(self, formatter): - result = [] - if self.description: + # type: (Any) -> unicode + result = [] # type: List[unicode] + if self.description: # type: ignore result.append(self.format_description(formatter)) - if self.option_list: - result.append(self.format_option_help(formatter)) + if self.option_list: # type: ignore + result.append(self.format_option_help(formatter)) # type: ignore return "\n".join(result) def handle_exception(app, opts, exception, stderr=sys.stderr): + # type: (Sphinx, Any, Union[Exception, KeyboardInterrupt], IO) -> None if opts.pdb: import pdb print(red('Exception occurred while building, starting debugger:'), @@ -107,6 +115,7 @@ def handle_exception(app, opts, exception, stderr=sys.stderr): def main(argv): + # type: (List[unicode]) -> int if not color_terminal(): nocolor() @@ -210,11 +219,11 @@ def main(argv): # handle remaining filename arguments filenames = args[2:] - err = 0 + err = 0 # type: ignore for filename in filenames: if not path.isfile(filename): print('Error: Cannot find file %r.' % filename, file=sys.stderr) - err = 1 + err = 1 # type: ignore if err: return 1 @@ -249,7 +258,7 @@ def main(argv): print('Error: Cannot open warning file %r: %s' % (opts.warnfile, exc), file=sys.stderr) sys.exit(1) - warning = Tee(warning, warnfp) + warning = Tee(warning, warnfp) # type: ignore error = warning confoverrides = {} diff --git a/sphinx/config.py b/sphinx/config.py index 5741d66bf..9bfdd2976 100644 --- a/sphinx/config.py +++ b/sphinx/config.py @@ -16,9 +16,14 @@ from six import PY2, PY3, iteritems, string_types, binary_type, text_type, integ from sphinx.errors import ConfigError from sphinx.locale import l_ +from sphinx.util.i18n import format_date from sphinx.util.osutil import cd from sphinx.util.pycompat import execfile_, NoneType -from sphinx.util.i18n import format_date + +if False: + # For type annotation + from typing import Any, Callable, Tuple # NOQA + from sphinx.util.tags import Tags # NOQA nonascii_re = re.compile(br'[\x80-\xff]') copyright_year_re = re.compile(r'^((\d{4}-)?)(\d{4})(?=[ ,])') @@ -43,13 +48,15 @@ class ENUM(object): app.add_config_value('latex_show_urls', 'no', ENUM('no', 'footnote', 'inline')) """ def __init__(self, *candidates): + # type: (unicode) -> None self.candidates = candidates def match(self, value): + # type: (unicode) -> bool return value in self.candidates -string_classes = [text_type] +string_classes = [text_type] # type: List if PY2: string_classes.append(binary_type) # => [str, unicode] @@ -114,12 +121,13 @@ class Config(object): # pre-initialized confval for HTML builder html_translator_class = (None, 'html', string_classes), - ) + ) # type: Dict[unicode, Tuple] def __init__(self, dirname, filename, overrides, tags): + # type: (unicode, unicode, Dict, Tags) -> None self.overrides = overrides self.values = Config.config_values.copy() - config = {} + config = {} # type: Dict[unicode, Any] if dirname is not None: config_file = path.join(dirname, filename) config['__file__'] = config_file @@ -137,14 +145,14 @@ class Config(object): self._raw_config = config # these two must be preinitialized because extensions can add their # own config values - self.setup = config.get('setup', None) + self.setup = config.get('setup', None) # type: Callable if 'extensions' in overrides: if isinstance(overrides['extensions'], string_types): config['extensions'] = overrides.pop('extensions').split(',') else: config['extensions'] = overrides.pop('extensions') - self.extensions = config.get('extensions', []) + self.extensions = config.get('extensions', []) # type: List[unicode] # correct values of copyright year that are not coherent with # the SOURCE_DATE_EPOCH environment variable (if set) @@ -152,10 +160,11 @@ class Config(object): if getenv('SOURCE_DATE_EPOCH') is not None: for k in ('copyright', 'epub_copyright'): if k in config: - config[k] = copyright_year_re.sub('\g<1>%s' % format_date('%Y'), + config[k] = copyright_year_re.sub('\g<1>%s' % format_date('%Y'), # type: ignore # NOQA config[k]) def check_types(self, warn): + # type: (Callable) -> None # check all values for deviation from the default value's type, since # that can result in TypeErrors all over the place # NB. since config values might use l_() we have to wait with calling @@ -197,15 +206,17 @@ class Config(object): name=name, current=type(current), default=type(default))) def check_unicode(self, warn): + # type: (Callable) -> None # check all string values for non-ASCII characters in bytestrings, # since that can result in UnicodeErrors all over the place for name, value in iteritems(self._raw_config): - if isinstance(value, binary_type) and nonascii_re.search(value): + if isinstance(value, binary_type) and nonascii_re.search(value): # type: ignore warn('the config value %r is set to a string with non-ASCII ' 'characters; this can lead to Unicode errors occurring. ' 'Please use Unicode strings, e.g. %r.' % (name, u'Content')) def convert_overrides(self, name, value): + # type: (unicode, Any) -> Any if not isinstance(value, string_types): return value else: @@ -215,10 +226,10 @@ class Config(object): 'ignoring (use %r to set individual elements)' % (name, name + '.key=value')) elif isinstance(defvalue, list): - return value.split(',') + return value.split(',') # type: ignore elif isinstance(defvalue, integer_types): try: - return int(value) + return int(value) # type: ignore except ValueError: raise ValueError('invalid number %r for config value %r, ignoring' % (value, name)) @@ -231,6 +242,7 @@ class Config(object): return value def pre_init_values(self, warn): + # type: (Callable) -> None """Initialize some limited config variables before loading extensions""" variables = ['needs_sphinx', 'suppress_warnings', 'html_translator_class'] for name in variables: @@ -243,12 +255,13 @@ class Config(object): warn(exc) def init_values(self, warn): + # type: (Callable) -> None config = self._raw_config for valname, value in iteritems(self.overrides): try: if '.' in valname: realvalname, key = valname.split('.', 1) - config.setdefault(realvalname, {})[key] = value + config.setdefault(realvalname, {})[key] = value # type: ignore continue elif valname not in self.values: warn('unknown config value %r in override, ignoring' % valname) @@ -262,10 +275,11 @@ class Config(object): for name in config: if name in self.values: self.__dict__[name] = config[name] - if isinstance(self.source_suffix, string_types): - self.source_suffix = [self.source_suffix] + if isinstance(self.source_suffix, string_types): # type: ignore + self.source_suffix = [self.source_suffix] # type: ignore def __getattr__(self, name): + # type: (unicode) -> Any if name.startswith('_'): raise AttributeError(name) if name not in self.values: @@ -276,13 +290,17 @@ class Config(object): return default def __getitem__(self, name): + # type: (unicode) -> unicode return getattr(self, name) def __setitem__(self, name, value): + # type: (unicode, Any) -> None setattr(self, name, value) def __delitem__(self, name): + # type: (unicode) -> None delattr(self, name) def __contains__(self, name): + # type: (unicode) -> bool return name in self.values diff --git a/sphinx/directives/__init__.py b/sphinx/directives/__init__.py index 76b54f9d6..ea09daff5 100644 --- a/sphinx/directives/__init__.py +++ b/sphinx/directives/__init__.py @@ -29,6 +29,12 @@ from sphinx.directives.patches import ( # noqa Figure, Meta ) +if False: + # For type annotation + from typing import Any # NOQA + from sphinx.application import Sphinx # NOQA + from sphinx.environment import BuildEnvironment # NOQA + # RE to strip backslash escapes nl_escape_re = re.compile(r'\\\n') @@ -51,9 +57,13 @@ class ObjectDescription(Directive): } # types of doc fields that this directive handles, see sphinx.util.docfields - doc_field_types = [] + doc_field_types = [] # type: List[Any] + domain = None # type: unicode + objtype = None # type: unicode + indexnode = None # type: addnodes.index def get_signatures(self): + # type: () -> List[unicode] """ Retrieve the signatures to document from the directive arguments. By default, signatures are given as arguments, one per line. @@ -65,6 +75,7 @@ class ObjectDescription(Directive): return [strip_backslash_re.sub(r'\1', line.strip()) for line in lines] def handle_signature(self, sig, signode): + # type: (unicode, addnodes.desc_signature) -> Any """ Parse the signature *sig* into individual nodes and append them to *signode*. If ValueError is raised, parsing is aborted and the whole @@ -77,6 +88,7 @@ class ObjectDescription(Directive): raise ValueError def add_target_and_index(self, name, sig, signode): + # type: (Any, unicode, addnodes.desc_signature) -> None """ Add cross-reference IDs and entries to self.indexnode, if applicable. @@ -85,6 +97,7 @@ class ObjectDescription(Directive): return # do nothing by default def before_content(self): + # type: () -> None """ Called before parsing content. Used to set information about the current directive context on the build environment. @@ -92,6 +105,7 @@ class ObjectDescription(Directive): pass def after_content(self): + # type: () -> None """ Called after parsing content. Used to reset information about the current directive context on the build environment. @@ -99,6 +113,7 @@ class ObjectDescription(Directive): pass def run(self): + # type: () -> List[nodes.Node] """ Main directive entry function, called by docutils upon encountering the directive. @@ -120,7 +135,7 @@ class ObjectDescription(Directive): self.domain, self.objtype = self.name.split(':', 1) else: self.domain, self.objtype = '', self.name - self.env = self.state.document.settings.env + self.env = self.state.document.settings.env # type: BuildEnvironment self.indexnode = addnodes.index(entries=[]) node = addnodes.desc() @@ -130,7 +145,7 @@ class ObjectDescription(Directive): node['objtype'] = node['desctype'] = self.objtype node['noindex'] = noindex = ('noindex' in self.options) - self.names = [] + self.names = [] # type: List[unicode] signatures = self.get_signatures() for i, sig in enumerate(signatures): # add a signature node for each signature in the current unit @@ -181,6 +196,7 @@ class DefaultRole(Directive): final_argument_whitespace = False def run(self): + # type: () -> List[nodes.Node] if not self.arguments: if '' in roles._roles: # restore the "default" default role @@ -209,9 +225,10 @@ class DefaultDomain(Directive): required_arguments = 1 optional_arguments = 0 final_argument_whitespace = False - option_spec = {} + option_spec = {} # type: Dict def run(self): + # type: () -> List[nodes.Node] env = self.state.document.settings.env domain_name = self.arguments[0].lower() # if domain_name not in env.domains: @@ -225,6 +242,7 @@ class DefaultDomain(Directive): def setup(app): + # type: (Sphinx) -> None directives.register_directive('default-role', DefaultRole) directives.register_directive('default-domain', DefaultDomain) directives.register_directive('describe', ObjectDescription) diff --git a/sphinx/directives/code.py b/sphinx/directives/code.py index 5bef8c386..e401a50de 100644 --- a/sphinx/directives/code.py +++ b/sphinx/directives/code.py @@ -11,17 +11,22 @@ import sys import codecs from difflib import unified_diff +from six import string_types + from docutils import nodes from docutils.parsers.rst import Directive, directives from docutils.statemachine import ViewList -from six import string_types - from sphinx import addnodes from sphinx.locale import _ from sphinx.util import parselinenos from sphinx.util.nodes import set_source_info +if False: + # For type annotation + from typing import Any # NOQA + from sphinx.application import Sphinx # NOQA + class Highlight(Directive): """ @@ -38,6 +43,7 @@ class Highlight(Directive): } def run(self): + # type: () -> List[nodes.Node] if 'linenothreshold' in self.options: try: linenothreshold = int(self.options['linenothreshold']) @@ -50,6 +56,7 @@ class Highlight(Directive): def dedent_lines(lines, dedent): + # type: (List[unicode], int) -> List[unicode] if not dedent: return lines @@ -64,6 +71,7 @@ def dedent_lines(lines, dedent): def container_wrapper(directive, literal_node, caption): + # type: (Directive, nodes.Node, unicode) -> nodes.container container_node = nodes.container('', literal_block=True, classes=['literal-block-wrapper']) parsed = nodes.Element() @@ -101,6 +109,7 @@ class CodeBlock(Directive): } def run(self): + # type: () -> List[nodes.Node] code = u'\n'.join(self.content) linespec = self.options.get('emphasize-lines') @@ -137,7 +146,7 @@ class CodeBlock(Directive): literal = container_wrapper(self, literal, caption) except ValueError as exc: document = self.state.document - errmsg = _('Invalid caption: %s' % exc[0][0].astext()) + errmsg = _('Invalid caption: %s' % exc[0][0].astext()) # type: ignore return [document.reporter.warning(errmsg, line=self.lineno)] # literal will be note_implicit_target that is linked from caption and numref. @@ -182,11 +191,12 @@ class LiteralInclude(Directive): } def read_with_encoding(self, filename, document, codec_info, encoding): + # type: (unicode, nodes.Node, Any, unicode) -> List try: with codecs.StreamReaderWriter(open(filename, 'rb'), codec_info[2], codec_info[3], 'strict') as f: lines = f.readlines() - lines = dedent_lines(lines, self.options.get('dedent')) + lines = dedent_lines(lines, self.options.get('dedent')) # type: ignore return lines except (IOError, OSError): return [document.reporter.warning( @@ -199,6 +209,7 @@ class LiteralInclude(Directive): (encoding, filename))] def run(self): + # type: () -> List[nodes.Node] document = self.state.document if not document.settings.file_insertion_enabled: return [document.reporter.warning('File insertion disabled', @@ -367,7 +378,7 @@ class LiteralInclude(Directive): retnode = container_wrapper(self, retnode, caption) except ValueError as exc: document = self.state.document - errmsg = _('Invalid caption: %s' % exc[0][0].astext()) + errmsg = _('Invalid caption: %s' % exc[0][0].astext()) # type: ignore return [document.reporter.warning(errmsg, line=self.lineno)] # retnode will be note_implicit_target that is linked from caption and numref. @@ -378,6 +389,7 @@ class LiteralInclude(Directive): def setup(app): + # type: (Sphinx) -> None directives.register_directive('highlight', Highlight) directives.register_directive('highlightlang', Highlight) # old directives.register_directive('code-block', CodeBlock) diff --git a/sphinx/directives/other.py b/sphinx/directives/other.py index e071b327e..15944668e 100644 --- a/sphinx/directives/other.py +++ b/sphinx/directives/other.py @@ -8,6 +8,7 @@ """ from six.moves import range + from docutils import nodes from docutils.parsers.rst import Directive, directives from docutils.parsers.rst.directives.admonitions import BaseAdmonition @@ -21,8 +22,14 @@ from sphinx.util.nodes import explicit_title_re, set_source_info, \ process_index_entry from sphinx.util.matching import patfilter +if False: + # For type annotation + from typing import Tuple # NOQA + from sphinx.application import Sphinx # NOQA + def int_or_nothing(argument): + # type: (unicode) -> int if not argument: return 999 return int(argument) @@ -50,6 +57,7 @@ class TocTree(Directive): } def run(self): + # type: () -> List[nodes.Node] env = self.state.document.settings.env suffixes = env.config.source_suffix glob = 'glob' in self.options @@ -57,7 +65,7 @@ class TocTree(Directive): ret = [] # (title, ref) pairs, where ref may be a document, or an external link, # and title may be None if the document's title is to be used - entries = [] + entries = [] # type: List[Tuple[unicode, unicode]] includefiles = [] all_docnames = env.found_docs.copy() # don't add the currently visited file in catch-all patterns @@ -136,9 +144,10 @@ class Author(Directive): required_arguments = 1 optional_arguments = 0 final_argument_whitespace = True - option_spec = {} + option_spec = {} # type: Dict def run(self): + # type: () -> List[nodes.Node] env = self.state.document.settings.env if not env.config.show_authors: return [] @@ -168,20 +177,21 @@ class Index(Directive): required_arguments = 1 optional_arguments = 0 final_argument_whitespace = True - option_spec = {} + option_spec = {} # type: Dict def run(self): + # type: () -> List[nodes.Node] arguments = self.arguments[0].split('\n') env = self.state.document.settings.env targetid = 'index-%s' % env.new_serialno('index') targetnode = nodes.target('', '', ids=[targetid]) self.state.document.note_explicit_target(targetnode) indexnode = addnodes.index() - indexnode['entries'] = ne = [] + indexnode['entries'] = [] indexnode['inline'] = False set_source_info(self, indexnode) for entry in arguments: - ne.extend(process_index_entry(entry, targetid)) + indexnode['entries'].extend(process_index_entry(entry, targetid)) return [indexnode, targetnode] @@ -193,9 +203,10 @@ class VersionChange(Directive): required_arguments = 1 optional_arguments = 1 final_argument_whitespace = True - option_spec = {} + option_spec = {} # type: Dict def run(self): + # type: () -> List[nodes.Node] node = addnodes.versionmodified() node.document = self.state.document set_source_info(self, node) @@ -248,9 +259,10 @@ class TabularColumns(Directive): required_arguments = 1 optional_arguments = 0 final_argument_whitespace = True - option_spec = {} + option_spec = {} # type: Dict def run(self): + # type: () -> List[nodes.Node] node = addnodes.tabular_col_spec() node['spec'] = self.arguments[0] set_source_info(self, node) @@ -265,9 +277,10 @@ class Centered(Directive): required_arguments = 1 optional_arguments = 0 final_argument_whitespace = True - option_spec = {} + option_spec = {} # type: Dict def run(self): + # type: () -> List[nodes.Node] if not self.arguments: return [] subnode = addnodes.centered() @@ -285,9 +298,10 @@ class Acks(Directive): required_arguments = 0 optional_arguments = 0 final_argument_whitespace = False - option_spec = {} + option_spec = {} # type: Dict def run(self): + # type: () -> List[nodes.Node] node = addnodes.acks() node.document = self.state.document self.state.nested_parse(self.content, self.content_offset, node) @@ -311,6 +325,7 @@ class HList(Directive): } def run(self): + # type: () -> List[nodes.Node] ncolumns = self.options.get('columns', 2) node = nodes.paragraph() node.document = self.state.document @@ -342,9 +357,10 @@ class Only(Directive): required_arguments = 1 optional_arguments = 0 final_argument_whitespace = True - option_spec = {} + option_spec = {} # type: Dict def run(self): + # type: () -> List[nodes.Node] node = addnodes.only() node.document = self.state.document set_source_info(self, node) @@ -398,6 +414,7 @@ class Include(BaseInclude): """ def run(self): + # type: () -> List[nodes.Node] env = self.state.document.settings.env if self.arguments[0].startswith('<') and \ self.arguments[0].endswith('>'): @@ -410,6 +427,7 @@ class Include(BaseInclude): def setup(app): + # type: (Sphinx) -> None directives.register_directive('toctree', TocTree) directives.register_directive('sectionauthor', Author) directives.register_directive('moduleauthor', Author) diff --git a/sphinx/highlighting.py b/sphinx/highlighting.py index 9594b5336..543e1485a 100644 --- a/sphinx/highlighting.py +++ b/sphinx/highlighting.py @@ -16,6 +16,7 @@ from sphinx.util.texescape import tex_hl_escape_map_new from sphinx.ext import doctest from pygments import highlight +from pygments.lexer import Lexer # NOQA from pygments.lexers import PythonLexer, Python3Lexer, PythonConsoleLexer, \ CLexer, TextLexer, RstLexer from pygments.lexers import get_lexer_by_name, guess_lexer @@ -33,7 +34,7 @@ lexers = dict( pycon3 = PythonConsoleLexer(python3=True, stripnl=False), rest = RstLexer(stripnl=False), c = CLexer(stripnl=False), -) +) # type: Dict[unicode, Lexer] for _lexer in lexers.values(): _lexer.add_filter('raiseonerror') diff --git a/sphinx/io.py b/sphinx/io.py index f1386c9a8..c6fea570e 100644 --- a/sphinx/io.py +++ b/sphinx/io.py @@ -12,6 +12,7 @@ from docutils.io import FileInput from docutils.readers import standalone from docutils.writers import UnfilteredWriter from six import string_types, text_type +from typing import Any, Union # NOQA from sphinx.transforms import ( ApplySourceWorkaround, ExtraTranslatableNodes, CitationReferences, @@ -24,23 +25,36 @@ from sphinx.transforms.i18n import ( ) from sphinx.util import import_object, split_docinfo +if False: + # For type annotation + from typing import Any, Union # NOQA + from docutils import nodes # NOQA + from docutils.io import Input # NOQA + from docutils.parsers import Parser # NOQA + from docutils.transforms import Transform # NOQA + from sphinx.application import Sphinx # NOQA + from sphinx.builders import Builder # NOQA + from sphinx.environment import BuildEnvironment # NOQA + class SphinxBaseReader(standalone.Reader): """ Add our source parsers """ def __init__(self, app, parsers={}, *args, **kwargs): + # type: (Sphinx, Dict[unicode, Parser], Any, Any) -> None standalone.Reader.__init__(self, *args, **kwargs) - self.parser_map = {} + self.parser_map = {} # type: Dict[unicode, Parser] for suffix, parser_class in parsers.items(): if isinstance(parser_class, string_types): - parser_class = import_object(parser_class, 'source parser') + parser_class = import_object(parser_class, 'source parser') # type: ignore parser = parser_class() if hasattr(parser, 'set_application'): parser.set_application(app) self.parser_map[suffix] = parser def read(self, source, parser, settings): + # type: (Input, Parser, Dict) -> nodes.document self.source = source for suffix in self.parser_map: @@ -56,6 +70,7 @@ class SphinxBaseReader(standalone.Reader): return self.document def get_transforms(self): + # type: () -> List[Transform] return standalone.Reader.get_transforms(self) + self.transforms @@ -84,13 +99,16 @@ class SphinxI18nReader(SphinxBaseReader): FilterSystemMessages, RefOnlyBulletListTransform] def __init__(self, *args, **kwargs): + # type: (Any, Any) -> None SphinxBaseReader.__init__(self, *args, **kwargs) - self.lineno = None + self.lineno = None # type: int def set_lineno_for_reporter(self, lineno): + # type: (int) -> None self.lineno = lineno def new_document(self): + # type: () -> nodes.document document = SphinxBaseReader.new_document(self) reporter = document.reporter @@ -105,28 +123,32 @@ class SphinxDummyWriter(UnfilteredWriter): supported = ('html',) # needed to keep "meta" nodes def translate(self): + # type: () -> None pass class SphinxFileInput(FileInput): def __init__(self, app, env, *args, **kwds): + # type: (Sphinx, BuildEnvironment, Any, Any) -> None self.app = app self.env = env kwds['error_handler'] = 'sphinx' # py3: handle error on open. FileInput.__init__(self, *args, **kwds) def decode(self, data): + # type: (Union[unicode, bytes]) -> unicode if isinstance(data, text_type): # py3: `data` already decoded. return data return data.decode(self.encoding, 'sphinx') # py2: decoding def read(self): + # type: () -> unicode def get_parser_type(source_path): for suffix in self.env.config.source_parsers: if source_path.endswith(suffix): parser_class = self.env.config.source_parsers[suffix] if isinstance(parser_class, string_types): - parser_class = import_object(parser_class, 'source parser') + parser_class = import_object(parser_class, 'source parser') # type: ignore # NOQA return parser_class.supported else: return ('restructuredtext',) diff --git a/sphinx/jinja2glue.py b/sphinx/jinja2glue.py index 6e2ef7186..c1bd04765 100644 --- a/sphinx/jinja2glue.py +++ b/sphinx/jinja2glue.py @@ -17,18 +17,28 @@ from jinja2 import FileSystemLoader, BaseLoader, TemplateNotFound, \ contextfunction from jinja2.utils import open_if_exists from jinja2.sandbox import SandboxedEnvironment +from typing import Any, Callable, Iterator, Tuple # NOQA from sphinx.application import TemplateBridge from sphinx.util.osutil import mtimes_of_files +if False: + # For type annotation + from typing import Any, Callable, Iterator, Tuple # NOQA + from sphinx.builders import Builder # NOQA + from sphinx.environment import BuildEnvironment # NOQA + from sphinx.themes import Theme # NOQA + def _tobool(val): + # type: (unicode) -> bool if isinstance(val, string_types): - return val.lower() in ('true', '1', 'yes', 'on') + return val.lower() in ('true', '1', 'yes', 'on') # type: ignore return bool(val) def _toint(val): + # type: (unicode) -> int try: return int(val) except ValueError: @@ -36,6 +46,7 @@ def _toint(val): def _slice_index(values, slices): + # type: (List, int) -> Iterator[List] seq = list(values) length = 0 for value in values: @@ -57,6 +68,7 @@ def _slice_index(values, slices): def accesskey(context, key): + # type: (Any, unicode) -> unicode """Helper to output each access key only once.""" if '_accesskeys' not in context: context.vars['_accesskeys'] = {} @@ -68,12 +80,15 @@ def accesskey(context, key): class idgen(object): def __init__(self): + # type: () -> None self.id = 0 def current(self): + # type: () -> int return self.id def __next__(self): + # type: () -> int self.id += 1 return self.id next = __next__ # Python 2/Jinja compatibility @@ -86,6 +101,7 @@ class SphinxFileSystemLoader(FileSystemLoader): """ def get_source(self, environment, template): + # type: (BuildEnvironment, unicode) -> Tuple[unicode, unicode, Callable] for searchpath in self.searchpath: filename = path.join(searchpath, template) f = open_if_exists(filename) @@ -113,6 +129,7 @@ class BuiltinTemplateLoader(TemplateBridge, BaseLoader): # TemplateBridge interface def init(self, builder, theme=None, dirs=None): + # type: (Builder, Theme, List[unicode]) -> None # create a chain of paths to search if theme: # the theme's own dir and its bases' dirs @@ -155,17 +172,21 @@ class BuiltinTemplateLoader(TemplateBridge, BaseLoader): builder.app.translator) def render(self, template, context): + # type: (unicode, Dict) -> None return self.environment.get_template(template).render(context) def render_string(self, source, context): + # type: (unicode, Dict) -> unicode return self.environment.from_string(source).render(context) def newest_template_mtime(self): + # type: () -> float return max(mtimes_of_files(self.pathchain, '.html')) # Loader interface def get_source(self, environment, template): + # type: (BuildEnvironment, unicode) -> Tuple[unicode, unicode, Callable] loaders = self.loaders # exclamation mark starts search from theme if template.startswith('!'): diff --git a/sphinx/locale/__init__.py b/sphinx/locale/__init__.py index d6ce7329b..44ad64304 100644 --- a/sphinx/locale/__init__.py +++ b/sphinx/locale/__init__.py @@ -14,6 +14,10 @@ import gettext from six import PY3, text_type from six.moves import UserString +if False: + # For type annotation + from typing import Any, Tuple # NOQA + class _TranslationProxy(UserString, object): """ @@ -140,6 +144,7 @@ class _TranslationProxy(UserString, object): def mygettext(string): + # type: (unicode) -> unicode """Used instead of _ when creating TranslationProxies, because _ is not bound yet at that time. """ @@ -147,10 +152,11 @@ def mygettext(string): def lazy_gettext(string): + # type: (unicode) -> unicode """A lazy version of `gettext`.""" # if isinstance(string, _TranslationProxy): # return string - return _TranslationProxy(mygettext, string) + return _TranslationProxy(mygettext, string) # type: ignore l_ = lazy_gettext @@ -184,19 +190,22 @@ pairindextypes = { 'exception': l_('exception'), 'statement': l_('statement'), 'builtin': l_('built-in function'), -} +} # Dict[unicode, _TranslationProxy] -translators = {} +translators = {} # type: Dict[unicode, Any] if PY3: def _(message): + # type: (unicode) -> unicode return translators['sphinx'].gettext(message) else: def _(message): + # type: (unicode) -> unicode return translators['sphinx'].ugettext(message) def init(locale_dirs, language, catalog='sphinx'): + # type: (List, unicode, unicode) -> Tuple[Any, bool] """Look for message catalogs in `locale_dirs` and *ensure* that there is at least a NullTranslations catalog set in `translators`. If called multiple times or if several ``.mo`` files are found, their contents are merged @@ -213,12 +222,12 @@ def init(locale_dirs, language, catalog='sphinx'): # loading for dir_ in locale_dirs: try: - trans = gettext.translation(catalog, localedir=dir_, - languages=[language]) + trans = gettext.translation(catalog, localedir=dir_, # type: ignore + languages=[language]) # type: ignore if translator is None: translator = trans else: - translator._catalog.update(trans._catalog) + translator._catalog.update(trans._catalog) # type: ignore except Exception: # Language couldn't be found in the specified path pass diff --git a/sphinx/make_mode.py b/sphinx/make_mode.py index 28316458e..87333301c 100644 --- a/sphinx/make_mode.py +++ b/sphinx/make_mode.py @@ -22,7 +22,7 @@ from os import path from subprocess import call import sphinx -from sphinx.util.console import bold, blue +from sphinx.util.console import bold, blue # type: ignore from sphinx.util.osutil import cd, rmtree proj_name = os.getenv('SPHINXPROJ', '<project>') @@ -59,14 +59,17 @@ BUILDERS = [ class Make(object): def __init__(self, srcdir, builddir, opts): + # type: (unicode, unicode, List[unicode]) -> None self.srcdir = srcdir self.builddir = builddir self.opts = opts def builddir_join(self, *comps): + # type: (unicode) -> unicode return path.join(self.builddir, *comps) def build_clean(self): + # type: () -> int if not path.exists(self.builddir): return elif not path.isdir(self.builddir): @@ -77,19 +80,22 @@ class Make(object): rmtree(self.builddir_join(item)) def build_help(self): + # type: () -> None print(bold("Sphinx v%s" % sphinx.__display_version__)) - print("Please use `make %s' where %s is one of" % ((blue('target'),)*2)) + print("Please use `make %s' where %s is one of" % ((blue('target'),)*2)) # type: ignore # NOQA for osname, bname, description in BUILDERS: if not osname or os.name == osname: print(' %s %s' % (blue(bname.ljust(10)), description)) def build_html(self): + # type: () -> int if self.run_generic_build('html') > 0: return 1 print() print('Build finished. The HTML pages are in %s.' % self.builddir_join('html')) def build_dirhtml(self): + # type: () -> int if self.run_generic_build('dirhtml') > 0: return 1 print() @@ -97,6 +103,7 @@ class Make(object): self.builddir_join('dirhtml')) def build_singlehtml(self): + # type: () -> int if self.run_generic_build('singlehtml') > 0: return 1 print() @@ -104,18 +111,21 @@ class Make(object): self.builddir_join('singlehtml')) def build_pickle(self): + # type: () -> int if self.run_generic_build('pickle') > 0: return 1 print() print('Build finished; now you can process the pickle files.') def build_json(self): + # type: () -> int if self.run_generic_build('json') > 0: return 1 print() print('Build finished; now you can process the JSON files.') def build_htmlhelp(self): + # type: () -> int if self.run_generic_build('htmlhelp') > 0: return 1 print() @@ -123,6 +133,7 @@ class Make(object): '.hhp project file in %s.' % self.builddir_join('htmlhelp')) def build_qthelp(self): + # type: () -> int if self.run_generic_build('qthelp') > 0: return 1 print() @@ -134,6 +145,7 @@ class Make(object): self.builddir_join('qthelp', proj_name)) def build_devhelp(self): + # type: () -> int if self.run_generic_build('devhelp') > 0: return 1 print() @@ -145,12 +157,14 @@ class Make(object): print("$ devhelp") def build_epub(self): + # type: () -> int if self.run_generic_build('epub') > 0: return 1 print() print('Build finished. The ePub file is in %s.' % self.builddir_join('epub')) def build_latex(self): + # type: () -> int if self.run_generic_build('latex') > 0: return 1 print("Build finished; the LaTeX files are in %s." % self.builddir_join('latex')) @@ -159,24 +173,28 @@ class Make(object): print("(use `make latexpdf' here to do that automatically).") def build_latexpdf(self): + # type: () -> int if self.run_generic_build('latex') > 0: return 1 with cd(self.builddir_join('latex')): os.system('make all-pdf') def build_latexpdfja(self): + # type: () -> int if self.run_generic_build('latex') > 0: return 1 with cd(self.builddir_join('latex')): os.system('make all-pdf-ja') def build_text(self): + # type: () -> int if self.run_generic_build('text') > 0: return 1 print() print('Build finished. The text files are in %s.' % self.builddir_join('text')) def build_texinfo(self): + # type: () -> int if self.run_generic_build('texinfo') > 0: return 1 print("Build finished; the Texinfo files are in %s." % @@ -186,12 +204,14 @@ class Make(object): print("(use `make info' here to do that automatically).") def build_info(self): + # type: () -> int if self.run_generic_build('texinfo') > 0: return 1 with cd(self.builddir_join('texinfo')): os.system('make info') def build_gettext(self): + # type: () -> int dtdir = self.builddir_join('gettext', '.doctrees') if self.run_generic_build('gettext', doctreedir=dtdir) > 0: return 1 @@ -200,6 +220,7 @@ class Make(object): self.builddir_join('gettext')) def build_changes(self): + # type: () -> int if self.run_generic_build('changes') > 0: return 1 print() @@ -207,6 +228,7 @@ class Make(object): self.builddir_join('changes')) def build_linkcheck(self): + # type: () -> int res = self.run_generic_build('linkcheck') print() print('Link check complete; look for any errors in the above output ' @@ -214,12 +236,14 @@ class Make(object): return res def build_doctest(self): + # type: () -> int res = self.run_generic_build('doctest') print("Testing of doctests in the sources finished, look at the " "results in %s." % self.builddir_join('doctest', 'output.txt')) return res def build_coverage(self): + # type: () -> int if self.run_generic_build('coverage') > 0: print("Has the coverage extension been enabled?") return 1 @@ -228,12 +252,14 @@ class Make(object): "results in %s." % self.builddir_join('coverage')) def build_xml(self): + # type: () -> int if self.run_generic_build('xml') > 0: return 1 print() print('Build finished. The XML files are in %s.' % self.builddir_join('xml')) def build_pseudoxml(self): + # type: () -> int if self.run_generic_build('pseudoxml') > 0: return 1 print() @@ -241,6 +267,7 @@ class Make(object): self.builddir_join('pseudoxml')) def run_generic_build(self, builder, doctreedir=None): + # type: (unicode, unicode) -> int # compatibility with old Makefile papersize = os.getenv('PAPER', '') opts = self.opts @@ -261,11 +288,12 @@ class Make(object): # linux, mac: 'sphinx-build' or 'sphinx-build.py' cmd = [sys.executable, orig_cmd] - return call(cmd + ['-b', builder] + opts + - ['-d', doctreedir, self.srcdir, self.builddir_join(builder)]) + return call(cmd + ['-b', builder] + opts + # type: ignore + ['-d', doctreedir, self.srcdir, self.builddir_join(builder)]) # type: ignore # NOQA def run_make_mode(args): + # type: (List[unicode]) -> int if len(args) < 3: print('Error: at least 3 arguments (builder, source ' 'dir, build dir) are required.', file=sys.stderr) diff --git a/sphinx/pycode/__init__.py b/sphinx/pycode/__init__.py index baf5c0068..2c898560b 100644 --- a/sphinx/pycode/__init__.py +++ b/sphinx/pycode/__init__.py @@ -24,6 +24,10 @@ from sphinx.util import get_module_source, detect_encoding from sphinx.util.pycompat import TextIOWrapper from sphinx.util.docstrings import prepare_docstring, prepare_commentdoc +if False: + # For type annotation + from typing import Any, Tuple # NOQA + # load the Python grammar _grammarfile = path.join(package_dir, 'pycode', @@ -63,10 +67,10 @@ class AttrDocVisitor(nodes.NodeVisitor): self.scope = scope self.in_init = 0 self.encoding = encoding - self.namespace = [] - self.collected = {} + self.namespace = [] # type: List[unicode] + self.collected = {} # type: Dict[Tuple[unicode, unicode], unicode] self.tagnumber = 0 - self.tagorder = {} + self.tagorder = {} # type: Dict[unicode, int] def add_tag(self, name): name = '.'.join(self.namespace + [name]) @@ -102,10 +106,10 @@ class AttrDocVisitor(nodes.NodeVisitor): parent = node.parent idx = parent.children.index(node) + 1 while idx < len(parent): - if parent[idx].type == sym.SEMI: + if parent[idx].type == sym.SEMI: # type: ignore idx += 1 continue # skip over semicolon - if parent[idx].type == sym.NEWLINE: + if parent[idx].type == sym.NEWLINE: # type: ignore prefix = parent[idx].get_prefix() if not isinstance(prefix, text_type): prefix = prefix.decode(self.encoding) @@ -138,8 +142,8 @@ class AttrDocVisitor(nodes.NodeVisitor): prev = node.get_prev_sibling() if not prev: return - if prev.type == sym.simple_stmt and \ - prev[0].type == sym.expr_stmt and _eq in prev[0].children: + if (prev.type == sym.simple_stmt and # type: ignore + prev[0].type == sym.expr_stmt and _eq in prev[0].children): # type: ignore # need to "eval" the string because it's returned in its # original form docstring = literals.evalString(node[0].value, self.encoding) @@ -178,7 +182,7 @@ class AttrDocVisitor(nodes.NodeVisitor): class ModuleAnalyzer(object): # cache for analyzer objects -- caches both by module and file name - cache = {} + cache = {} # type: Dict[Tuple[unicode, unicode], Any] @classmethod def for_string(cls, string, modname, srcname='<string>'): @@ -240,14 +244,14 @@ class ModuleAnalyzer(object): self.source.seek(pos) # will be filled by tokenize() - self.tokens = None + self.tokens = None # type: List[unicode] # will be filled by parse() - self.parsetree = None + self.parsetree = None # type: Any # will be filled by find_attr_docs() - self.attr_docs = None - self.tagorder = None + self.attr_docs = None # type: List[unicode] + self.tagorder = None # type: Dict[unicode, int] # will be filled by find_tags() - self.tags = None + self.tags = None # type: List[unicode] def tokenize(self): """Generate tokens from the source.""" @@ -289,8 +293,8 @@ class ModuleAnalyzer(object): return self.tags self.tokenize() result = {} - namespace = [] - stack = [] + namespace = [] # type: List[unicode] + stack = [] # type: List[Tuple[unicode, unicode, unicode, int]] indent = 0 defline = False expect_indent = False @@ -301,7 +305,7 @@ class ModuleAnalyzer(object): if tokentup[0] not in ignore: yield tokentup tokeniter = tokeniter() - for type, tok, spos, epos, line in tokeniter: + for type, tok, spos, epos, line in tokeniter: # type: ignore if expect_indent and type != token.NL: if type != token.INDENT: # no suite -- one-line definition @@ -312,7 +316,7 @@ class ModuleAnalyzer(object): result[fullname] = (dtype, startline, endline - emptylines) expect_indent = False if tok in ('def', 'class'): - name = next(tokeniter)[1] + name = next(tokeniter)[1] # type: ignore namespace.append(name) fullname = '.'.join(namespace) stack.append((tok, fullname, spos[0], indent)) diff --git a/sphinx/pycode/nodes.py b/sphinx/pycode/nodes.py index ee40f3c0d..b6b3355c0 100644 --- a/sphinx/pycode/nodes.py +++ b/sphinx/pycode/nodes.py @@ -14,7 +14,7 @@ class BaseNode(object): """ Node superclass for both terminal and nonterminal nodes. """ - parent = None + parent = None # type: BaseNode def _eq(self, other): raise NotImplementedError @@ -29,7 +29,7 @@ class BaseNode(object): return NotImplemented return not self._eq(other) - __hash__ = None + __hash__ = None # type: str def get_prev_sibling(self): """Return previous child in parent's children, or None.""" @@ -204,5 +204,5 @@ class NodeVisitor(object): def generic_visit(self, node): """Called if no explicit visitor function exists for a node.""" if isinstance(node, Node): - for child in node: + for child in node: # type: ignore self.visit(child) diff --git a/sphinx/pycode/pgen2/grammar.py b/sphinx/pycode/pgen2/grammar.py index 42e6d72ee..cd6a435d5 100644 --- a/sphinx/pycode/pgen2/grammar.py +++ b/sphinx/pycode/pgen2/grammar.py @@ -19,6 +19,10 @@ import pickle # Local imports from sphinx.pycode.pgen2 import token +if False: + # For type annotation + from typing import Tuple # NOQA + class Grammar(object): """Pgen parsing tables tables conversion class. @@ -75,14 +79,14 @@ class Grammar(object): """ def __init__(self): - self.symbol2number = {} - self.number2symbol = {} - self.states = [] - self.dfas = {} + self.symbol2number = {} # type: Dict[unicode, int] + self.number2symbol = {} # type: Dict[int, unicode] + self.states = [] # type: List[List[List[Tuple[int, int]]]] + self.dfas = {} # type: Dict[int, Tuple[List[List[Tuple[int, int]]], unicode]] self.labels = [(0, "EMPTY")] - self.keywords = {} - self.tokens = {} - self.symbol2label = {} + self.keywords = {} # type: Dict[unicode, unicode] + self.tokens = {} # type: Dict[unicode, unicode] + self.symbol2label = {} # type: Dict[unicode, unicode] self.start = 256 def dump(self, filename): diff --git a/sphinx/pycode/pgen2/parse.py b/sphinx/pycode/pgen2/parse.py index 60eec05ea..43b88b519 100644 --- a/sphinx/pycode/pgen2/parse.py +++ b/sphinx/pycode/pgen2/parse.py @@ -13,6 +13,10 @@ how this parsing engine works. # Local imports from sphinx.pycode.pgen2 import token +if False: + # For type annotation + from typing import Any, Tuple # NOQA + class ParseError(Exception): """Exception to signal the parser is stuck.""" @@ -104,11 +108,12 @@ class Parser(object): # Each stack entry is a tuple: (dfa, state, node). # A node is a tuple: (type, value, context, children), # where children is a list of nodes or None, and context may be None. - newnode = (start, None, None, []) + newnode = (start, None, None, []) # type: Tuple[unicode, unicode, unicode, List] stackentry = (self.grammar.dfas[start], 0, newnode) self.stack = [stackentry] - self.rootnode = None - self.used_names = set() # Aliased to self.rootnode.used_names in pop() + self.rootnode = None # type: Any + self.used_names = set() # type: Set[unicode] + # Aliased to self.rootnode.used_names in pop() def addtoken(self, type, value, context): """Add a token; return True iff this is the end of the program.""" @@ -175,7 +180,7 @@ class Parser(object): def shift(self, type, value, newstate, context): """Shift a token. (Internal)""" dfa, state, node = self.stack[-1] - newnode = (type, value, context, None) + newnode = (type, value, context, None) # type: Tuple[unicode, unicode, unicode, List] newnode = self.convert(self.grammar, newnode) if newnode is not None: node[-1].append(newnode) @@ -184,7 +189,7 @@ class Parser(object): def push(self, type, newdfa, newstate, context): """Push a nonterminal. (Internal)""" dfa, state, node = self.stack[-1] - newnode = (type, None, context, []) + newnode = (type, None, context, []) # type: Tuple[unicode, unicode, unicode, List] self.stack[-1] = (dfa, newstate, node) self.stack.append((newdfa, 0, newnode)) diff --git a/sphinx/pycode/pgen2/pgen.py b/sphinx/pycode/pgen2/pgen.py index 7598e6abc..3fe91e57e 100644 --- a/sphinx/pycode/pgen2/pgen.py +++ b/sphinx/pycode/pgen2/pgen.py @@ -7,9 +7,13 @@ from six import iteritems from collections import OrderedDict # Pgen imports - from sphinx.pycode.pgen2 import grammar, token, tokenize +if False: + # For type annotation + from typing import Any, Tuple # NOQA + + class PgenGrammar(grammar.Grammar): pass @@ -27,7 +31,8 @@ class ParserGenerator(object): self.dfas, self.startsymbol = self.parse() if close_stream is not None: close_stream() - self.first = {} # map from symbol name to set of tokens + self.first = {} # type: Dict[unicode, List[unicode]] + # map from symbol name to set of tokens self.addfirstsets() def make_grammar(self): @@ -42,7 +47,7 @@ class ParserGenerator(object): c.number2symbol[i] = name for name in names: dfa = self.dfas[name] - states = [] + states = [] # type: List[List[Tuple[int, int]]] for state in dfa: arcs = [] for label, next in iteritems(state.arcs): @@ -122,7 +127,7 @@ class ParserGenerator(object): dfa = self.dfas[name] self.first[name] = None # dummy to detect left recursion state = dfa[0] - totalset = {} + totalset = {} # type: Dict[unicode, int] overlapcheck = {} for label, next in iteritems(state.arcs): if label in self.dfas: @@ -138,7 +143,7 @@ class ParserGenerator(object): else: totalset[label] = 1 overlapcheck[label] = {label: 1} - inverse = {} + inverse = {} # type: Dict[unicode, unicode] for label, itsfirst in sorted(overlapcheck.items()): for symbol in sorted(itsfirst): if symbol in inverse: @@ -180,7 +185,7 @@ class ParserGenerator(object): assert isinstance(start, NFAState) assert isinstance(finish, NFAState) def closure(state): - base = {} + base = {} # type: Dict addclosure(state, base) return base def addclosure(state, base): @@ -188,12 +193,12 @@ class ParserGenerator(object): if state in base: return base[state] = 1 - for label, next in state.arcs: + for label, next in state.arcs: # type: ignore if label is None: addclosure(next, base) states = [DFAState(closure(start), finish)] for state in states: # NB states grows while we're iterating - arcs = {} + arcs = {} # type: Dict[unicode, Dict] for nfastate in state.nfaset: for label, next in nfastate.arcs: if label is not None: @@ -343,7 +348,8 @@ class ParserGenerator(object): class NFAState(object): def __init__(self): - self.arcs = [] # list of (label, NFAState) pairs + self.arcs = [] # type: List[Tuple[unicode, Any]] + # list of (label, NFAState) pairs def addarc(self, next, label=None): assert label is None or isinstance(label, str) @@ -361,7 +367,8 @@ class DFAState(object): assert isinstance(final, NFAState) self.nfaset = nfaset self.isfinal = final in nfaset - self.arcs = OrderedDict() # map from label to DFAState + self.arcs = OrderedDict() # type: OrderedDict + # map from label to DFAState def __hash__(self): return hash(tuple(self.arcs)) diff --git a/sphinx/pycode/pgen2/tokenize.py b/sphinx/pycode/pgen2/tokenize.py index c7013bf91..a096795f8 100644 --- a/sphinx/pycode/pgen2/tokenize.py +++ b/sphinx/pycode/pgen2/tokenize.py @@ -183,7 +183,7 @@ def tokenize_loop(readline, tokeneater): class Untokenizer: def __init__(self): - self.tokens = [] + self.tokens = [] # type: List[unicode] self.prev_row = 1 self.prev_col = 0 @@ -294,17 +294,17 @@ def generate_tokens(readline): if contstr: # continued string if not line: - raise TokenError("EOF in multi-line string", strstart) - endmatch = endprog.match(line) + raise TokenError("EOF in multi-line string", strstart) # type: ignore + endmatch = endprog.match(line) # type: ignore if endmatch: pos = end = endmatch.end(0) - yield (STRING, contstr + line[:end], - strstart, (lnum, end), contline + line) + yield (STRING, contstr + line[:end], # type: ignore + strstart, (lnum, end), contline + line) # type: ignore contstr, needcont = '', 0 contline = None elif needcont and line[-2:] != '\\\n' and line[-3:] != '\\\r\n': - yield (ERRORTOKEN, contstr + line, - strstart, (lnum, len(line)), contline) + yield (ERRORTOKEN, contstr + line, # type: ignore + strstart, (lnum, len(line)), contline) # type: ignore contstr = '' contline = None continue @@ -333,7 +333,7 @@ def generate_tokens(readline): yield (NL, line[nl_pos:], (lnum, nl_pos), (lnum, len(line)), line) else: - yield ((NL, COMMENT)[line[pos] == '#'], line[pos:], + yield ((NL, COMMENT)[line[pos] == '#'], line[pos:], # type: ignore (lnum, pos), (lnum, len(line)), line) continue diff --git a/sphinx/quickstart.py b/sphinx/quickstart.py index 3c7ab3d97..eb5349ede 100644 --- a/sphinx/quickstart.py +++ b/sphinx/quickstart.py @@ -36,8 +36,9 @@ from docutils.utils import column_width from sphinx import __display_version__, package_dir from sphinx.util.osutil import make_filename -from sphinx.util.console import purple, bold, red, turquoise, \ - nocolor, color_terminal +from sphinx.util.console import ( # type: ignore + purple, bold, red, turquoise, nocolor, color_terminal +) from sphinx.util.template import SphinxRenderer from sphinx.util import texescape diff --git a/sphinx/roles.py b/sphinx/roles.py index 6e8de3b4a..01e34fa71 100644 --- a/sphinx/roles.py +++ b/sphinx/roles.py @@ -175,7 +175,7 @@ def indexmarkup_role(typ, rawtext, text, lineno, inliner, typ = env.config.default_role else: typ = typ.lower() - has_explicit_title, title, target = split_explicit_title(text) + has_explicit_title, title, target = split_explicit_title(text) # type: bool, unicode, unicode # NOQA title = utils.unescape(title) target = utils.unescape(target) targetid = 'index-%s' % env.new_serialno('index') @@ -186,7 +186,7 @@ def indexmarkup_role(typ, rawtext, text, lineno, inliner, indexnode['entries'] = [ ('single', _('Python Enhancement Proposals; PEP %s') % target, targetid, '', None)] - anchor = '' + anchor = '' # type: unicode anchorindex = target.find('#') if anchorindex > 0: target, anchor = target[:anchorindex], target[anchorindex:] diff --git a/sphinx/search/__init__.py b/sphinx/search/__init__.py index d3c6c0eba..959e335c3 100644 --- a/sphinx/search/__init__.py +++ b/sphinx/search/__init__.py @@ -9,16 +9,23 @@ :license: BSD, see LICENSE for details. """ import re +from os import path from six import iteritems, itervalues, text_type, string_types from six.moves import cPickle as pickle + from docutils.nodes import raw, comment, title, Text, NodeVisitor, SkipNode -from os import path import sphinx from sphinx.util import jsdump, rpartition from sphinx.util.pycompat import htmlescape +if False: + # For type annotation + from typing import Any, IO, Iterable, Tuple, Type # NOQA + from docutils import nodes # NOQA + from sphinx.environment import BuildEnvironment # NOQA + class SearchLanguage(object): """ @@ -42,10 +49,10 @@ class SearchLanguage(object): This class is used to preprocess search word which Sphinx HTML readers type, before searching index. Default implementation does nothing. """ - lang = None - language_name = None - stopwords = set() - js_stemmer_rawcode = None + lang = None # type: unicode + language_name = None # type: unicode + stopwords = set() # type: Set[unicode] + js_stemmer_rawcode = None # type: unicode js_stemmer_code = """ /** * Dummy stemmer for languages without stemming rules. @@ -60,23 +67,27 @@ var Stemmer = function() { _word_re = re.compile(r'\w+(?u)') def __init__(self, options): + # type: (Dict) -> None self.options = options self.init(options) def init(self, options): + # type: (Dict) -> None """ Initialize the class with the options the user has given. """ def split(self, input): + # type: (unicode) -> List[unicode] """ This method splits a sentence into words. Default splitter splits input at white spaces, which should be enough for most languages except CJK languages. """ - return self._word_re.findall(input) + return self._word_re.findall(input) # type: ignore def stem(self, word): + # type: (unicode) -> unicode """ This method implements stemming algorithm of the Python version. @@ -90,6 +101,7 @@ var Stemmer = function() { return word def word_filter(self, word): + # type: (unicode) -> bool """ Return true if the target word should be registered in the search index. This method is called after stemming. @@ -107,6 +119,7 @@ from sphinx.search.en import SearchEnglish def parse_stop_word(source): + # type: (unicode) -> Set[unicode] """ parse snowball style word list like this: @@ -138,7 +151,7 @@ languages = { 'sv': 'sphinx.search.sv.SearchSwedish', 'tr': 'sphinx.search.tr.SearchTurkish', 'zh': 'sphinx.search.zh.SearchChinese', -} +} # type: Dict[unicode, Any] class _JavaScriptIndex(object): @@ -151,9 +164,11 @@ class _JavaScriptIndex(object): SUFFIX = ')' def dumps(self, data): + # type: (Any) -> unicode return self.PREFIX + jsdump.dumps(data) + self.SUFFIX def loads(self, s): + # type: (str) -> Any data = s[len(self.PREFIX):-len(self.SUFFIX)] if not data or not s.startswith(self.PREFIX) or not \ s.endswith(self.SUFFIX): @@ -161,9 +176,11 @@ class _JavaScriptIndex(object): return jsdump.loads(data) def dump(self, data, f): + # type: (Any, IO) -> None f.write(self.dumps(data)) def load(self, f): + # type: (IO) -> Any return self.loads(f.read()) @@ -176,12 +193,14 @@ class WordCollector(NodeVisitor): """ def __init__(self, document, lang): + # type: (nodes.Node, SearchLanguage) -> None NodeVisitor.__init__(self, document) - self.found_words = [] - self.found_title_words = [] + self.found_words = [] # type: List[unicode] + self.found_title_words = [] # type: List[unicode] self.lang = lang def is_meta_keywords(self, node, nodetype): + # type: (nodes.Node, Type) -> bool if isinstance(node, sphinx.addnodes.meta) and node.get('name') == 'keywords': meta_lang = node.get('lang') if meta_lang is None: # lang not specified @@ -192,6 +211,7 @@ class WordCollector(NodeVisitor): return False def dispatch_visit(self, node): + # type: (nodes.Node) -> None nodetype = type(node) if issubclass(nodetype, comment): raise SkipNode @@ -223,28 +243,29 @@ class IndexBuilder(object): formats = { 'jsdump': jsdump, 'pickle': pickle - } + } # type: Dict[unicode, Any] def __init__(self, env, lang, options, scoring): + # type: (BuildEnvironment, unicode, Dict, unicode) -> None self.env = env - # docname -> title - self._titles = {} - # docname -> filename - self._filenames = {} - # stemmed word -> set(docname) - self._mapping = {} - # stemmed words in titles -> set(docname) - self._title_mapping = {} - # word -> stemmed word - self._stem_cache = {} - # objtype -> index - self._objtypes = {} - # objtype index -> (domain, type, objname (localized)) - self._objnames = {} - # add language-specific SearchLanguage instance - lang_class = languages.get(lang) + self._titles = {} # type: Dict[unicode, unicode] + # docname -> title + self._filenames = {} # type: Dict[unicode, unicode] + # docname -> filename + self._mapping = {} # type: Dict[unicode, Set[unicode]] + # stemmed word -> set(docname) + self._title_mapping = {} # type: Dict[unicode, Set[unicode]] + # stemmed words in titles -> set(docname) + self._stem_cache = {} # type: Dict[unicode, unicode] + # word -> stemmed word + self._objtypes = {} # type: Dict[Tuple[unicode, unicode], int] + # objtype -> index + self._objnames = {} # type: Dict[int, Tuple[unicode, unicode, unicode]] + # objtype index -> (domain, type, objname (localized)) + lang_class = languages.get(lang) # type: Type[SearchLanguage] + # add language-specific SearchLanguage instance if lang_class is None: - self.lang = SearchEnglish(options) + self.lang = SearchEnglish(options) # type: SearchLanguage elif isinstance(lang_class, str): module, classname = lang_class.rsplit('.', 1) lang_class = getattr(__import__(module, None, None, [classname]), @@ -261,6 +282,7 @@ class IndexBuilder(object): self.js_scorer_code = u'' def load(self, stream, format): + # type: (IO, Any) -> None """Reconstruct from frozen data.""" if isinstance(format, string_types): format = self.formats[format] @@ -273,6 +295,7 @@ class IndexBuilder(object): self._titles = dict(zip(index2fn, frozen['titles'])) def load_terms(mapping): + # type: (Dict[unicode, Any]) -> Dict[unicode, Set[unicode]] rv = {} for k, v in iteritems(mapping): if isinstance(v, int): @@ -286,13 +309,15 @@ class IndexBuilder(object): # no need to load keywords/objtypes def dump(self, stream, format): + # type: (IO, Any) -> None """Dump the frozen index to a stream.""" if isinstance(format, string_types): format = self.formats[format] - format.dump(self.freeze(), stream) + format.dump(self.freeze(), stream) # type: ignore def get_objects(self, fn2index): - rv = {} + # type: (Dict[unicode, int]) -> Dict[unicode, Dict[unicode, Tuple[int, int, int, unicode]]] # NOQA + rv = {} # type: Dict[unicode, Dict[unicode, Tuple[int, int, int, unicode]]] otypes = self._objtypes onames = self._objnames for domainname, domain in sorted(iteritems(self.env.domains)): @@ -319,7 +344,7 @@ class IndexBuilder(object): else: onames[typeindex] = (domainname, type, type) if anchor == fullname: - shortanchor = '' + shortanchor = '' # type: unicode elif anchor == type + '-' + fullname: shortanchor = '-' else: @@ -328,7 +353,8 @@ class IndexBuilder(object): return rv def get_terms(self, fn2index): - rvs = {}, {} + # type: (Dict) -> Tuple[Dict[unicode, List[unicode]], Dict[unicode, List[unicode]]] + rvs = {}, {} # type: Tuple[Dict[unicode, List[unicode]], Dict[unicode, List[unicode]]] for rv, mapping in zip(rvs, (self._mapping, self._title_mapping)): for k, v in iteritems(mapping): if len(v) == 1: @@ -340,6 +366,7 @@ class IndexBuilder(object): return rvs def freeze(self): + # type: () -> Dict[unicode, Any] """Create a usable data structure for serializing.""" docnames, titles = zip(*sorted(self._titles.items())) filenames = [self._filenames.get(docname) for docname in docnames] @@ -355,9 +382,11 @@ class IndexBuilder(object): titleterms=title_terms, envversion=self.env.version) def label(self): + # type: () -> unicode return "%s (code: %s)" % (self.lang.language_name, self.lang.lang) def prune(self, filenames): + # type: (Iterable[unicode]) -> None """Remove data for all filenames not in the list.""" new_titles = {} for filename in filenames: @@ -370,6 +399,7 @@ class IndexBuilder(object): wordnames.intersection_update(filenames) def feed(self, docname, filename, title, doctree): + # type: (unicode, unicode, unicode, nodes.Node) -> None """Feed a doctree to the index.""" self._titles[docname] = title self._filenames[docname] = filename @@ -379,6 +409,7 @@ class IndexBuilder(object): # memoize self.lang.stem def stem(word): + # type: (unicode) -> unicode try: return self._stem_cache[word] except KeyError: @@ -403,6 +434,7 @@ class IndexBuilder(object): self._mapping.setdefault(stemmed_word, set()).add(docname) def context_for_searchtool(self): + # type: () -> Dict[unicode, Any] return dict( search_language_stemming_code = self.lang.js_stemmer_code, search_language_stop_words = jsdump.dumps(sorted(self.lang.stopwords)), @@ -410,6 +442,7 @@ class IndexBuilder(object): ) def get_js_stemmer_rawcode(self): + # type: () -> unicode if self.lang.js_stemmer_rawcode: return path.join( path.dirname(path.abspath(__file__)), diff --git a/sphinx/search/en.py b/sphinx/search/en.py index d5259bed7..22d4e5acb 100644 --- a/sphinx/search/en.py +++ b/sphinx/search/en.py @@ -224,12 +224,15 @@ class SearchEnglish(SearchLanguage): stopwords = english_stopwords def init(self, options): + # type: (Dict) -> None if PYSTEMMER: class Stemmer(object): def __init__(self): + # type: () -> None self.stemmer = PyStemmer('porter') def stem(self, word): + # type: (unicode) -> unicode return self.stemmer.stemWord(word) else: class Stemmer(PorterStemmer): @@ -237,9 +240,11 @@ class SearchEnglish(SearchLanguage): make at least the stem method nicer. """ def stem(self, word): + # type: (unicode) -> unicode return PorterStemmer.stem(self, word, 0, len(word) - 1) self.stemmer = Stemmer() def stem(self, word): + # type: (unicode) -> unicode return self.stemmer.stem(word.lower()) diff --git a/sphinx/search/ja.py b/sphinx/search/ja.py index 0d4d01b9c..cf3b67c00 100644 --- a/sphinx/search/ja.py +++ b/sphinx/search/ja.py @@ -43,9 +43,11 @@ from sphinx.util import import_object class BaseSplitter(object): def __init__(self, options): + # type: (Dict) -> None self.options = options def split(self, input): + # type: (unicode) -> List[unicode] """ :param str input: @@ -57,9 +59,10 @@ class BaseSplitter(object): class MecabSplitter(BaseSplitter): def __init__(self, options): + # type: (Dict) -> None super(MecabSplitter, self).__init__(options) - self.ctypes_libmecab = None - self.ctypes_mecab = None + self.ctypes_libmecab = None # type: ignore + self.ctypes_mecab = None # type: ignore if not native_module: self.init_ctypes(options) else: @@ -67,6 +70,7 @@ class MecabSplitter(BaseSplitter): self.dict_encode = options.get('dic_enc', 'utf-8') def split(self, input): + # type: (unicode) -> List[unicode] input2 = input if PY3 else input.encode(self.dict_encode) if native_module: result = self.native.parse(input2) @@ -79,6 +83,7 @@ class MecabSplitter(BaseSplitter): return result.decode(self.dict_encode).split(' ') def init_native(self, options): + # type: (Dict) -> None param = '-Owakati' dict = options.get('dict') if dict: @@ -86,6 +91,7 @@ class MecabSplitter(BaseSplitter): self.native = MeCab.Tagger(param) def init_ctypes(self, options): + # type: (Dict) -> None import ctypes.util lib = options.get('lib') @@ -122,6 +128,7 @@ class MecabSplitter(BaseSplitter): raise SphinxError('mecab initialization failed') def __del__(self): + # type: () -> None if self.ctypes_libmecab: self.ctypes_libmecab.mecab_destroy(self.ctypes_mecab) @@ -130,17 +137,20 @@ MeCabBinder = MecabSplitter # keep backward compatibility until Sphinx-1.6 class JanomeSplitter(BaseSplitter): def __init__(self, options): + # type: (Dict) -> None super(JanomeSplitter, self).__init__(options) self.user_dict = options.get('user_dic') self.user_dict_enc = options.get('user_dic_enc', 'utf8') self.init_tokenizer() def init_tokenizer(self): + # type: () -> None if not janome_module: raise RuntimeError('Janome is not available') self.tokenizer = janome.tokenizer.Tokenizer(udic=self.user_dict, udic_enc=self.user_dict_enc) def split(self, input): + # type: (unicode) -> List[unicode] result = u' '.join(token.surface for token in self.tokenizer.tokenize(input)) return result.split(u' ') @@ -417,6 +427,7 @@ class DefaultSplitter(BaseSplitter): # ctype_ def ctype_(self, char): + # type: (unicode) -> unicode for pattern, value in iteritems(self.patterns_): if pattern.match(char): return value @@ -424,12 +435,14 @@ class DefaultSplitter(BaseSplitter): # ts_ def ts_(self, dict, key): + # type: (Dict[unicode, int], unicode) -> int if key in dict: return dict[key] return 0 # segment def split(self, input): + # type: (unicode) -> List[unicode] if not input: return [] @@ -538,6 +551,7 @@ class SearchJapanese(SearchLanguage): } def init(self, options): + # type: (Dict) -> None type = options.get('type', 'default') if type in self.splitters: dotted_path = self.splitters[type] @@ -550,10 +564,13 @@ class SearchJapanese(SearchLanguage): dotted_path) def split(self, input): + # type: (unicode) -> List[unicode] return self.splitter.split(input) def word_filter(self, stemmed_word): + # type: (unicode) -> bool return len(stemmed_word) > 1 def stem(self, word): + # type: (unicode) -> unicode return word diff --git a/sphinx/search/ro.py b/sphinx/search/ro.py index 78ae01851..f44f38e34 100644 --- a/sphinx/search/ro.py +++ b/sphinx/search/ro.py @@ -24,10 +24,12 @@ class SearchRomanian(SearchLanguage): language_name = 'Romanian' js_stemmer_rawcode = 'romanian-stemmer.js' js_stemmer_code = js_stemmer - stopwords = [] + stopwords = [] # type: List[unicode] def init(self, options): + # type: (Dict) -> None self.stemmer = snowballstemmer.stemmer('romanian') def stem(self, word): + # type: (unicode) -> unicode return self.stemmer.stemWord(word) diff --git a/sphinx/search/tr.py b/sphinx/search/tr.py index 33c5c5192..14cc710f8 100644 --- a/sphinx/search/tr.py +++ b/sphinx/search/tr.py @@ -24,10 +24,12 @@ class SearchTurkish(SearchLanguage): language_name = 'Turkish' js_stemmer_rawcode = 'turkish-stemmer.js' js_stemmer_code = js_stemmer - stopwords = [] + stopwords = [] # type: List[unicode] def init(self, options): + # type: (Dict) -> None self.stemmer = snowballstemmer.stemmer('turkish') def stem(self, word): + # type: (unicode) -> unicode return self.stemmer.stemWord(word) diff --git a/sphinx/search/zh.py b/sphinx/search/zh.py index c1fecefc6..bd4787506 100644 --- a/sphinx/search/zh.py +++ b/sphinx/search/zh.py @@ -238,6 +238,7 @@ class SearchChinese(SearchLanguage): latin1_letters = re.compile(r'\w+(?u)[\u0000-\u00ff]') def init(self, options): + # type: (Dict) -> None if JIEBA: dict_path = options.get('dict') if dict_path and os.path.isfile(dict_path): @@ -246,9 +247,11 @@ class SearchChinese(SearchLanguage): if PYSTEMMER: class Stemmer(object): def __init__(self): + # type: () -> None self.stemmer = PyStemmer('porter') def stem(self, word): + # type: (unicode) -> unicode return self.stemmer.stemWord(word) else: class Stemmer(PorterStemmer): @@ -256,20 +259,24 @@ class SearchChinese(SearchLanguage): make at least the stem method nicer. """ def stem(self, word): + # type: (unicode) -> unicode return PorterStemmer.stem(self, word, 0, len(word) - 1) self.stemmer = Stemmer() def split(self, input): - chinese = [] + # type: (unicode) -> List[unicode] + chinese = [] # type: List[unicode] if JIEBA: chinese = list(jieba.cut_for_search(input)) - latin1 = self.latin1_letters.findall(input) + latin1 = self.latin1_letters.findall(input) # type: ignore return chinese + latin1 def word_filter(self, stemmed_word): + # type: (unicode) -> bool return len(stemmed_word) > 1 def stem(self, word): + # type: (unicode) -> unicode return self.stemmer.stem(word) diff --git a/sphinx/setup_command.py b/sphinx/setup_command.py index c23f22228..f263f8df1 100644 --- a/sphinx/setup_command.py +++ b/sphinx/setup_command.py @@ -18,7 +18,7 @@ import os from six import StringIO, string_types from distutils.cmd import Command -from distutils.errors import DistutilsOptionError, DistutilsExecError +from distutils.errors import DistutilsOptionError, DistutilsExecError # type: ignore from sphinx.application import Sphinx from sphinx.cmdline import handle_exception @@ -26,6 +26,10 @@ from sphinx.util.console import nocolor, color_terminal from sphinx.util.docutils import docutils_namespace from sphinx.util.osutil import abspath +if False: + # For type annotation + from typing import Any # NOQA + class BuildDoc(Command): """ @@ -87,22 +91,24 @@ class BuildDoc(Command): 'link-index'] def initialize_options(self): + # type: () -> None self.fresh_env = self.all_files = False self.pdb = False - self.source_dir = self.build_dir = None + self.source_dir = self.build_dir = None # type: unicode self.builder = 'html' self.warning_is_error = False self.project = '' self.version = '' self.release = '' self.today = '' - self.config_dir = None + self.config_dir = None # type: unicode self.link_index = False self.copyright = '' self.verbosity = 0 self.traceback = False def _guess_source_dir(self): + # type: () -> unicode for guess in ('doc', 'docs'): if not os.path.isdir(guess): continue @@ -115,6 +121,7 @@ class BuildDoc(Command): # unicode, causing finalize_options to fail if invoked again. Workaround # for http://bugs.python.org/issue19570 def _ensure_stringlike(self, option, what, default=None): + # type: (unicode, unicode, Any) -> Any val = getattr(self, option) if val is None: setattr(self, option, default) @@ -125,10 +132,11 @@ class BuildDoc(Command): return val def finalize_options(self): + # type: () -> None if self.source_dir is None: self.source_dir = self._guess_source_dir() - self.announce('Using source directory %s' % self.source_dir) - self.ensure_dirname('source_dir') + self.announce('Using source directory %s' % self.source_dir) # type: ignore + self.ensure_dirname('source_dir') # type: ignore if self.source_dir is None: self.source_dir = os.curdir self.source_dir = abspath(self.source_dir) @@ -137,22 +145,23 @@ class BuildDoc(Command): self.config_dir = abspath(self.config_dir) if self.build_dir is None: - build = self.get_finalized_command('build') + build = self.get_finalized_command('build') # type: ignore self.build_dir = os.path.join(abspath(build.build_base), 'sphinx') - self.mkpath(self.build_dir) + self.mkpath(self.build_dir) # type: ignore self.build_dir = abspath(self.build_dir) self.doctree_dir = os.path.join(self.build_dir, 'doctrees') - self.mkpath(self.doctree_dir) + self.mkpath(self.doctree_dir) # type: ignore self.builder_target_dir = os.path.join(self.build_dir, self.builder) - self.mkpath(self.builder_target_dir) + self.mkpath(self.builder_target_dir) # type: ignore def run(self): + # type: () -> None if not color_terminal(): nocolor() - if not self.verbose: + if not self.verbose: # type: ignore status_stream = StringIO() else: - status_stream = sys.stdout + status_stream = sys.stdout # type: ignore confoverrides = {} if self.project: confoverrides['project'] = self.project @@ -182,6 +191,6 @@ class BuildDoc(Command): raise SystemExit(1) if self.link_index: - src = app.config.master_doc + app.builder.out_suffix - dst = app.builder.get_outfilename('index') + src = app.config.master_doc + app.builder.out_suffix # type: ignore + dst = app.builder.get_outfilename('index') # type: ignore os.symlink(src, dst) diff --git a/sphinx/theming.py b/sphinx/theming.py index 42e4448db..4e05652cd 100644 --- a/sphinx/theming.py +++ b/sphinx/theming.py @@ -16,7 +16,8 @@ import tempfile from os import path from six import string_types, iteritems -from six.moves import configparser +from six.moves import configparser # type: ignore +from typing import Any, Callable, Tuple # NOQA try: import pkg_resources @@ -26,6 +27,10 @@ except ImportError: from sphinx import package_dir from sphinx.errors import ThemeError +if False: + # For type annotation + from typing import Any, Callable, Tuple # NOQA + NODEFAULT = object() THEMECONF = 'theme.conf' @@ -34,10 +39,12 @@ class Theme(object): """ Represents the theme chosen in the configuration. """ - themes = {} + themes = {} # type: Dict[unicode, Tuple[unicode, zipfile.ZipFile]] + themepath = [] # type: List[unicode] @classmethod def init_themes(cls, confdir, theme_path, warn=None): + # type: (unicode, unicode, Callable) -> None """Search all theme paths for available themes.""" cls.themepath = list(theme_path) cls.themepath.append(path.join(package_dir, 'themes')) @@ -49,7 +56,7 @@ class Theme(object): for theme in os.listdir(themedir): if theme.lower().endswith('.zip'): try: - zfile = zipfile.ZipFile(path.join(themedir, theme)) + zfile = zipfile.ZipFile(path.join(themedir, theme)) # type: ignore if THEMECONF not in zfile.namelist(): continue tname = theme[:-4] @@ -68,6 +75,7 @@ class Theme(object): @classmethod def load_extra_theme(cls, name): + # type: (unicode) -> None themes = ['alabaster'] try: import sphinx_rtd_theme @@ -98,6 +106,7 @@ class Theme(object): return def __init__(self, name, warn=None): + # type: (unicode, Callable) -> None if name not in self.themes: self.load_extra_theme(name) if name not in self.themes: @@ -156,6 +165,7 @@ class Theme(object): self.base = Theme(inherit, warn=warn) def get_confstr(self, section, name, default=NODEFAULT): + # type: (unicode, unicode, Any) -> Any """Return the value for a theme configuration setting, searching the base theme chain. """ @@ -171,13 +181,14 @@ class Theme(object): return default def get_options(self, overrides): + # type: (Dict) -> Any """Return a dictionary of theme options and their values.""" chain = [self.themeconf] base = self.base while base is not None: chain.append(base.themeconf) base = base.base - options = {} + options = {} # type: Dict[unicode, Any] for conf in reversed(chain): try: options.update(conf.items('options')) @@ -190,6 +201,7 @@ class Theme(object): return options def get_dirchain(self): + # type: () -> List[unicode] """Return a list of theme directories, beginning with this theme's, then the base theme's, then that one's base theme's, etc. """ @@ -201,6 +213,7 @@ class Theme(object): return chain def cleanup(self): + # type: () -> None """Remove temporary directories.""" if self.themedir_created: try: @@ -212,6 +225,7 @@ class Theme(object): def load_theme_plugins(): + # type: () -> List[unicode] """load plugins by using``sphinx_themes`` section in setuptools entry_points. This API will return list of directory that contain some theme directory. """ @@ -219,7 +233,7 @@ def load_theme_plugins(): if not pkg_resources: return [] - theme_paths = [] + theme_paths = [] # type: List[unicode] for plugin in pkg_resources.iter_entry_points('sphinx_themes'): func_or_path = plugin.load() @@ -229,7 +243,7 @@ def load_theme_plugins(): path = func_or_path if isinstance(path, string_types): - theme_paths.append(path) + theme_paths.append(path) # type: ignore else: raise ThemeError('Plugin %r does not response correctly.' % plugin.module_name) diff --git a/sphinx/transforms/__init__.py b/sphinx/transforms/__init__.py index 79ac99c9f..68e45d62d 100644 --- a/sphinx/transforms/__init__.py +++ b/sphinx/transforms/__init__.py @@ -33,6 +33,7 @@ class DefaultSubstitutions(Transform): default_priority = 210 def apply(self): + # type: () -> None env = self.document.settings.env config = self.document.settings.env.config # only handle those not otherwise defined in the document @@ -58,6 +59,7 @@ class MoveModuleTargets(Transform): default_priority = 210 def apply(self): + # type: () -> None for node in self.document.traverse(nodes.target): if not node['ids']: continue @@ -76,6 +78,7 @@ class HandleCodeBlocks(Transform): default_priority = 210 def apply(self): + # type: () -> None # move doctest blocks out of blockquotes for node in self.document.traverse(nodes.block_quote): if all(isinstance(child, nodes.doctest_block) for child @@ -100,6 +103,7 @@ class AutoNumbering(Transform): default_priority = 210 def apply(self): + # type: () -> None domain = self.document.settings.env.domains['std'] for node in self.document.traverse(nodes.Element): @@ -114,6 +118,7 @@ class SortIds(Transform): default_priority = 261 def apply(self): + # type: () -> None for node in self.document.traverse(nodes.section): if len(node['ids']) > 1 and node['ids'][0].startswith('id'): node['ids'] = node['ids'][1:] + [node['ids'][0]] @@ -127,6 +132,7 @@ class CitationReferences(Transform): default_priority = 619 def apply(self): + # type: () -> None for citnode in self.document.traverse(nodes.citation_reference): cittext = citnode.astext() refnode = addnodes.pending_xref(cittext, refdomain='std', reftype='citation', @@ -154,6 +160,7 @@ class ApplySourceWorkaround(Transform): default_priority = 10 def apply(self): + # type: () -> None for n in self.document.traverse(): if isinstance(n, nodes.TextElement): apply_source_workaround(n) @@ -166,6 +173,7 @@ class AutoIndexUpgrader(Transform): default_priority = 210 def apply(self): + # type: () -> None env = self.document.settings.env for node in self.document.traverse(addnodes.index): if 'entries' in node and any(len(entry) == 4 for entry in node['entries']): @@ -184,12 +192,14 @@ class ExtraTranslatableNodes(Transform): default_priority = 10 def apply(self): + # type: () -> None targets = self.document.settings.env.config.gettext_additional_targets target_nodes = [v for k, v in TRANSLATABLE_NODES.items() if k in targets] if not target_nodes: return def is_translatable_node(node): + # type: (nodes.Node) -> bool return isinstance(node, tuple(target_nodes)) for node in self.document.traverse(is_translatable_node): @@ -201,6 +211,7 @@ class FilterSystemMessages(Transform): default_priority = 999 def apply(self): + # type: () -> None env = self.document.settings.env filterlevel = env.config.keep_warnings and 2 or 5 for node in self.document.traverse(nodes.system_message): @@ -215,9 +226,11 @@ class SphinxContentsFilter(ContentsFilter): within table-of-contents link nodes. """ def visit_pending_xref(self, node): + # type: (nodes.Node) -> None text = node.astext() self.parent.append(nodes.literal(text, text)) raise nodes.SkipNode def visit_image(self, node): + # type: (nodes.Node) -> None raise nodes.SkipNode diff --git a/sphinx/transforms/compact_bullet_list.py b/sphinx/transforms/compact_bullet_list.py index 61b23f382..0fe2e8b83 100644 --- a/sphinx/transforms/compact_bullet_list.py +++ b/sphinx/transforms/compact_bullet_list.py @@ -23,12 +23,15 @@ class RefOnlyListChecker(nodes.GenericNodeVisitor): """ def default_visit(self, node): + # type: (nodes.Node) -> None raise nodes.NodeFound def visit_bullet_list(self, node): + # type: (nodes.Node) -> None pass def visit_list_item(self, node): + # type: (nodes.Node) -> None children = [] for child in node.children: if not isinstance(child, nodes.Invisible): @@ -45,6 +48,7 @@ class RefOnlyListChecker(nodes.GenericNodeVisitor): raise nodes.SkipChildren def invisible_visit(self, node): + # type: (nodes.Node) -> None """Invisible nodes should be ignored.""" pass @@ -58,11 +62,13 @@ class RefOnlyBulletListTransform(Transform): default_priority = 100 def apply(self): + # type: () -> None env = self.document.settings.env if env.config.html_compact_lists: return def check_refonly_list(node): + # type: (nodes.Node) -> bool """Check for list with only references in it.""" visitor = RefOnlyListChecker(self.document) try: diff --git a/sphinx/transforms/i18n.py b/sphinx/transforms/i18n.py index 38c5aef25..693ae663e 100644 --- a/sphinx/transforms/i18n.py +++ b/sphinx/transforms/i18n.py @@ -27,8 +27,15 @@ from sphinx.util.pycompat import indent from sphinx.locale import init as init_locale from sphinx.domains.std import make_glossary_term, split_term_classifiers +if False: + # For type annotation + from typing import Any, Tuple # NOQA + from sphinx.application import Sphinx # NOQA + from sphinx.config import Config # NOQA + def publish_msgstr(app, source, source_path, source_line, config, settings): + # type: (Sphinx, unicode, unicode, int, Config, Dict) -> nodes.document """Publish msgstr (single line) into docutils document :param sphinx.application.Sphinx app: sphinx application @@ -66,6 +73,7 @@ class PreserveTranslatableMessages(Transform): default_priority = 10 # this MUST be invoked before Locale transform def apply(self): + # type: () -> None for node in self.document.traverse(addnodes.translatable): node.preserve_original_messages() @@ -77,6 +85,7 @@ class Locale(Transform): default_priority = 20 def apply(self): + # type: () -> None env = self.document.settings.env settings, source = self.document.settings, self.document['source'] # XXX check if this is reliable @@ -176,6 +185,7 @@ class Locale(Transform): # replace target's refname to new target name def is_named_target(node): + # type: (nodes.Node) -> bool return isinstance(node, nodes.target) and \ node.get('refname') == old_name for old_target in self.document.traverse(is_named_target): @@ -249,10 +259,12 @@ class Locale(Transform): # auto-numbered foot note reference should use original 'ids'. def is_autonumber_footnote_ref(node): + # type: (nodes.Node) -> bool return isinstance(node, nodes.footnote_reference) and \ node.get('auto') == 1 def list_replace_or_append(lst, old, new): + # type: (List, Any, Any) -> None if old in lst: lst[lst.index(old)] = new else: @@ -262,7 +274,7 @@ class Locale(Transform): if len(old_foot_refs) != len(new_foot_refs): env.warn_node('inconsistent footnote references in ' 'translated message', node) - old_foot_namerefs = {} + old_foot_namerefs = {} # type: Dict[unicode, List[nodes.footnote_reference]] for r in old_foot_refs: old_foot_namerefs.setdefault(r.get('refname'), []).append(r) for new in new_foot_refs: @@ -315,6 +327,7 @@ class Locale(Transform): # refnamed footnote and citation should use original 'ids'. def is_refnamed_footnote_ref(node): + # type: (nodes.Node) -> bool footnote_ref_classes = (nodes.footnote_reference, nodes.citation_reference) return isinstance(node, footnote_ref_classes) and \ @@ -343,6 +356,7 @@ class Locale(Transform): 'translated message', node) def get_ref_key(node): + # type: (nodes.Node) -> Tuple[unicode, unicode, unicode] case = node["refdomain"], node["reftype"] if case == ('std', 'term'): return None @@ -384,7 +398,7 @@ class Locale(Transform): if 'index' in env.config.gettext_additional_targets: # Extract and translate messages for index entries. for node, entries in traverse_translatable_index(self.document): - new_entries = [] + new_entries = [] # type: List[Tuple[unicode, unicode, unicode, unicode, unicode]] # NOQA for type, msg, tid, main, key_ in entries: msg_parts = split_index_msg(type, msg) msgstr_parts = [] @@ -407,6 +421,7 @@ class RemoveTranslatableInline(Transform): default_priority = 999 def apply(self): + # type: () -> None from sphinx.builders.gettext import MessageCatalogBuilder env = self.document.settings.env builder = env.app.builder diff --git a/sphinx/versioning.py b/sphinx/versioning.py index f6c446b4f..0f862ac67 100644 --- a/sphinx/versioning.py +++ b/sphinx/versioning.py @@ -16,6 +16,11 @@ from itertools import product from six import iteritems from six.moves import range, zip_longest +if False: + # For type annotation + from typing import Any, Iterator # NOQA + from docutils import nodes # NOQA + try: import Levenshtein IS_SPEEDUP = True @@ -27,6 +32,7 @@ VERSIONING_RATIO = 65 def add_uids(doctree, condition): + # type: (nodes.Node, Any) -> Iterator[nodes.Node] """Add a unique id to every node in the `doctree` which matches the condition and yield the nodes. @@ -42,6 +48,7 @@ def add_uids(doctree, condition): def merge_doctrees(old, new, condition): + # type: (nodes.Node, nodes.Node, Any) -> Iterator[nodes.Node] """Merge the `old` doctree with the `new` one while looking at nodes matching the `condition`. @@ -90,7 +97,7 @@ def merge_doctrees(old, new, condition): # choose the old node with the best ratio for each new node and set the uid # as long as the ratio is under a certain value, in which case we consider # them not changed but different - ratios = sorted(iteritems(ratios), key=itemgetter(1)) + ratios = sorted(iteritems(ratios), key=itemgetter(1)) # type: ignore for (old_node, new_node), ratio in ratios: if new_node in seen: continue @@ -109,6 +116,7 @@ def merge_doctrees(old, new, condition): def get_ratio(old, new): + # type: (unicode, unicode) -> float """Return a "similiarity ratio" (in percent) representing the similarity between the two strings where 0 is equal and anything above less than equal. """ @@ -122,6 +130,7 @@ def get_ratio(old, new): def levenshtein_distance(a, b): + # type: (unicode, unicode) -> int """Return the Levenshtein edit distance between two strings *a* and *b*.""" if a == b: return 0 @@ -137,5 +146,5 @@ def levenshtein_distance(a, b): deletions = current_row[j] + 1 substitutions = previous_row[j] + (column1 != column2) current_row.append(min(insertions, deletions, substitutions)) - previous_row = current_row + previous_row = current_row # type: ignore return previous_row[-1] diff --git a/sphinx/websupport/__init__.py b/sphinx/websupport/__init__.py index 69914da95..f7b215f83 100644 --- a/sphinx/websupport/__init__.py +++ b/sphinx/websupport/__init__.py @@ -66,7 +66,7 @@ class WebSupport(object): self._init_search(search) self._init_storage(storage) - self._globalcontext = None + self._globalcontext = None # type: ignore self._make_base_comment_options() @@ -119,7 +119,7 @@ class WebSupport(object): raise RuntimeError('No srcdir associated with WebSupport object') app = Sphinx(self.srcdir, self.srcdir, self.outdir, self.doctreedir, 'websupport', status=self.status, warning=self.warning) - app.builder.set_webinfo(self.staticdir, self.staticroot, + app.builder.set_webinfo(self.staticdir, self.staticroot, # type: ignore self.search, self.storage) self.storage.pre_build() @@ -384,7 +384,7 @@ class WebSupport(object): that remains the same throughout the lifetime of the :class:`~sphinx.websupport.WebSupport` object. """ - self.base_comment_opts = {} + self.base_comment_opts = {} # type: Dict[unicode, unicode] if self.docroot != '': comment_urls = [ diff --git a/sphinx/websupport/storage/sqlalchemy_db.py b/sphinx/websupport/storage/sqlalchemy_db.py index b412ad488..16418ec8f 100644 --- a/sphinx/websupport/storage/sqlalchemy_db.py +++ b/sphinx/websupport/storage/sqlalchemy_db.py @@ -14,7 +14,7 @@ from datetime import datetime from sqlalchemy import Column, Integer, Text, String, Boolean, \ ForeignKey, DateTime -from sqlalchemy.orm import relation, sessionmaker, aliased +from sqlalchemy.orm import relation, sessionmaker, aliased # type: ignore from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() @@ -23,7 +23,7 @@ Session = sessionmaker() db_prefix = 'sphinx_' -class Node(Base): +class Node(Base): # type: ignore """Data about a Node in a doctree.""" __tablename__ = db_prefix + 'nodes' @@ -74,7 +74,7 @@ class Node(Base): :param results: the flat list of comments :param username: the name of the user requesting the comments. """ - comments = [] + comments = [] # type: List list_stack = [comments] for r in results: if username: @@ -101,7 +101,7 @@ class Node(Base): self.source = source -class CommentVote(Base): +class CommentVote(Base): # type: ignore """A vote a user has made on a Comment.""" __tablename__ = db_prefix + 'commentvote' @@ -117,7 +117,7 @@ class CommentVote(Base): self.value = value -class Comment(Base): +class Comment(Base): # type: ignore """An individual Comment being stored.""" __tablename__ = db_prefix + 'comments' diff --git a/sphinx/websupport/storage/sqlalchemystorage.py b/sphinx/websupport/storage/sqlalchemystorage.py index c8794f75c..8b7d76714 100644 --- a/sphinx/websupport/storage/sqlalchemystorage.py +++ b/sphinx/websupport/storage/sqlalchemystorage.py @@ -12,7 +12,7 @@ from datetime import datetime import sqlalchemy -from sqlalchemy.orm import aliased +from sqlalchemy.orm import aliased # type: ignore from sqlalchemy.sql import func from sphinx.websupport.errors import CommentNotAllowedError, \ @@ -22,7 +22,7 @@ from sphinx.websupport.storage.sqlalchemy_db import Base, Node, \ Comment, CommentVote, Session from sphinx.websupport.storage.differ import CombinedHtmlDiff -if sqlalchemy.__version__[:3] < '0.5': +if sqlalchemy.__version__[:3] < '0.5': # type: ignore raise ImportError('SQLAlchemy version 0.5 or greater is required for this ' 'storage backend; you have version %s' % sqlalchemy.__version__) From 5663f750fe9e1f2cd8e766d3df3766462633f285 Mon Sep 17 00:00:00 2001 From: jfbu <jfbu@free.fr> Date: Thu, 17 Nov 2016 10:00:01 +0100 Subject: [PATCH 230/297] refactor multilingual (load user settings on top) --- sphinx/writers/latex.py | 38 ++++++++++++++++---------------------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index d224ae323..214f14fe9 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -109,6 +109,7 @@ ADDITIONAL_SETTINGS = { 'xelatex': { 'latex_engine': 'xelatex', 'polyglossia': '\\usepackage{polyglossia}', + 'babel': '', 'fontenc': '\\usepackage{fontspec}', 'fontpkg': '', 'utf8extra': ('\\catcode`^^^^00a0\\active\\protected\\def^^^^00a0' @@ -372,6 +373,11 @@ class LaTeXTranslator(nodes.NodeVisitor): # sort out some elements self.elements = DEFAULT_SETTINGS.copy() self.elements.update(ADDITIONAL_SETTINGS.get(builder.config.latex_engine, {})) + # allow the user to override them all + self.check_latex_elements() + self.elements.update(builder.config.latex_elements) + + # but some have other interface in config file self.elements.update({ 'wrapperclass': self.format_docclass(document.settings.docclass), # if empty, the title is set to the first section title @@ -398,7 +404,8 @@ class LaTeXTranslator(nodes.NodeVisitor): self.elements['logo'] = '\\sphinxincludegraphics{%s}\\par' % \ path.basename(builder.config.latex_logo) - if builder.config.language: + if builder.config.language \ + and 'fncychap' not in builder.config.latex_elements: # use Sonny style if any language specified self.elements['fncychap'] = '\\usepackage[Sonny]{fncychap}' @@ -414,17 +421,16 @@ class LaTeXTranslator(nodes.NodeVisitor): self.elements['classoptions'] += ',' + self.babel.get_language() # set up multilingual module... - if self.elements['polyglossia']: - self.elements['babel'] = '' # disable babel - self.elements['multilingual'] = '%s\n\\setmainlanguage{%s}' % \ - (self.elements['polyglossia'], self.babel.get_language()) - elif self.elements['babel']: + # 'babel' key is public and user setting must be obeyed + if self.elements['babel']: + # this branch is not taken for xelatex with writer default settings self.elements['multilingual'] = self.elements['babel'] if builder.config.language: self.elements['shorthandoff'] = self.babel.get_shorthandoff() # Times fonts don't work with Cyrillic languages - if self.babel.uses_cyrillic(): + if self.babel.uses_cyrillic() \ + and 'fontpkg' not in builder.config.latex_elements: self.elements['fontpkg'] = '' # pTeX (Japanese TeX) for support @@ -436,12 +442,9 @@ class LaTeXTranslator(nodes.NodeVisitor): self.elements['multilingual'] = '' # disable fncychap in Japanese documents self.elements['fncychap'] = '' - - # set 'babel' to improbable value to detect if user has used it - if self.elements['babel']: - self.elements['babel'] = '3.1415' - else: - self.elements['babel'] = '2.7182' + elif self.elements['polyglossia']: + self.elements['multilingual'] = '%s\n\\setmainlanguage{%s}' % \ + (self.elements['polyglossia'], self.babel.get_language()) if getattr(builder, 'usepackages', None): def declare_package(packagename, options=None): @@ -468,15 +471,6 @@ class LaTeXTranslator(nodes.NodeVisitor): if tocdepth >= SECNUMDEPTH: # Increase secnumdepth if tocdepth is depther than default SECNUMDEPTH self.elements['secnumdepth'] = '\\setcounter{secnumdepth}{%d}' % tocdepth - # allow the user to override them all - self.check_latex_elements() - self.elements.update(builder.config.latex_elements) - - if self.elements['babel'] != '3.1415': - if self.elements['babel'] != '2.7182': - self.elements['multilingual'] = self.elements['babel'] - else: - self.elements['babel'] = '' if getattr(document.settings, 'contentsname', None): self.elements['contentsname'] = \ From 8e1db118c0da8a7d6872baf933a2439353b80044 Mon Sep 17 00:00:00 2001 From: jfbu <jfbu@free.fr> Date: Thu, 17 Nov 2016 10:01:46 +0100 Subject: [PATCH 231/297] polyglossia honors ``\addto\captions<language>`` like babel --- sphinx/writers/latex.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 214f14fe9..8d3eef097 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -590,7 +590,7 @@ class LaTeXTranslator(nodes.NodeVisitor): return self.idescape(ref).replace('-', '\\string-') def babel_renewcommand(self, command, definition): - if self.elements['babel']: + if self.elements['multilingual']: prefix = '\\addto\\captions%s{' % self.babel.get_language() suffix = '}' else: # babel is disabled (mainly for Japanese environment) From 308d3aee89046d1dc893a04d3cd6f97d4a1454f9 Mon Sep 17 00:00:00 2001 From: jfbu <jfbu@free.fr> Date: Thu, 17 Nov 2016 10:12:53 +0100 Subject: [PATCH 232/297] make shorthandoff extra safe also for turkish (perhaps xelatex+babel+turkish may not use active ``=`` either now or in future) --- sphinx/writers/latex.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 8d3eef097..454c30e9c 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -175,7 +175,7 @@ class ExtBabel(Babel): 'italian'): return '\\if\\catcode`\\"\\active\\shorthandoff{"}\\fi' elif shortlang in ('tr', 'turkish'): - return '\\shorthandoff{=}' + return '\\if\\catcode`\\=\\active\\shorthandoff{=}\\fi' return '' def uses_cyrillic(self): From c5ce00b448a92a70188366c435a3cb687a9d77b3 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Thu, 17 Nov 2016 20:28:34 +0900 Subject: [PATCH 233/297] Remove meaningless commas --- sphinx/builders/applehelp.py | 4 ++-- sphinx/ext/inheritance_diagram.py | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/sphinx/builders/applehelp.py b/sphinx/builders/applehelp.py index 7db086953..d199f33b7 100644 --- a/sphinx/builders/applehelp.py +++ b/sphinx/builders/applehelp.py @@ -286,10 +286,10 @@ def setup(app): app.add_config_value('applehelp_title', lambda self: self.project + ' Help', 'applehelp') app.add_config_value('applehelp_codesign_identity', lambda self: environ.get('CODE_SIGN_IDENTITY', None), - 'applehelp'), + 'applehelp') app.add_config_value('applehelp_codesign_flags', lambda self: shlex.split(environ.get('OTHER_CODE_SIGN_FLAGS', '')), - 'applehelp'), + 'applehelp') app.add_config_value('applehelp_indexer_path', '/usr/bin/hiutil', 'applehelp') app.add_config_value('applehelp_codesign_path', '/usr/bin/codesign', 'applehelp') app.add_config_value('applehelp_disable_external_tools', False, None) diff --git a/sphinx/ext/inheritance_diagram.py b/sphinx/ext/inheritance_diagram.py index 11af67dc5..f37786a0e 100644 --- a/sphinx/ext/inheritance_diagram.py +++ b/sphinx/ext/inheritance_diagram.py @@ -420,7 +420,7 @@ def setup(app): man=(skip, None), texinfo=(texinfo_visit_inheritance_diagram, None)) app.add_directive('inheritance-diagram', InheritanceDiagram) - app.add_config_value('inheritance_graph_attrs', {}, False), - app.add_config_value('inheritance_node_attrs', {}, False), - app.add_config_value('inheritance_edge_attrs', {}, False), + app.add_config_value('inheritance_graph_attrs', {}, False) + app.add_config_value('inheritance_node_attrs', {}, False) + app.add_config_value('inheritance_edge_attrs', {}, False) return {'version': sphinx.__display_version__, 'parallel_read_safe': True} From 6c6ea35524886480bd9511b0e0002a96167e3732 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Thu, 17 Nov 2016 20:29:55 +0900 Subject: [PATCH 234/297] Use boolean value to Sphinx.info() --- sphinx/application.py | 6 +++--- sphinx/environment/__init__.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sphinx/application.py b/sphinx/application.py index 93f12f3b6..f8074048b 100644 --- a/sphinx/application.py +++ b/sphinx/application.py @@ -463,9 +463,9 @@ class Sphinx(object): l = 0 for item in iterable: if l == 0: - self.info(bold(summary), nonl=1) + self.info(bold(summary), nonl=True) l = 1 - self.info(colorfunc(stringify_func(item)) + ' ', nonl=1) + self.info(colorfunc(stringify_func(item)) + ' ', nonl=True) yield item if l == 1: self.info() @@ -488,7 +488,7 @@ class Sphinx(object): s += '\n' else: s = term_width_line(s) - self.info(s, nonl=1) + self.info(s, nonl=True) yield item if l > 0: self.info() diff --git a/sphinx/environment/__init__.py b/sphinx/environment/__init__.py index d750b0284..f5cd1550b 100644 --- a/sphinx/environment/__init__.py +++ b/sphinx/environment/__init__.py @@ -494,7 +494,7 @@ class BuildEnvironment(object): # this cache also needs to be updated every time self._nitpick_ignore = set(self.config.nitpick_ignore) - app.info(bold('updating environment: '), nonl=1) + app.info(bold('updating environment: '), nonl=True) added, changed, removed = self.get_outdated_files(config_changed) From bc329dcc711f98fef371d6961f9d4faed0a35a94 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Thu, 17 Nov 2016 20:32:45 +0900 Subject: [PATCH 235/297] Remove return syntax if retval is unexpected --- sphinx/application.py | 2 +- sphinx/builders/epub.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sphinx/application.py b/sphinx/application.py index f8074048b..cee780c9c 100644 --- a/sphinx/application.py +++ b/sphinx/application.py @@ -301,7 +301,7 @@ class Sphinx(object): self.info('not yet created') else: self.info('failed: %s' % err) - return self._init_env(freshenv=True) + self._init_env(freshenv=True) def _init_builder(self, buildername): if buildername is None: diff --git a/sphinx/builders/epub.py b/sphinx/builders/epub.py index b4b657468..0e1c844fe 100644 --- a/sphinx/builders/epub.py +++ b/sphinx/builders/epub.py @@ -413,7 +413,7 @@ class EpubBuilder(StandaloneHTMLBuilder): """ self.fix_ids(doctree) self.add_visible_links(doctree, self.config.epub_show_urls) - return StandaloneHTMLBuilder.write_doc(self, docname, doctree) + StandaloneHTMLBuilder.write_doc(self, docname, doctree) def fix_genindex(self, tree): """Fix href attributes for genindex pages.""" From b0a11d171c99d3719d11b6ab7885e885d63a75b9 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Thu, 17 Nov 2016 21:20:58 +0900 Subject: [PATCH 236/297] Use env.get_domain() instead env.domains[] --- sphinx/application.py | 2 +- sphinx/environment/managers/toctree.py | 2 +- sphinx/ext/intersphinx.py | 2 +- sphinx/transforms/__init__.py | 2 +- sphinx/util/docutils.py | 4 ++-- sphinx/writers/latex.py | 2 +- sphinx/writers/texinfo.py | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/sphinx/application.py b/sphinx/application.py index 08075d8e1..e8e212696 100644 --- a/sphinx/application.py +++ b/sphinx/application.py @@ -332,7 +332,7 @@ class Sphinx(object): def _init_enumerable_nodes(self): # type: () -> None for node, settings in iteritems(self.enumerable_nodes): - self.env.domains['std'].enumerable_nodes[node] = settings # type: ignore + self.env.get_domain('std').enumerable_nodes[node] = settings # type: ignore # ---- main "build" method ------------------------------------------------- diff --git a/sphinx/environment/managers/toctree.py b/sphinx/environment/managers/toctree.py index 195349d3e..26c8f385d 100644 --- a/sphinx/environment/managers/toctree.py +++ b/sphinx/environment/managers/toctree.py @@ -559,7 +559,7 @@ class Toctree(EnvironmentManager): continue - figtype = self.env.domains['std'].get_figtype(subnode) # type: ignore + figtype = self.env.get_domain('std').get_figtype(subnode) # type: ignore if figtype and subnode['ids']: register_fignumber(docname, secnum, figtype, subnode) diff --git a/sphinx/ext/intersphinx.py b/sphinx/ext/intersphinx.py index df561204e..42aafdf94 100644 --- a/sphinx/ext/intersphinx.py +++ b/sphinx/ext/intersphinx.py @@ -341,7 +341,7 @@ def missing_reference(app, env, node, contnode): if not domain: # only objects in domains are in the inventory return - objtypes = env.domains[domain].objtypes_for_role(node['reftype']) + objtypes = env.get_domain(domain).objtypes_for_role(node['reftype']) if not objtypes: return objtypes = ['%s:%s' % (domain, objtype) for objtype in objtypes] diff --git a/sphinx/transforms/__init__.py b/sphinx/transforms/__init__.py index 68e45d62d..ab8f86500 100644 --- a/sphinx/transforms/__init__.py +++ b/sphinx/transforms/__init__.py @@ -104,7 +104,7 @@ class AutoNumbering(Transform): def apply(self): # type: () -> None - domain = self.document.settings.env.domains['std'] + domain = self.document.settings.env.get_domain('std') for node in self.document.traverse(nodes.Element): if domain.is_enumerable_node(node) and domain.get_numfig_title(node) is not None: diff --git a/sphinx/util/docutils.py b/sphinx/util/docutils.py index a18d0b560..286b2729b 100644 --- a/sphinx/util/docutils.py +++ b/sphinx/util/docutils.py @@ -77,7 +77,7 @@ class sphinx_domains(object): if ':' in name: domain_name, name = name.split(':', 1) if domain_name in self.env.domains: - domain = self.env.domains[domain_name] + domain = self.env.get_domain(domain_name) element = getattr(domain, type)(name) if element is not None: return element, [] @@ -90,7 +90,7 @@ class sphinx_domains(object): return element, [] # always look in the std domain - element = getattr(self.env.domains['std'], type)(name) + element = getattr(self.env.get_domain('std'), type)(name) if element is not None: return element, [] diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index e084c0b49..9bae7a4b4 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -1812,7 +1812,7 @@ class LaTeXTranslator(nodes.NodeVisitor): self.next_section_ids.update(node['ids']) return else: - domain = self.builder.env.domains['std'] + domain = self.builder.env.get_domain('std') figtype = domain.get_figtype(next) if figtype and domain.get_numfig_title(next): ids = set() diff --git a/sphinx/writers/texinfo.py b/sphinx/writers/texinfo.py index 0a9a42aca..fbd8b17a5 100644 --- a/sphinx/writers/texinfo.py +++ b/sphinx/writers/texinfo.py @@ -1584,7 +1584,7 @@ class TexinfoTranslator(nodes.NodeVisitor): self.add_anchor(id, node) # use the full name of the objtype for the category try: - domain = self.builder.env.domains[node.parent['domain']] + domain = self.builder.env.get_domain(node.parent['domain']) primary = self.builder.config.primary_domain name = domain.get_type_name(domain.object_types[objtype], primary == domain.name) From 45e4417393ec04654e1769c0102072001a5c653b Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Thu, 17 Nov 2016 23:02:59 +0900 Subject: [PATCH 237/297] Handle ExtensionError on get_domain() --- sphinx/writers/texinfo.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sphinx/writers/texinfo.py b/sphinx/writers/texinfo.py index fbd8b17a5..76d963554 100644 --- a/sphinx/writers/texinfo.py +++ b/sphinx/writers/texinfo.py @@ -20,6 +20,7 @@ from six.moves import range from docutils import nodes, writers from sphinx import addnodes, __display_version__ +from sphinx.errors import ExtensionError from sphinx.locale import admonitionlabels, _ from sphinx.util.i18n import format_date from sphinx.writers.latex import collected_footnote @@ -1588,7 +1589,7 @@ class TexinfoTranslator(nodes.NodeVisitor): primary = self.builder.config.primary_domain name = domain.get_type_name(domain.object_types[objtype], primary == domain.name) - except KeyError: + except ExtensionError: name = objtype # by convention, the deffn category should be capitalized like a title category = self.escape_arg(smart_capwords(name)) From 8006d31b32916bdc57dda1faa42605088a4a0c6d Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Wed, 16 Nov 2016 23:23:18 +0900 Subject: [PATCH 238/297] Fix #3095: Add tls_verify and tls_cacerts to support self-signed servers --- CHANGES | 3 ++ doc/config.rst | 15 +++++++++ sphinx/builders/linkcheck.py | 11 +++---- sphinx/config.py | 3 ++ sphinx/ext/intersphinx.py | 8 ++--- sphinx/util/requests.py | 60 +++++++++++++++++++++++++++++++++++- 6 files changed, 89 insertions(+), 11 deletions(-) diff --git a/CHANGES b/CHANGES index 0a0606a5a..e26fba64a 100644 --- a/CHANGES +++ b/CHANGES @@ -7,6 +7,9 @@ Incompatible changes Features added -------------- +* #3095: Add :confval:`tls_verify` and :confval:`tls_cacerts` to support + self-signed HTTPS servers in linkcheck and intersphinx + Bugs fixed ---------- diff --git a/doc/config.rst b/doc/config.rst index 34900535f..7f1f73186 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -318,6 +318,21 @@ General configuration .. versionadded:: 1.3 +.. confval:: tls_verify + + If true, Sphinx verifies server certifications. Default is ``True``. + + .. versionadded:: 1.5 + +.. confval:: tls_cacerts + + A path to a certification file of CA or a path to directory which + contains the certificates. This also allows a dictionary mapping + hostname to the path to certificate file. + The certificates are used to verify server certifications. + + .. versionadded:: 1.5 + Project information ------------------- diff --git a/sphinx/builders/linkcheck.py b/sphinx/builders/linkcheck.py index f49f4f9a3..5a1943f48 100644 --- a/sphinx/builders/linkcheck.py +++ b/sphinx/builders/linkcheck.py @@ -32,10 +32,10 @@ except ImportError: pass from sphinx.builders import Builder -from sphinx.util import encode_uri +from sphinx.util import encode_uri, requests from sphinx.util.console import purple, red, darkgreen, darkgray, \ darkred, turquoise -from sphinx.util.requests import requests, useragent_header, is_ssl_error +from sphinx.util.requests import is_ssl_error class AnchorCheckParser(HTMLParser): @@ -87,7 +87,6 @@ class CheckExternalLinksBuilder(Builder): self.good = set() self.broken = {} self.redirected = {} - self.headers = dict(useragent_header) # set a timeout for non-responding servers socket.setdefaulttimeout(5.0) # create output file @@ -131,7 +130,7 @@ class CheckExternalLinksBuilder(Builder): try: if anchor and self.app.config.linkcheck_anchors: # Read the whole document and see if #anchor exists - response = requests.get(req_url, stream=True, headers=self.headers, + response = requests.get(req_url, stream=True, config=self.app.config, **kwargs) found = check_anchor(response, unquote(anchor)) @@ -141,12 +140,12 @@ class CheckExternalLinksBuilder(Builder): try: # try a HEAD request first, which should be easier on # the server and the network - response = requests.head(req_url, headers=self.headers, **kwargs) + response = requests.head(req_url, config=self.app.config, **kwargs) response.raise_for_status() except HTTPError as err: # retry with GET request if that fails, some servers # don't like HEAD requests. - response = requests.get(req_url, stream=True, headers=self.headers, + response = requests.get(req_url, stream=True, config=self.app.config, **kwargs) response.raise_for_status() except HTTPError as err: diff --git a/sphinx/config.py b/sphinx/config.py index 5741d66bf..61516a1ff 100644 --- a/sphinx/config.py +++ b/sphinx/config.py @@ -112,6 +112,9 @@ class Config(object): 'code-block': l_('Listing %s')}, 'env'), + tls_verify = (True, 'env'), + tls_cacerts = (None, 'env'), + # pre-initialized confval for HTML builder html_translator_class = (None, 'html', string_classes), ) diff --git a/sphinx/ext/intersphinx.py b/sphinx/ext/intersphinx.py index 4ef7e4b9b..b7cc849a4 100644 --- a/sphinx/ext/intersphinx.py +++ b/sphinx/ext/intersphinx.py @@ -41,7 +41,7 @@ from docutils.utils import relative_path import sphinx from sphinx.locale import _ from sphinx.builders.html import INVENTORY_FILENAME -from sphinx.util.requests import requests, useragent_header +from sphinx.util import requests UTF8StreamReader = codecs.lookup('utf-8')[2] @@ -145,7 +145,7 @@ def _strip_basic_auth(url): return urlunsplit(frags) -def _read_from_url(url, timeout=None): +def _read_from_url(url, config=None): """Reads data from *url* with an HTTP *GET*. This function supports fetching from resources which use basic HTTP auth as @@ -161,7 +161,7 @@ def _read_from_url(url, timeout=None): :return: data read from resource described by *url* :rtype: ``file``-like object """ - r = requests.get(url, stream=True, timeout=timeout, headers=dict(useragent_header)) + r = requests.get(url, stream=True, config=config, timeout=config.intersphinx_timeout) r.raise_for_status() r.raw.url = r.url return r.raw @@ -202,7 +202,7 @@ def fetch_inventory(app, uri, inv): uri = _strip_basic_auth(uri) try: if '://' in inv: - f = _read_from_url(inv, timeout=app.config.intersphinx_timeout) + f = _read_from_url(inv, config=app.config) else: f = open(path.join(app.srcdir, inv), 'rb') except Exception as err: diff --git a/sphinx/util/requests.py b/sphinx/util/requests.py index 36ac1e0e7..e2ac94e80 100644 --- a/sphinx/util/requests.py +++ b/sphinx/util/requests.py @@ -14,7 +14,10 @@ from __future__ import absolute_import import requests import warnings import pkg_resources -from requests.packages.urllib3.exceptions import SSLError + +from six import string_types +from six.moves.urllib.parse import urlsplit +from requests.packages.urllib3.exceptions import SSLError, InsecureRequestWarning # try to load requests[security] try: @@ -45,6 +48,7 @@ useragent_header = [('User-Agent', def is_ssl_error(exc): + """Check an exception is SSLError.""" if isinstance(exc, SSLError): return True else: @@ -53,3 +57,57 @@ def is_ssl_error(exc): return True else: return False + + +def _get_tls_cacert(url, config): + """Get addiotinal CA cert for a specific URL. + + This also returns ``False`` if verification is disabled. + And returns ``True`` if additional CA cert not found. + """ + if not config.tls_verify: + return False + + certs = getattr(config, 'tls_cacerts', None) + if not certs: + return True + elif isinstance(certs, (string_types, tuple)): + return certs + else: + hostname = urlsplit(url)[1] + if '@' in hostname: + hostname = hostname.split('@')[1] + + return certs.get(hostname, True) + + +def get(url, **kwargs): + """Sends a GET request like requests.get(). + + This sets up User-Agent header and TLS verification automatically.""" + kwargs.setdefault('headers', dict(useragent_header)) + config = kwargs.pop('config', None) + if config: + kwargs.setdefault('verify', _get_tls_cacert(url, config)) + + with warnings.catch_warnings(): + if not kwargs.get('verify'): + # ignore InsecureRequestWarning if verify=False + warnings.filterwarnings("ignore", category=InsecureRequestWarning) + return requests.get(url, **kwargs) + + +def head(url, **kwargs): + """Sends a HEAD request like requests.head(). + + This sets up User-Agent header and TLS verification automatically.""" + kwargs.setdefault('headers', dict(useragent_header)) + config = kwargs.pop('config', None) + if config: + kwargs.setdefault('verify', _get_tls_cacert(url, config)) + + with warnings.catch_warnings(): + if not kwargs.get('verify'): + # ignore InsecureRequestWarning if verify=False + warnings.filterwarnings("ignore", category=InsecureRequestWarning) + return requests.get(url, **kwargs) From 1a4c41a7691e8f78d42e2db221192962c53b27df Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Thu, 17 Nov 2016 23:50:35 +0900 Subject: [PATCH 239/297] Fix texinfo writer handles KeyError --- sphinx/writers/texinfo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sphinx/writers/texinfo.py b/sphinx/writers/texinfo.py index 76d963554..6311d3b84 100644 --- a/sphinx/writers/texinfo.py +++ b/sphinx/writers/texinfo.py @@ -1589,7 +1589,7 @@ class TexinfoTranslator(nodes.NodeVisitor): primary = self.builder.config.primary_domain name = domain.get_type_name(domain.object_types[objtype], primary == domain.name) - except ExtensionError: + except (KeyError, ExtensionError): name = objtype # by convention, the deffn category should be capitalized like a title category = self.escape_arg(smart_capwords(name)) From 7a29b741a348b534a53a2983f0f240dba95a87ab Mon Sep 17 00:00:00 2001 From: jfbu <jfbu@free.fr> Date: Thu, 17 Nov 2016 19:28:02 +0100 Subject: [PATCH 240/297] Update CHANGES for PR#3124 --- CHANGES | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGES b/CHANGES index 0a0606a5a..5c7fd36f6 100644 --- a/CHANGES +++ b/CHANGES @@ -10,6 +10,9 @@ Features added Bugs fixed ---------- +* #3069: Even if ``'babel'`` key is set to empty string, LaTeX output contains + one ``\addto\captions...`` + Release 1.5 beta1 (released Nov 6, 2016) ======================================== From 12507384ae16e933032d3429cca9fddad0ea6d7a Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Fri, 18 Nov 2016 11:38:48 +0900 Subject: [PATCH 241/297] Fix #3155: Fix JavaScript for `html_sourcelink_suffix` fails with IE and Opera --- CHANGES | 1 + sphinx/themes/basic/static/searchtools.js_t | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 5c7fd36f6..ffc18f18e 100644 --- a/CHANGES +++ b/CHANGES @@ -12,6 +12,7 @@ Bugs fixed * #3069: Even if ``'babel'`` key is set to empty string, LaTeX output contains one ``\addto\captions...`` +* #3155: Fix JavaScript for `html_sourcelink_suffix` fails with IE and Opera Release 1.5 beta1 (released Nov 6, 2016) ======================================== diff --git a/sphinx/themes/basic/static/searchtools.js_t b/sphinx/themes/basic/static/searchtools.js_t index f521c3794..3d434853f 100644 --- a/sphinx/themes/basic/static/searchtools.js_t +++ b/sphinx/themes/basic/static/searchtools.js_t @@ -261,7 +261,7 @@ var Search = { }); } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) { var suffix = DOCUMENTATION_OPTIONS.SOURCELINK_SUFFIX; - $.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[5] + (item[5].endsWith(suffix) ? '' : suffix), + $.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[5] + (item[5].slice(-suffix.length) === suffix ? '' : suffix), dataType: "text", complete: function(jqxhr, textstatus) { var data = jqxhr.responseText; From 8a1703c94463c4de53e31a304b6e25586d771b52 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Fri, 18 Nov 2016 12:11:01 +0900 Subject: [PATCH 242/297] Fix #2986: ``themes/basic/defindex.html`` is now deprecated --- CHANGES | 2 ++ sphinx/builders/html.py | 1 + sphinx/themes/basic/defindex.html | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index ffc18f18e..d154fc65a 100644 --- a/CHANGES +++ b/CHANGES @@ -4,6 +4,8 @@ Release 1.5 beta2 (in development) Incompatible changes -------------------- +* #2986: ``themes/basic/defindex.html`` is now deprecated + Features added -------------- diff --git a/sphinx/builders/html.py b/sphinx/builders/html.py index e13d752d7..50a5caef6 100644 --- a/sphinx/builders/html.py +++ b/sphinx/builders/html.py @@ -353,6 +353,7 @@ class StandaloneHTMLBuilder(Builder): parents = [], logo = logo, favicon = favicon, + warn = self.warn ) if self.theme: self.globalcontext.update( diff --git a/sphinx/themes/basic/defindex.html b/sphinx/themes/basic/defindex.html index 33becfa0d..190680724 100644 --- a/sphinx/themes/basic/defindex.html +++ b/sphinx/themes/basic/defindex.html @@ -6,7 +6,7 @@ :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. -#} +#}{{ warn('Now base template defindex.html is deprecated.') }} {%- extends "layout.html" %} {% set title = _('Overview') %} {% block body %} From 5a606ee96a9c14924c78a1e3072c72997baf267b Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Fri, 18 Nov 2016 13:49:31 +0900 Subject: [PATCH 243/297] Fix HTML helper method should set up in handle_page() --- sphinx/builders/html.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sphinx/builders/html.py b/sphinx/builders/html.py index 50a5caef6..4fbbff153 100644 --- a/sphinx/builders/html.py +++ b/sphinx/builders/html.py @@ -353,7 +353,6 @@ class StandaloneHTMLBuilder(Builder): parents = [], logo = logo, favicon = favicon, - warn = self.warn ) if self.theme: self.globalcontext.update( @@ -774,6 +773,7 @@ class StandaloneHTMLBuilder(Builder): def handle_page(self, pagename, addctx, templatename='page.html', outfilename=None, event_arg=None): ctx = self.globalcontext.copy() + ctx['warn'] = self.warn # current_page_name is backwards compatibility ctx['pagename'] = ctx['current_page_name'] = pagename default_baseuri = self.get_target_uri(pagename) From 9569c6dbff8e9bb2cc032ec4bc7ebdd50c4b570e Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Thu, 17 Nov 2016 12:42:43 +0900 Subject: [PATCH 244/297] Add ``config-inited`` event --- sphinx/application.py | 6 +++++- sphinx/config.py | 9 +++++++++ sphinx/domains/std.py | 16 +++++++--------- sphinx/util/texescape.py | 10 ++++++++++ sphinx/writers/html.py | 2 +- sphinx/writers/latex.py | 23 +++++++++-------------- tests/roots/test-numfig/index.rst | 2 -- tests/test_build_html.py | 10 ---------- 8 files changed, 41 insertions(+), 37 deletions(-) diff --git a/sphinx/application.py b/sphinx/application.py index cee780c9c..c17cbb617 100644 --- a/sphinx/application.py +++ b/sphinx/application.py @@ -29,7 +29,7 @@ from docutils.parsers.rst import convert_directive_function, \ import sphinx from sphinx import package_dir, locale from sphinx.roles import XRefRole -from sphinx.config import Config +from sphinx.config import Config, convert_numfig_format from sphinx.errors import SphinxError, SphinxWarning, ExtensionError, \ VersionRequirementError, ConfigError from sphinx.domains import ObjType @@ -236,6 +236,7 @@ class Sphinx(object): self._init_i18n() # check all configuration values for permissible types self.config.check_types(self.warn) + self._post_init_config() # set up source_parsers self._init_source_parsers() # set up the build environment @@ -270,6 +271,9 @@ class Sphinx(object): else: self.info('not available for built-in messages') + def _post_init_config(self): + convert_numfig_format(self.config) + def _init_source_parsers(self): for suffix, parser in iteritems(self._additional_source_parsers): if suffix not in self.config.source_suffix: diff --git a/sphinx/config.py b/sphinx/config.py index 5741d66bf..1f1d6ec30 100644 --- a/sphinx/config.py +++ b/sphinx/config.py @@ -286,3 +286,12 @@ class Config(object): def __contains__(self, name): return name in self.values + + +def convert_numfig_format(config): + """ Convert numfi_format to new one. """ + + numfig_format = {} + for figtype, fmt in iteritems(config.numfig_format): + numfig_format[figtype] = fmt.replace('%s', '{number}') + config.numfig_format = numfig_format diff --git a/sphinx/domains/std.py b/sphinx/domains/std.py index b7f2597d4..f83afdab1 100644 --- a/sphinx/domains/std.py +++ b/sphinx/domains/std.py @@ -673,20 +673,18 @@ class StandardDomain(Domain): else: title = env.config.numfig_format.get(figtype, '') - if figname is None and '%{name}' in title: + # convert old styled numfig_format to new style + title = title.replace('%s', '{number}') + + if figname is None and '{name}' in title: env.warn_node('the link has no caption: %s' % title, node) return contnode else: fignum = '.'.join(map(str, fignumber)) - if '{name}' in title or 'number' in title: - # new style format (cf. "Fig.%{number}") - if figname: - newtitle = title.format(name=figname, number=fignum) - else: - newtitle = title.format(number=fignum) + if figname: + newtitle = title.format(name=figname, number=fignum) else: - # old style format (cf. "Fig.%s") - newtitle = title % fignum + newtitle = title.format(number=fignum) except KeyError as exc: env.warn_node('invalid numfig_format: %s (%r)' % (title, exc), node) return contnode diff --git a/sphinx/util/texescape.py b/sphinx/util/texescape.py index 0a3192f6a..861026b55 100644 --- a/sphinx/util/texescape.py +++ b/sphinx/util/texescape.py @@ -118,10 +118,17 @@ tex_replacements = [ ('Ω', r'\(\Omega\)'), ('Ω', r'\(\Omega\)'), ] +tex_pyformats = [ + # map special chars of str.format() to escaped one + ('{', '{{'), + ('}', '}}'), +] + tex_escape_map = {} tex_replace_map = {} tex_hl_escape_map_new = {} +tex_pyformat_map = {} def init(): @@ -133,3 +140,6 @@ def init(): if a in '[]{}\\': continue tex_hl_escape_map_new[ord(a)] = b + + for a, b in tex_pyformats: + tex_pyformat_map[ord(a)] = b diff --git a/sphinx/writers/html.py b/sphinx/writers/html.py index ba2b758d8..7dd286cf7 100644 --- a/sphinx/writers/html.py +++ b/sphinx/writers/html.py @@ -291,7 +291,7 @@ class HTMLTranslator(BaseTranslator): self.builder.warn(msg) else: numbers = self.builder.fignumbers[key][figure_id] - self.body.append(prefix % '.'.join(map(str, numbers)) + ' ') + self.body.append(prefix.format(number='.'.join(map(str, numbers))) + ' ') self.body.append('</span>') figtype = self.builder.env.domains['std'].get_figtype(node) diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index ca0f1a7dd..0a158297b 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -29,7 +29,7 @@ from sphinx.util import split_into from sphinx.util.i18n import format_date from sphinx.util.nodes import clean_astext, traverse_parent from sphinx.util.template import LaTeXRenderer -from sphinx.util.texescape import tex_escape_map, tex_replace_map +from sphinx.util.texescape import tex_escape_map, tex_replace_map, tex_pyformat_map from sphinx.util.smartypants import educate_quotes_latex @@ -610,7 +610,7 @@ class LaTeXTranslator(nodes.NodeVisitor): def generate_numfig_format(self, builder): ret = [] - figure = self.builder.config.numfig_format['figure'].split('%s', 1) + figure = self.builder.config.numfig_format['figure'].split('{number}', 1) if len(figure) == 1: ret.append('\\def\\fnum@figure{%s}\n' % escape_abbr(text_type(figure[0]).translate(tex_escape_map))) @@ -623,7 +623,7 @@ class LaTeXTranslator(nodes.NodeVisitor): escape_abbr(text_type(figure[1]).translate(tex_escape_map))) ret.append('\\makeatother\n') - table = self.builder.config.numfig_format['table'].split('%s', 1) + table = self.builder.config.numfig_format['table'].split('{number}', 1) if len(table) == 1: ret.append('\\def\\fnum@table{%s}\n' % escape_abbr(text_type(table[0]).translate(tex_escape_map))) @@ -636,7 +636,7 @@ class LaTeXTranslator(nodes.NodeVisitor): escape_abbr(text_type(table[1]).translate(tex_escape_map))) ret.append('\\makeatother\n') - codeblock = self.builder.config.numfig_format['code-block'].split('%s', 1) + codeblock = self.builder.config.numfig_format['code-block'].split('{number}', 1) if len(codeblock) == 1: pass # FIXME else: @@ -1789,16 +1789,11 @@ class LaTeXTranslator(nodes.NodeVisitor): else: id = node.get('refuri', '')[1:].replace('#', ':') - title = node.get('title', '%s') - title = text_type(title).translate(tex_escape_map).replace('\\%s', '%s') - if '\\{name\\}' in title or '\\{number\\}' in title: - # new style format (cf. "Fig.%{number}") - title = title.replace('\\{name\\}', '{name}').replace('\\{number\\}', '{number}') - text = escape_abbr(title).format(name='\\nameref{%s}' % self.idescape(id), - number='\\ref{%s}' % self.idescape(id)) - else: - # old style format (cf. "Fig.%{number}") - text = escape_abbr(title) % ('\\ref{%s}' % self.idescape(id)) + title = node.get('title', '{number}').replace('%s', '{number}') + title = text_type(title).translate(tex_escape_map).translate(tex_pyformat_map) + title = title.replace('\\{{name\\}}', '{name}').replace('\\{{number\\}}', '{number}') + text = escape_abbr(title).format(name='\\nameref{%s}' % self.idescape(id), + number='\\ref{%s}' % self.idescape(id)) hyperref = '\\hyperref[%s]{%s}' % (self.idescape(id), text) self.body.append(hyperref) diff --git a/tests/roots/test-numfig/index.rst b/tests/roots/test-numfig/index.rst index 939903839..499a1b7dc 100644 --- a/tests/roots/test-numfig/index.rst +++ b/tests/roots/test-numfig/index.rst @@ -53,7 +53,5 @@ test-tocdepth * Section.1 is :numref:`foo` * Section.2.1 is :numref:`bar_a` * Unnumbered section is :numref:`index` -* Invalid numfig_format 01: :numref:`invalid <fig1>` -* Invalid numfig_format 02: :numref:`Fig %s %s <fig1>` * Fig.1 is :numref:`Fig.{number} {name} <fig1>` * Section.1 is :numref:`Sect.{number} {name} <foo>` diff --git a/tests/test_build_html.py b/tests/test_build_html.py index d8aff88ab..176590f75 100644 --- a/tests/test_build_html.py +++ b/tests/test_build_html.py @@ -506,8 +506,6 @@ def test_numfig_disabled(app, status, warning): warnings = warning.getvalue() assert 'index.rst:47: WARNING: numfig is disabled. :numref: is ignored.' in warnings assert 'index.rst:55: WARNING: no number is assigned for section: index' not in warnings - assert 'index.rst:56: WARNING: invalid numfig_format: invalid' not in warnings - assert 'index.rst:57: WARNING: invalid numfig_format: Fig %s %s' not in warnings expects = { 'index.html': [ @@ -570,8 +568,6 @@ def test_numfig_without_numbered_toctree(app, status, warning): warnings = warning.getvalue() assert 'index.rst:47: WARNING: numfig is disabled. :numref: is ignored.' not in warnings assert 'index.rst:55: WARNING: no number is assigned for section: index' in warnings - assert 'index.rst:56: WARNING: invalid numfig_format: invalid' in warnings - assert 'index.rst:57: WARNING: invalid numfig_format: Fig %s %s' in warnings expects = { 'index.html': [ @@ -670,8 +666,6 @@ def test_numfig_with_numbered_toctree(app, status, warning): warnings = warning.getvalue() assert 'index.rst:47: WARNING: numfig is disabled. :numref: is ignored.' not in warnings assert 'index.rst:55: WARNING: no number is assigned for section: index' in warnings - assert 'index.rst:56: WARNING: invalid numfig_format: invalid' in warnings - assert 'index.rst:57: WARNING: invalid numfig_format: Fig %s %s' in warnings expects = { 'index.html': [ @@ -774,8 +768,6 @@ def test_numfig_with_prefix(app, status, warning): warnings = warning.getvalue() assert 'index.rst:47: WARNING: numfig is disabled. :numref: is ignored.' not in warnings assert 'index.rst:55: WARNING: no number is assigned for section: index' in warnings - assert 'index.rst:56: WARNING: invalid numfig_format: invalid' in warnings - assert 'index.rst:57: WARNING: invalid numfig_format: Fig %s %s' in warnings expects = { 'index.html': [ @@ -874,8 +866,6 @@ def test_numfig_with_secnum_depth(app, status, warning): warnings = warning.getvalue() assert 'index.rst:47: WARNING: numfig is disabled. :numref: is ignored.' not in warnings assert 'index.rst:55: WARNING: no number is assigned for section: index' in warnings - assert 'index.rst:56: WARNING: invalid numfig_format: invalid' in warnings - assert 'index.rst:57: WARNING: invalid numfig_format: Fig %s %s' in warnings expects = { 'index.html': [ From 987ebe4e1798ce6d23d4a27005ec87724f62ebd4 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Sat, 19 Nov 2016 13:00:11 +0900 Subject: [PATCH 245/297] Update CHANGES for PR#3124 --- CHANGES | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES b/CHANGES index d154fc65a..fba9c997a 100644 --- a/CHANGES +++ b/CHANGES @@ -14,6 +14,7 @@ Bugs fixed * #3069: Even if ``'babel'`` key is set to empty string, LaTeX output contains one ``\addto\captions...`` +* #3123: user ``'babel'`` key setting is not obeyed anymore * #3155: Fix JavaScript for `html_sourcelink_suffix` fails with IE and Opera Release 1.5 beta1 (released Nov 6, 2016) From d51ab948c0f3e645849173e20c29d13a04ecefa3 Mon Sep 17 00:00:00 2001 From: jfbu <jfbu@free.fr> Date: Sat, 19 Nov 2016 09:47:16 +0100 Subject: [PATCH 246/297] Add missing trailing space in French translation --- sphinx/locale/fr/LC_MESSAGES/sphinx.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sphinx/locale/fr/LC_MESSAGES/sphinx.po b/sphinx/locale/fr/LC_MESSAGES/sphinx.po index c476663be..2778dffec 100644 --- a/sphinx/locale/fr/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/fr/LC_MESSAGES/sphinx.po @@ -112,7 +112,7 @@ msgstr "Auteur du module : " #: sphinx/directives/other.py:153 msgid "Code author: " -msgstr "Auteur du code :" +msgstr "Auteur du code : " #: sphinx/directives/other.py:155 msgid "Author: " From 873fab53b4e4e995b679e79cae516eda98f75b4e Mon Sep 17 00:00:00 2001 From: Yoshiki Shibukawa <shibukawa.yoshiki@dena.jp> Date: Wed, 16 Nov 2016 11:59:04 +0900 Subject: [PATCH 247/297] fix #3150 --- .gitignore | 1 + CHANGES | 1 + sphinx/search/__init__.py | 4 +- sphinx/search/jssplitter.py | 110 +++++++++++++++ sphinx/themes/basic/static/searchtools.js_t | 10 +- utils/jssplitter_generator.py | 142 ++++++++++++++++++++ 6 files changed, 266 insertions(+), 2 deletions(-) create mode 100644 sphinx/search/jssplitter.py create mode 100644 utils/jssplitter_generator.py diff --git a/.gitignore b/.gitignore index be28908ec..9d163ff7b 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ Sphinx.egg-info/ doc/_build/ tests/.coverage tests/build/ +utils/regression_test.js diff --git a/CHANGES b/CHANGES index 1120e0d7b..49b0ca941 100644 --- a/CHANGES +++ b/CHANGES @@ -10,6 +10,7 @@ Bugs fixed * #3068: Allow the '=' character in the -D option of sphinx-build.py * #3074: ``add_source_parser()`` crashes in debug mode * #3135: ``sphinx.ext.autodoc`` crashes with plain Callable +* #3150: Fix query word splitter in JavaScript. It behaves as same as Python's regular expression. Release 1.4.8 (released Oct 1, 2016) ==================================== diff --git a/sphinx/search/__init__.py b/sphinx/search/__init__.py index 1fedc5352..7f8803fd2 100644 --- a/sphinx/search/__init__.py +++ b/sphinx/search/__init__.py @@ -17,7 +17,7 @@ from os import path from sphinx.util import jsdump, rpartition from sphinx.util.pycompat import htmlescape - +from sphinx.search.jssplitter import splitter_code class SearchLanguage(object): """ @@ -241,6 +241,7 @@ class IndexBuilder(object): self.js_scorer_code = fp.read().decode('utf-8') else: self.js_scorer_code = u'' + self.js_splitter_code = splitter_code def load(self, stream, format): """Reconstruct from frozen data.""" @@ -381,6 +382,7 @@ class IndexBuilder(object): search_language_stemming_code = self.lang.js_stemmer_code, search_language_stop_words = jsdump.dumps(sorted(self.lang.stopwords)), search_scorer_tool = self.js_scorer_code, + search_word_splitter_code = self.js_splitter_code, ) def get_js_stemmer_rawcode(self): diff --git a/sphinx/search/jssplitter.py b/sphinx/search/jssplitter.py new file mode 100644 index 000000000..a3bd8b767 --- /dev/null +++ b/sphinx/search/jssplitter.py @@ -0,0 +1,110 @@ + +"""# -*- coding: utf-8 -*- + sphinx.search.jssplitter + ~~~~~~~~~~~~~~~~~~~~~~~~ + + Provides Python compatible word splitter to JavaScript + + :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. + + DO NOT EDIT. This is generated by utils/jssplitter_generator.py +""" + +splitter_code = """ + +var splitChars = (function() { + var result = {}; + var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648, + 1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702, + 2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971, + 2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345, + 3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761, + 3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823, + 4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125, + 8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695, + 11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587, + 43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141]; + var i, j, start, end; + for (i = 0; i < singles.length; i++) { + result[singles[i]] = true; + } + var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709], + [722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161], + [1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568], + [1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807], + [1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047], + [2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383], + [2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450], + [2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547], + [2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673], + [2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820], + [2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946], + [2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023], + [3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173], + [3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332], + [3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481], + [3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718], + [3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791], + [3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095], + [4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205], + [4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687], + [4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968], + [4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869], + [5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102], + [6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271], + [6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592], + [6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822], + [6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167], + [7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959], + [7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143], + [8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318], + [8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483], + [8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101], + [10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567], + [11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292], + [12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444], + [12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783], + [12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311], + [19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511], + [42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774], + [42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071], + [43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263], + [43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519], + [43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647], + [43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967], + [44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295], + [57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274], + [64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007], + [65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381], + [65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]]; + for (i = 0; i < ranges.length; i++) { + start = ranges[i][0]; + end = ranges[i][1]; + for (j = start; j <= end; j++) { + result[j] = true; + } + } + return result; +})(); + +function splitQuery(query) { + var result = []; + var start = -1; + for (var i = 0; i < query.length; i++) { + if (splitChars[query.charCodeAt(i)]) { + if (start !== -1) { + result.push(query.slice(start, i)); + start = -1; + } + } else if (start === -1) { + start = i; + } + } + if (start !== -1) { + result.push(query.slice(start)); + } + return result; +} + +""" diff --git a/sphinx/themes/basic/static/searchtools.js_t b/sphinx/themes/basic/static/searchtools.js_t index 45ff1e4de..6d1dbc1b6 100644 --- a/sphinx/themes/basic/static/searchtools.js_t +++ b/sphinx/themes/basic/static/searchtools.js_t @@ -47,6 +47,14 @@ var Scorer = { }; {% endif %} +{% if search_word_splitter_code %} +{{ search_word_splitter_code }} +{% else %} +function splitQuery(query) { + return query.split(/\s+/); +} +{% endif %} + /** * Search Module */ @@ -145,7 +153,7 @@ var Search = { var searchterms = []; var excluded = []; var hlterms = []; - var tmp = query.split(/\W+/); + var tmp = splitQuery(query); var objectterms = []; for (i = 0; i < tmp.length; i++) { if (tmp[i] !== "") { diff --git a/utils/jssplitter_generator.py b/utils/jssplitter_generator.py new file mode 100644 index 000000000..6eef86cc3 --- /dev/null +++ b/utils/jssplitter_generator.py @@ -0,0 +1,142 @@ +# -*- coding: utf-8 -*- +import re +import json +import subprocess +import sys +import six + +# find char codes they are matched with Python's \\w(?u) + +match = re.compile(r'\w(?u)') +begin = -1 + +ranges = [] +singles = [] + +for i in range(65536): + # 0xd800-0xdfff is surrogate pair area. skip this. + if not match.match(six.unichr(i)) and not (0xd800 <= i <= 0xdfff): + if begin == -1: + begin = i + elif begin != -1: + if begin + 1 == i: + singles.append(begin) + else: + ranges.append((begin, i - 1)) + begin = -1 + + +# fold json within almost 80 chars per line +def fold(jsonData, splitter): + code = json.dumps(jsonData) + lines = [] + while True: + if len(code) < 71: + lines.append(' ' + code) + break + index = code.index(splitter, 70) + lines.append(' ' + code[:index+len(splitter)]) + code = code[index+len(splitter):] + lines[0] = lines[0][8:] + return '\n'.join(lines) + + +# JavaScript code +js_src = ''' +var splitChars = (function() { + var result = {}; + var singles = %s; + var i, j, start, end; + for (i = 0; i < singles.length; i++) { + result[singles[i]] = true; + } + var ranges = %s; + for (i = 0; i < ranges.length; i++) { + start = ranges[i][0]; + end = ranges[i][1]; + for (j = start; j <= end; j++) { + result[j] = true; + } + } + return result; +})(); + +function splitQuery(query) { + var result = []; + var start = -1; + for (var i = 0; i < query.length; i++) { + if (splitChars[query.charCodeAt(i)]) { + if (start !== -1) { + result.push(query.slice(start, i)); + start = -1; + } + } else if (start === -1) { + start = i; + } + } + if (start !== -1) { + result.push(query.slice(start)); + } + return result; +} +''' % (fold(singles, ','), fold(ranges, '],')) + +js_test_src = u''' +// This is regression test for https://github.com/sphinx-doc/sphinx/issues/3150 +// generated by compat_regexp_generator.py +// it needs node.js for testing +var assert = require('assert'); + +%s + +console.log("test splitting English words") +assert.deepEqual(['Hello', 'World'], splitQuery(' Hello World ')); +console.log(' ... ok\\n') + +console.log("test splitting special characters") +assert.deepEqual(['Pin', 'Code'], splitQuery('Pin-Code')); +console.log(' ... ok\\n') + +console.log("test splitting Chinese characters") +assert.deepEqual(['Hello', 'from', '中国', '上海'], splitQuery('Hello from 中国 上海')); +console.log(' ... ok\\n') + +console.log("test splitting Emoji(surrogate pair) characters. It should keep emojis.") +assert.deepEqual(['😁😁'], splitQuery('😁😁')); +console.log(' ... ok\\n') + +console.log("test splitting umlauts. It should keep umlauts.") +assert.deepEqual( + ['Löschen', 'Prüfung', 'Abändern', 'ærlig', 'spørsmål'], + splitQuery('Löschen Prüfung Abändern ærlig spørsmål')); +console.log(' ... ok\\n') + +''' % js_src + +python_src = ''' +"""# -*- coding: utf-8 -*- + sphinx.search.jssplitter + ~~~~~~~~~~~~~~~~~~~~~~~~ + + Provides Python compatible word splitter to JavaScript + + :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. + + DO NOT EDIT. This is generated by utils/jssplitter_generator.py +""" + +splitter_code = """ +%s +""" +''' % js_src + +with open('../sphinx/search/jssplitter.py', 'w') as f: + f.write(python_src) + +with open('./regression_test.js', 'w') as f: + f.write(js_test_src.encode('utf-8')) + +print("starting test...") +result = subprocess.call(['node', './regression_test.js']) +sys.exit(result) From b84035416f2e5baeeabcb28cd594ae5f09ed6f0c Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Sun, 20 Nov 2016 12:45:31 +0900 Subject: [PATCH 248/297] Revert "Add ``config-inited`` event" This reverts commit 9569c6dbff8e9bb2cc032ec4bc7ebdd50c4b570e. --- sphinx/application.py | 6 +----- sphinx/config.py | 9 --------- sphinx/domains/std.py | 16 +++++++++------- sphinx/util/texescape.py | 10 ---------- sphinx/writers/html.py | 2 +- sphinx/writers/latex.py | 23 ++++++++++++++--------- tests/roots/test-numfig/index.rst | 2 ++ tests/test_build_html.py | 10 ++++++++++ 8 files changed, 37 insertions(+), 41 deletions(-) diff --git a/sphinx/application.py b/sphinx/application.py index c17cbb617..cee780c9c 100644 --- a/sphinx/application.py +++ b/sphinx/application.py @@ -29,7 +29,7 @@ from docutils.parsers.rst import convert_directive_function, \ import sphinx from sphinx import package_dir, locale from sphinx.roles import XRefRole -from sphinx.config import Config, convert_numfig_format +from sphinx.config import Config from sphinx.errors import SphinxError, SphinxWarning, ExtensionError, \ VersionRequirementError, ConfigError from sphinx.domains import ObjType @@ -236,7 +236,6 @@ class Sphinx(object): self._init_i18n() # check all configuration values for permissible types self.config.check_types(self.warn) - self._post_init_config() # set up source_parsers self._init_source_parsers() # set up the build environment @@ -271,9 +270,6 @@ class Sphinx(object): else: self.info('not available for built-in messages') - def _post_init_config(self): - convert_numfig_format(self.config) - def _init_source_parsers(self): for suffix, parser in iteritems(self._additional_source_parsers): if suffix not in self.config.source_suffix: diff --git a/sphinx/config.py b/sphinx/config.py index a5761e349..61516a1ff 100644 --- a/sphinx/config.py +++ b/sphinx/config.py @@ -289,12 +289,3 @@ class Config(object): def __contains__(self, name): return name in self.values - - -def convert_numfig_format(config): - """ Convert numfi_format to new one. """ - - numfig_format = {} - for figtype, fmt in iteritems(config.numfig_format): - numfig_format[figtype] = fmt.replace('%s', '{number}') - config.numfig_format = numfig_format diff --git a/sphinx/domains/std.py b/sphinx/domains/std.py index f83afdab1..b7f2597d4 100644 --- a/sphinx/domains/std.py +++ b/sphinx/domains/std.py @@ -673,18 +673,20 @@ class StandardDomain(Domain): else: title = env.config.numfig_format.get(figtype, '') - # convert old styled numfig_format to new style - title = title.replace('%s', '{number}') - - if figname is None and '{name}' in title: + if figname is None and '%{name}' in title: env.warn_node('the link has no caption: %s' % title, node) return contnode else: fignum = '.'.join(map(str, fignumber)) - if figname: - newtitle = title.format(name=figname, number=fignum) + if '{name}' in title or 'number' in title: + # new style format (cf. "Fig.%{number}") + if figname: + newtitle = title.format(name=figname, number=fignum) + else: + newtitle = title.format(number=fignum) else: - newtitle = title.format(number=fignum) + # old style format (cf. "Fig.%s") + newtitle = title % fignum except KeyError as exc: env.warn_node('invalid numfig_format: %s (%r)' % (title, exc), node) return contnode diff --git a/sphinx/util/texescape.py b/sphinx/util/texescape.py index 861026b55..0a3192f6a 100644 --- a/sphinx/util/texescape.py +++ b/sphinx/util/texescape.py @@ -118,17 +118,10 @@ tex_replacements = [ ('Ω', r'\(\Omega\)'), ('Ω', r'\(\Omega\)'), ] -tex_pyformats = [ - # map special chars of str.format() to escaped one - ('{', '{{'), - ('}', '}}'), -] - tex_escape_map = {} tex_replace_map = {} tex_hl_escape_map_new = {} -tex_pyformat_map = {} def init(): @@ -140,6 +133,3 @@ def init(): if a in '[]{}\\': continue tex_hl_escape_map_new[ord(a)] = b - - for a, b in tex_pyformats: - tex_pyformat_map[ord(a)] = b diff --git a/sphinx/writers/html.py b/sphinx/writers/html.py index 7dd286cf7..ba2b758d8 100644 --- a/sphinx/writers/html.py +++ b/sphinx/writers/html.py @@ -291,7 +291,7 @@ class HTMLTranslator(BaseTranslator): self.builder.warn(msg) else: numbers = self.builder.fignumbers[key][figure_id] - self.body.append(prefix.format(number='.'.join(map(str, numbers))) + ' ') + self.body.append(prefix % '.'.join(map(str, numbers)) + ' ') self.body.append('</span>') figtype = self.builder.env.domains['std'].get_figtype(node) diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 0a158297b..ca0f1a7dd 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -29,7 +29,7 @@ from sphinx.util import split_into from sphinx.util.i18n import format_date from sphinx.util.nodes import clean_astext, traverse_parent from sphinx.util.template import LaTeXRenderer -from sphinx.util.texescape import tex_escape_map, tex_replace_map, tex_pyformat_map +from sphinx.util.texescape import tex_escape_map, tex_replace_map from sphinx.util.smartypants import educate_quotes_latex @@ -610,7 +610,7 @@ class LaTeXTranslator(nodes.NodeVisitor): def generate_numfig_format(self, builder): ret = [] - figure = self.builder.config.numfig_format['figure'].split('{number}', 1) + figure = self.builder.config.numfig_format['figure'].split('%s', 1) if len(figure) == 1: ret.append('\\def\\fnum@figure{%s}\n' % escape_abbr(text_type(figure[0]).translate(tex_escape_map))) @@ -623,7 +623,7 @@ class LaTeXTranslator(nodes.NodeVisitor): escape_abbr(text_type(figure[1]).translate(tex_escape_map))) ret.append('\\makeatother\n') - table = self.builder.config.numfig_format['table'].split('{number}', 1) + table = self.builder.config.numfig_format['table'].split('%s', 1) if len(table) == 1: ret.append('\\def\\fnum@table{%s}\n' % escape_abbr(text_type(table[0]).translate(tex_escape_map))) @@ -636,7 +636,7 @@ class LaTeXTranslator(nodes.NodeVisitor): escape_abbr(text_type(table[1]).translate(tex_escape_map))) ret.append('\\makeatother\n') - codeblock = self.builder.config.numfig_format['code-block'].split('{number}', 1) + codeblock = self.builder.config.numfig_format['code-block'].split('%s', 1) if len(codeblock) == 1: pass # FIXME else: @@ -1789,11 +1789,16 @@ class LaTeXTranslator(nodes.NodeVisitor): else: id = node.get('refuri', '')[1:].replace('#', ':') - title = node.get('title', '{number}').replace('%s', '{number}') - title = text_type(title).translate(tex_escape_map).translate(tex_pyformat_map) - title = title.replace('\\{{name\\}}', '{name}').replace('\\{{number\\}}', '{number}') - text = escape_abbr(title).format(name='\\nameref{%s}' % self.idescape(id), - number='\\ref{%s}' % self.idescape(id)) + title = node.get('title', '%s') + title = text_type(title).translate(tex_escape_map).replace('\\%s', '%s') + if '\\{name\\}' in title or '\\{number\\}' in title: + # new style format (cf. "Fig.%{number}") + title = title.replace('\\{name\\}', '{name}').replace('\\{number\\}', '{number}') + text = escape_abbr(title).format(name='\\nameref{%s}' % self.idescape(id), + number='\\ref{%s}' % self.idescape(id)) + else: + # old style format (cf. "Fig.%{number}") + text = escape_abbr(title) % ('\\ref{%s}' % self.idescape(id)) hyperref = '\\hyperref[%s]{%s}' % (self.idescape(id), text) self.body.append(hyperref) diff --git a/tests/roots/test-numfig/index.rst b/tests/roots/test-numfig/index.rst index 499a1b7dc..939903839 100644 --- a/tests/roots/test-numfig/index.rst +++ b/tests/roots/test-numfig/index.rst @@ -53,5 +53,7 @@ test-tocdepth * Section.1 is :numref:`foo` * Section.2.1 is :numref:`bar_a` * Unnumbered section is :numref:`index` +* Invalid numfig_format 01: :numref:`invalid <fig1>` +* Invalid numfig_format 02: :numref:`Fig %s %s <fig1>` * Fig.1 is :numref:`Fig.{number} {name} <fig1>` * Section.1 is :numref:`Sect.{number} {name} <foo>` diff --git a/tests/test_build_html.py b/tests/test_build_html.py index 176590f75..d8aff88ab 100644 --- a/tests/test_build_html.py +++ b/tests/test_build_html.py @@ -506,6 +506,8 @@ def test_numfig_disabled(app, status, warning): warnings = warning.getvalue() assert 'index.rst:47: WARNING: numfig is disabled. :numref: is ignored.' in warnings assert 'index.rst:55: WARNING: no number is assigned for section: index' not in warnings + assert 'index.rst:56: WARNING: invalid numfig_format: invalid' not in warnings + assert 'index.rst:57: WARNING: invalid numfig_format: Fig %s %s' not in warnings expects = { 'index.html': [ @@ -568,6 +570,8 @@ def test_numfig_without_numbered_toctree(app, status, warning): warnings = warning.getvalue() assert 'index.rst:47: WARNING: numfig is disabled. :numref: is ignored.' not in warnings assert 'index.rst:55: WARNING: no number is assigned for section: index' in warnings + assert 'index.rst:56: WARNING: invalid numfig_format: invalid' in warnings + assert 'index.rst:57: WARNING: invalid numfig_format: Fig %s %s' in warnings expects = { 'index.html': [ @@ -666,6 +670,8 @@ def test_numfig_with_numbered_toctree(app, status, warning): warnings = warning.getvalue() assert 'index.rst:47: WARNING: numfig is disabled. :numref: is ignored.' not in warnings assert 'index.rst:55: WARNING: no number is assigned for section: index' in warnings + assert 'index.rst:56: WARNING: invalid numfig_format: invalid' in warnings + assert 'index.rst:57: WARNING: invalid numfig_format: Fig %s %s' in warnings expects = { 'index.html': [ @@ -768,6 +774,8 @@ def test_numfig_with_prefix(app, status, warning): warnings = warning.getvalue() assert 'index.rst:47: WARNING: numfig is disabled. :numref: is ignored.' not in warnings assert 'index.rst:55: WARNING: no number is assigned for section: index' in warnings + assert 'index.rst:56: WARNING: invalid numfig_format: invalid' in warnings + assert 'index.rst:57: WARNING: invalid numfig_format: Fig %s %s' in warnings expects = { 'index.html': [ @@ -866,6 +874,8 @@ def test_numfig_with_secnum_depth(app, status, warning): warnings = warning.getvalue() assert 'index.rst:47: WARNING: numfig is disabled. :numref: is ignored.' not in warnings assert 'index.rst:55: WARNING: no number is assigned for section: index' in warnings + assert 'index.rst:56: WARNING: invalid numfig_format: invalid' in warnings + assert 'index.rst:57: WARNING: invalid numfig_format: Fig %s %s' in warnings expects = { 'index.html': [ From 7c19a2f36a6931fd8c2bb36fddff4519f064b8e2 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Sun, 20 Nov 2016 12:46:05 +0900 Subject: [PATCH 249/297] Fix #3118: Update document for numfig_format and numref --- doc/config.rst | 6 +----- doc/markup/inline.rst | 6 +++++- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/config.rst b/doc/config.rst index 7f1f73186..a3f45abe9 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -297,8 +297,7 @@ General configuration A dictionary mapping ``'figure'``, ``'table'``, ``'code-block'`` and ``'section'`` to strings that are used for format of figure numbers. - As a special character, `%s` and `{number}` will be replaced to figure - number. `{name}` will be replaced to figure caption. + As a special character, `%s` will be replaced to figure number. Default is to use ``'Fig. %s'`` for ``'figure'``, ``'Table %s'`` for ``'table'``, ``'Listing %s'`` for ``'code-block'`` and ``'Section'`` for @@ -306,9 +305,6 @@ General configuration .. versionadded:: 1.3 - .. versionchanged:: 1.5 - Support format of section. Allow to refer the caption of figures. - .. confval:: numfig_secnum_depth The scope of figure numbers, that is, the numfig feature numbers figures diff --git a/doc/markup/inline.rst b/doc/markup/inline.rst index bd02dfa08..a59585bab 100644 --- a/doc/markup/inline.rst +++ b/doc/markup/inline.rst @@ -214,6 +214,7 @@ Cross-referencing figures by figure number .. versionchanged:: 1.5 `numref` role can also refer sections. + And `numref` allows `{name}` for the link text. .. rst:role:: numref @@ -223,7 +224,10 @@ Cross-referencing figures by figure number If an explicit link text is given (like usual: ``:numref:`Image of Sphinx (Fig. %s) <my-figure>```), the link caption will be the title of the reference. - The format of link text is same as :confval:`numfig_format`. + As a special character, `%s` and `{number}` will be replaced to figure + number. `{name}` will be replaced to figure caption. + If no explicit link text is given, the value of :confval:`numfig_format` is + used to default value of link text. If :confval:`numfig` is ``False``, figures are not numbered. so this role inserts not a reference but labels or link text. From a13edb86318b21e224cf1365fc9c5edb05df18dc Mon Sep 17 00:00:00 2001 From: shimizukawa <shimizukawa@gmail.com> Date: Sun, 20 Nov 2016 17:32:05 +0900 Subject: [PATCH 250/297] refs #3093: gettext build broken on substituted images. --- CHANGES | 1 + sphinx/transforms.py | 4 ++-- sphinx/util/nodes.py | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index 49b0ca941..ef2997d10 100644 --- a/CHANGES +++ b/CHANGES @@ -11,6 +11,7 @@ Bugs fixed * #3074: ``add_source_parser()`` crashes in debug mode * #3135: ``sphinx.ext.autodoc`` crashes with plain Callable * #3150: Fix query word splitter in JavaScript. It behaves as same as Python's regular expression. +* #3093: gettext build broken on substituted images. Release 1.4.8 (released Oct 1, 2016) ==================================== diff --git a/sphinx/transforms.py b/sphinx/transforms.py index cb4a5779b..ba15ae614 100644 --- a/sphinx/transforms.py +++ b/sphinx/transforms.py @@ -166,7 +166,7 @@ class ApplySourceWorkaround(Transform): def apply(self): for n in self.document.traverse(): - if isinstance(n, nodes.TextElement): + if isinstance(n, (nodes.TextElement, nodes.image)): apply_source_workaround(n) @@ -192,7 +192,7 @@ class ExtraTranslatableNodes(Transform): """ make nodes translatable """ - default_priority = 10 + default_priority = 9 def apply(self): targets = self.document.settings.env.config.gettext_additional_targets diff --git a/sphinx/util/nodes.py b/sphinx/util/nodes.py index e4a2fd73b..e51ad2972 100644 --- a/sphinx/util/nodes.py +++ b/sphinx/util/nodes.py @@ -46,6 +46,8 @@ def apply_source_workaround(node): node.source = definition_list_item.source node.line = definition_list_item.line - 1 node.rawsource = node.astext() # set 'classifier1' (or 'classifier2') + if isinstance(node, nodes.image) and node.source is None: + node.source, node.line = node.parent.source, node.parent.line if isinstance(node, nodes.term): # strip classifier from rawsource of term for classifier in reversed(node.parent.traverse(nodes.classifier)): From 76eb8ab56d49c6fbe28e03934fdd60ad92459452 Mon Sep 17 00:00:00 2001 From: shimizukawa <shimizukawa@gmail.com> Date: Sun, 20 Nov 2016 17:44:10 +0900 Subject: [PATCH 251/297] * #3093: gettext build broken on image node under ``note`` directive. --- CHANGES | 1 + sphinx/util/nodes.py | 1 + 2 files changed, 2 insertions(+) diff --git a/CHANGES b/CHANGES index ef2997d10..0ae8cb26d 100644 --- a/CHANGES +++ b/CHANGES @@ -12,6 +12,7 @@ Bugs fixed * #3135: ``sphinx.ext.autodoc`` crashes with plain Callable * #3150: Fix query word splitter in JavaScript. It behaves as same as Python's regular expression. * #3093: gettext build broken on substituted images. +* #3093: gettext build broken on image node under ``note`` directive. Release 1.4.8 (released Oct 1, 2016) ==================================== diff --git a/sphinx/util/nodes.py b/sphinx/util/nodes.py index e51ad2972..b3f7efa8e 100644 --- a/sphinx/util/nodes.py +++ b/sphinx/util/nodes.py @@ -71,6 +71,7 @@ def apply_source_workaround(node): nodes.title, nodes.rubric, nodes.line, + nodes.image, ))): node.source = find_source_node(node) node.line = 0 # need fix docutils to get `node.line` From 3566352bdbd21a2f6668d5f3da815ed6f8de3f50 Mon Sep 17 00:00:00 2001 From: shimizukawa <shimizukawa@gmail.com> Date: Sun, 20 Nov 2016 17:48:07 +0900 Subject: [PATCH 252/297] refs #3093: add tests --- tests/roots/test-intl/conf.py | 2 +- tests/roots/test-intl/figure.txt | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/tests/roots/test-intl/conf.py b/tests/roots/test-intl/conf.py index aafd9ba79..e465e75dc 100644 --- a/tests/roots/test-intl/conf.py +++ b/tests/roots/test-intl/conf.py @@ -6,5 +6,5 @@ keep_warnings = True templates_path = ['_templates'] html_additional_pages = {'index': 'index.html'} release = version = '2013.120' -gettext_additional_targets = ['index'] +gettext_additional_targets = ['index', 'image'] exclude_patterns = ['_build'] diff --git a/tests/roots/test-intl/figure.txt b/tests/roots/test-intl/figure.txt index b639a4ac1..e6ebfd7ce 100644 --- a/tests/roots/test-intl/figure.txt +++ b/tests/roots/test-intl/figure.txt @@ -34,3 +34,20 @@ image url and alt .. figure:: img.png :alt: img + +image on substitution +--------------------- + +.. |sub image| image:: i18n.png + +image under note +----------------- + +.. note:: + + .. image:: i18n.png + :alt: i18n + + .. figure:: img.png + :alt: img + From 3c89ddd99f7d703a975272040dfbfead85db500b Mon Sep 17 00:00:00 2001 From: shimizukawa <shimizukawa@gmail.com> Date: Sun, 20 Nov 2016 17:55:28 +0900 Subject: [PATCH 253/297] refs #3093: revert non-related changed line --- sphinx/transforms.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sphinx/transforms.py b/sphinx/transforms.py index ba15ae614..3281541c0 100644 --- a/sphinx/transforms.py +++ b/sphinx/transforms.py @@ -192,7 +192,7 @@ class ExtraTranslatableNodes(Transform): """ make nodes translatable """ - default_priority = 9 + default_priority = 10 def apply(self): targets = self.document.settings.env.config.gettext_additional_targets From e712401dd1b3df2ae2e839f7c467c6393244dc04 Mon Sep 17 00:00:00 2001 From: shimizukawa <shimizukawa@gmail.com> Date: Sun, 20 Nov 2016 18:00:23 +0900 Subject: [PATCH 254/297] #3093: fix test --- tests/roots/test-intl/conf.py | 2 +- tests/roots/test-intl/figure.txt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/roots/test-intl/conf.py b/tests/roots/test-intl/conf.py index e465e75dc..aafd9ba79 100644 --- a/tests/roots/test-intl/conf.py +++ b/tests/roots/test-intl/conf.py @@ -6,5 +6,5 @@ keep_warnings = True templates_path = ['_templates'] html_additional_pages = {'index': 'index.html'} release = version = '2013.120' -gettext_additional_targets = ['index', 'image'] +gettext_additional_targets = ['index'] exclude_patterns = ['_build'] diff --git a/tests/roots/test-intl/figure.txt b/tests/roots/test-intl/figure.txt index e6ebfd7ce..633e12ee8 100644 --- a/tests/roots/test-intl/figure.txt +++ b/tests/roots/test-intl/figure.txt @@ -46,8 +46,8 @@ image under note .. note:: .. image:: i18n.png - :alt: i18n + :alt: i18n under note .. figure:: img.png - :alt: img + :alt: img under note From 6b0d3e7400ab7b50ce840a8eec9507d15cf74b14 Mon Sep 17 00:00:00 2001 From: shimizukawa <shimizukawa@gmail.com> Date: Sun, 20 Nov 2016 18:17:16 +0900 Subject: [PATCH 255/297] #3093: fix test again --- tests/roots/test-intl/figure.po | 7 +++++++ tests/test_intl.py | 12 ++++++++++++ 2 files changed, 19 insertions(+) diff --git a/tests/roots/test-intl/figure.po b/tests/roots/test-intl/figure.po index cbd9c8837..449b15e3f 100644 --- a/tests/roots/test-intl/figure.po +++ b/tests/roots/test-intl/figure.po @@ -50,3 +50,10 @@ msgid "" msgstr "" ".. image:: img.png\n" " :alt: I18N -> IMG" + +msgid "image on substitution" +msgstr "IMAGE ON SUBSTITUTION" + +msgid "image under note" +msgstr "IMAGE UNDER NOTE" + diff --git a/tests/test_intl.py b/tests/test_intl.py index b31f1678b..e1c0784d8 100644 --- a/tests/test_intl.py +++ b/tests/test_intl.py @@ -261,6 +261,18 @@ def test_text_builder(app, status, warning): u"[image: i18n][image]\n" u"\n" u" [image: img][image]\n" + u"�\n" + u"�\n" + u"�IMAGE ON SUBSTITUTION\n" + u"�=====================\n" + u"�\n" + u"�\n" + u"�IMAGE UNDER NOTE\n" + u"�================\n" + u"�\n" + u"�Note: [image: i18n under note][image]\n" + u"�\n" + u"� [image: img under note][image]\n" ) yield assert_equal, result, expect From 8f79c11b04c6ea675ead6a019013e1d208efec97 Mon Sep 17 00:00:00 2001 From: shimizukawa <shimizukawa@gmail.com> Date: Sun, 20 Nov 2016 18:35:12 +0900 Subject: [PATCH 256/297] #3093: fix test again --- tests/test_intl.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/tests/test_intl.py b/tests/test_intl.py index e1c0784d8..4fac62c21 100644 --- a/tests/test_intl.py +++ b/tests/test_intl.py @@ -261,18 +261,18 @@ def test_text_builder(app, status, warning): u"[image: i18n][image]\n" u"\n" u" [image: img][image]\n" - u"�\n" - u"�\n" - u"�IMAGE ON SUBSTITUTION\n" - u"�=====================\n" - u"�\n" - u"�\n" - u"�IMAGE UNDER NOTE\n" - u"�================\n" - u"�\n" - u"�Note: [image: i18n under note][image]\n" - u"�\n" - u"� [image: img under note][image]\n" + u"\n" + u"\n" + u"IMAGE ON SUBSTITUTION\n" + u"=====================\n" + u"\n" + u"\n" + u"IMAGE UNDER NOTE\n" + u"================\n" + u"\n" + u"Note: [image: i18n under note][image]\n" + u"\n" + u" [image: img under note][image]\n" ) yield assert_equal, result, expect From 9690be4943887d70c4e4eb1cd309656f8831fb52 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Mon, 21 Nov 2016 20:06:23 +0900 Subject: [PATCH 257/297] Fix imgmath: crashes on showing error messages if image generation failed --- CHANGES | 1 + sphinx/ext/imgmath.py | 5 +++-- sphinx/ext/pngmath.py | 5 +++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index 0ae8cb26d..c8e0bb941 100644 --- a/CHANGES +++ b/CHANGES @@ -13,6 +13,7 @@ Bugs fixed * #3150: Fix query word splitter in JavaScript. It behaves as same as Python's regular expression. * #3093: gettext build broken on substituted images. * #3093: gettext build broken on image node under ``note`` directive. +* imgmath: crashes on showing error messages if image generation failed Release 1.4.8 (released Oct 1, 2016) ==================================== diff --git a/sphinx/ext/imgmath.py b/sphinx/ext/imgmath.py index f8e402be3..9b75800af 100644 --- a/sphinx/ext/imgmath.py +++ b/sphinx/ext/imgmath.py @@ -245,10 +245,11 @@ def html_visit_displaymath(self, node): try: fname, depth = render_math(self, latex) except MathExtError as exc: - sm = nodes.system_message(str(exc), type='WARNING', level=2, + msg = text_type(exc) + sm = nodes.system_message(msg, type='WARNING', level=2, backrefs=[], source=node['latex']) sm.walkabout(self) - self.builder.warn('inline latex %r: ' % node['latex'] + str(exc)) + self.builder.warn('inline latex %r: ' % node['latex'] + msg) raise nodes.SkipNode self.body.append(self.starttag(node, 'div', CLASS='math')) self.body.append('<p>') diff --git a/sphinx/ext/pngmath.py b/sphinx/ext/pngmath.py index d7660550e..655eb562f 100644 --- a/sphinx/ext/pngmath.py +++ b/sphinx/ext/pngmath.py @@ -218,10 +218,11 @@ def html_visit_displaymath(self, node): try: fname, depth = render_math(self, latex) except MathExtError as exc: - sm = nodes.system_message(str(exc), type='WARNING', level=2, + msg = text_type(exc) + sm = nodes.system_message(msg, type='WARNING', level=2, backrefs=[], source=node['latex']) sm.walkabout(self) - self.builder.warn('inline latex %r: ' % node['latex'] + str(exc)) + self.builder.warn('inline latex %r: ' % node['latex'] + msg) raise nodes.SkipNode self.body.append(self.starttag(node, 'div', CLASS='math')) self.body.append('<p>') From 595be7aef06489fb9e7545232cdd5a7d5e4061aa Mon Sep 17 00:00:00 2001 From: Wheerd <admin@wheerd.de> Date: Mon, 21 Nov 2016 19:11:04 +0100 Subject: [PATCH 258/297] Fixed the regular expression for xref to only match roles that are valid. This caused errors when having multiple successive xrefs without whitespace between them. --- sphinx/ext/napoleon/docstring.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sphinx/ext/napoleon/docstring.py b/sphinx/ext/napoleon/docstring.py index 7df6e83ab..6fee87b34 100644 --- a/sphinx/ext/napoleon/docstring.py +++ b/sphinx/ext/napoleon/docstring.py @@ -33,7 +33,7 @@ _google_section_regex = re.compile(r'^(\s|\w)+:\s*$') _google_typed_arg_regex = re.compile(r'\s*(.+?)\s*\(\s*(.*[^\s]+)\s*\)') _numpy_section_regex = re.compile(r'^[=\-`:\'"~^_*+#<>]{2,}\s*$') _single_colon_regex = re.compile(r'(?<!:):(?!:)') -_xref_regex = re.compile(r'(:\w+:\S+:`.+?`|:\S+:`.+?`|`.+?`)') +_xref_regex = re.compile(r'(:(?:[a-zA-Z0-9]+[\-_+:.])*[a-zA-Z0-9]+:`.+?`)') _bullet_list_regex = re.compile(r'^(\*|\+|\-)(\s+\S|\s*$)') _enumerated_list_regex = re.compile( r'^(?P<paren>\()?' From 407a525ac8c68a8e4bfdce94251f6e584bb0e56a Mon Sep 17 00:00:00 2001 From: Rob Ruana <rob@robruana.com> Date: Mon, 21 Nov 2016 16:12:23 -0800 Subject: [PATCH 259/297] [Napoleon] adds xref test data for pull request #3168 --- tests/test_ext_napoleon.py | 1 + tests/test_ext_napoleon_docstring.py | 12 +++++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/tests/test_ext_napoleon.py b/tests/test_ext_napoleon.py index 7ecd08292..21d095a79 100644 --- a/tests/test_ext_napoleon.py +++ b/tests/test_ext_napoleon.py @@ -68,6 +68,7 @@ class SampleError(Exception): def __special_undoc__(self): pass + SampleNamedTuple = namedtuple('SampleNamedTuple', 'user_id block_type def_id') diff --git a/tests/test_ext_napoleon_docstring.py b/tests/test_ext_napoleon_docstring.py index 37dcca90c..be9103063 100644 --- a/tests/test_ext_napoleon_docstring.py +++ b/tests/test_ext_napoleon_docstring.py @@ -284,8 +284,9 @@ Construct a new XBlock. This class should only be used by runtimes. Arguments: - runtime (:class:`Runtime`): Use it to access the environment. - It is available in XBlock code as ``self.runtime``. + runtime (:class:`~typing.Dict`\[:class:`int`,:class:`str`\]): Use it to + access the environment. It is available in XBlock code + as ``self.runtime``. field_data (:class:`FieldData`): Interface used by the XBlock fields to access their data from wherever it is persisted. @@ -300,9 +301,10 @@ Construct a new XBlock. This class should only be used by runtimes. -:param runtime: Use it to access the environment. - It is available in XBlock code as ``self.runtime``. -:type runtime: :class:`Runtime` +:param runtime: Use it to + access the environment. It is available in XBlock code + as ``self.runtime``. +:type runtime: :class:`~typing.Dict`\[:class:`int`,:class:`str`\] :param field_data: Interface used by the XBlock fields to access their data from wherever it is persisted. :type field_data: :class:`FieldData` From 736c18d49861231e80726765136c10732e37f78a Mon Sep 17 00:00:00 2001 From: shimizukawa <shimizukawa@gmail.com> Date: Wed, 23 Nov 2016 00:40:24 +0900 Subject: [PATCH 260/297] add MoinMoin to EXAMPLES --- EXAMPLES | 1 + 1 file changed, 1 insertion(+) diff --git a/EXAMPLES b/EXAMPLES index e84e0db26..d6770436b 100644 --- a/EXAMPLES +++ b/EXAMPLES @@ -135,6 +135,7 @@ Documentation using another builtin theme * jsFiddle: http://doc.jsfiddle.net/ (nature) * libLAS: http://www.liblas.org/ (nature) * Linguistica: http://linguistica-uchicago.github.io/lxa5/ (sphinx_rtd_theme) +* MoinMoin: https://moin-20.readthedocs.io/en/latest/ (sphinx_rtd_theme) * MPipe: http://vmlaker.github.io/mpipe/ (sphinx13) * pip: https://pip.pypa.io/en/latest/ (sphinx_rtd_theme) * Pyramid web framework: From 43197de29998ceee85cfe1f7471f97799717a78d Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Wed, 23 Nov 2016 00:42:15 +0900 Subject: [PATCH 261/297] Fix #3117: LaTeX writer crashes if admonition is placed before first section title --- CHANGES | 1 + sphinx/environment/managers/toctree.py | 580 +++++++++++++++++++++++++ sphinx/writers/latex.py | 54 +-- tests/roots/test-latex-title/conf.py | 8 + tests/roots/test-latex-title/index.rst | 12 + tests/test_build_latex.py | 20 + 6 files changed, 648 insertions(+), 27 deletions(-) create mode 100644 sphinx/environment/managers/toctree.py create mode 100644 tests/roots/test-latex-title/conf.py create mode 100644 tests/roots/test-latex-title/index.rst diff --git a/CHANGES b/CHANGES index c8e0bb941..9c6ca126b 100644 --- a/CHANGES +++ b/CHANGES @@ -14,6 +14,7 @@ Bugs fixed * #3093: gettext build broken on substituted images. * #3093: gettext build broken on image node under ``note`` directive. * imgmath: crashes on showing error messages if image generation failed +* #3117: LaTeX writer crashes if admonition is placed before first section title Release 1.4.8 (released Oct 1, 2016) ==================================== diff --git a/sphinx/environment/managers/toctree.py b/sphinx/environment/managers/toctree.py new file mode 100644 index 000000000..26c8f385d --- /dev/null +++ b/sphinx/environment/managers/toctree.py @@ -0,0 +1,580 @@ +# -*- coding: utf-8 -*- +""" + sphinx.environment.managers.toctree + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Toctree manager for sphinx.environment. + + :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from six import iteritems + +from docutils import nodes + +from sphinx import addnodes +from sphinx.util import url_re +from sphinx.util.nodes import clean_astext, process_only_nodes +from sphinx.transforms import SphinxContentsFilter +from sphinx.environment.managers import EnvironmentManager + +if False: + # For type annotation + from typing import Any, Tuple # NOQA + from sphinx.builders import Builder # NOQA + from sphinx.environment import BuildEnvironment # NOQA + + +class Toctree(EnvironmentManager): + name = 'toctree' + + def __init__(self, env): + # type: (BuildEnvironment) -> None + super(Toctree, self).__init__(env) + + self.tocs = env.tocs + self.toc_num_entries = env.toc_num_entries + self.toc_secnumbers = env.toc_secnumbers + self.toc_fignumbers = env.toc_fignumbers + self.toctree_includes = env.toctree_includes + self.files_to_rebuild = env.files_to_rebuild + self.glob_toctrees = env.glob_toctrees + self.numbered_toctrees = env.numbered_toctrees + + def clear_doc(self, docname): + # type: (unicode) -> None + self.tocs.pop(docname, None) + self.toc_secnumbers.pop(docname, None) + self.toc_fignumbers.pop(docname, None) + self.toc_num_entries.pop(docname, None) + self.toctree_includes.pop(docname, None) + self.glob_toctrees.discard(docname) + self.numbered_toctrees.discard(docname) + + for subfn, fnset in list(self.files_to_rebuild.items()): + fnset.discard(docname) + if not fnset: + del self.files_to_rebuild[subfn] + + def merge_other(self, docnames, other): + # type: (List[unicode], BuildEnvironment) -> None + for docname in docnames: + self.tocs[docname] = other.tocs[docname] + self.toc_num_entries[docname] = other.toc_num_entries[docname] + if docname in other.toctree_includes: + self.toctree_includes[docname] = other.toctree_includes[docname] + if docname in other.glob_toctrees: + self.glob_toctrees.add(docname) + if docname in other.numbered_toctrees: + self.numbered_toctrees.add(docname) + + for subfn, fnset in other.files_to_rebuild.items(): + self.files_to_rebuild.setdefault(subfn, set()).update(fnset & docnames) + + def process_doc(self, docname, doctree): + # type: (unicode, nodes.Node) -> None + """Build a TOC from the doctree and store it in the inventory.""" + numentries = [0] # nonlocal again... + + def traverse_in_section(node, cls): + """Like traverse(), but stay within the same section.""" + result = [] + if isinstance(node, cls): + result.append(node) + for child in node.children: + if isinstance(child, nodes.section): + continue + result.extend(traverse_in_section(child, cls)) + return result + + def build_toc(node, depth=1): + entries = [] + for sectionnode in node: + # find all toctree nodes in this section and add them + # to the toc (just copying the toctree node which is then + # resolved in self.get_and_resolve_doctree) + if isinstance(sectionnode, addnodes.only): + onlynode = addnodes.only(expr=sectionnode['expr']) + blist = build_toc(sectionnode, depth) + if blist: + onlynode += blist.children + entries.append(onlynode) + continue + if not isinstance(sectionnode, nodes.section): + for toctreenode in traverse_in_section(sectionnode, + addnodes.toctree): + item = toctreenode.copy() + entries.append(item) + # important: do the inventory stuff + self.note_toctree(docname, toctreenode) + continue + title = sectionnode[0] + # copy the contents of the section title, but without references + # and unnecessary stuff + visitor = SphinxContentsFilter(doctree) + title.walkabout(visitor) + nodetext = visitor.get_entry_text() + if not numentries[0]: + # for the very first toc entry, don't add an anchor + # as it is the file's title anyway + anchorname = '' + else: + anchorname = '#' + sectionnode['ids'][0] + numentries[0] += 1 + # make these nodes: + # list_item -> compact_paragraph -> reference + reference = nodes.reference( + '', '', internal=True, refuri=docname, + anchorname=anchorname, *nodetext) + para = addnodes.compact_paragraph('', '', reference) + item = nodes.list_item('', para) + sub_item = build_toc(sectionnode, depth + 1) + item += sub_item + entries.append(item) + if entries: + return nodes.bullet_list('', *entries) + return [] + toc = build_toc(doctree) + if toc: + self.tocs[docname] = toc + else: + self.tocs[docname] = nodes.bullet_list('') + self.toc_num_entries[docname] = numentries[0] + + def note_toctree(self, docname, toctreenode): + # type: (unicode, addnodes.toctree) -> None + """Note a TOC tree directive in a document and gather information about + file relations from it. + """ + if toctreenode['glob']: + self.glob_toctrees.add(docname) + if toctreenode.get('numbered'): + self.numbered_toctrees.add(docname) + includefiles = toctreenode['includefiles'] + for includefile in includefiles: + # note that if the included file is rebuilt, this one must be + # too (since the TOC of the included file could have changed) + self.files_to_rebuild.setdefault(includefile, set()).add(docname) + self.toctree_includes.setdefault(docname, []).extend(includefiles) + + def get_toc_for(self, docname, builder): + # type: (unicode, Builder) -> None + """Return a TOC nodetree -- for use on the same page only!""" + tocdepth = self.env.metadata[docname].get('tocdepth', 0) + try: + toc = self.tocs[docname].deepcopy() + self._toctree_prune(toc, 2, tocdepth) + except KeyError: + # the document does not exist anymore: return a dummy node that + # renders to nothing + return nodes.paragraph() + process_only_nodes(toc, builder.tags, warn_node=self.env.warn_node) + for node in toc.traverse(nodes.reference): + node['refuri'] = node['anchorname'] or '#' + return toc + + def get_toctree_for(self, docname, builder, collapse, **kwds): + # type: (unicode, Builder, bool, Any) -> nodes.Node + """Return the global TOC nodetree.""" + doctree = self.env.get_doctree(self.env.config.master_doc) + toctrees = [] + if 'includehidden' not in kwds: + kwds['includehidden'] = True + if 'maxdepth' not in kwds: + kwds['maxdepth'] = 0 + kwds['collapse'] = collapse + for toctreenode in doctree.traverse(addnodes.toctree): + toctree = self.env.resolve_toctree(docname, builder, toctreenode, + prune=True, **kwds) + if toctree: + toctrees.append(toctree) + if not toctrees: + return None + result = toctrees[0] + for toctree in toctrees[1:]: + result.extend(toctree.children) + return result + + def resolve_toctree(self, docname, builder, toctree, prune=True, maxdepth=0, + titles_only=False, collapse=False, includehidden=False): + # type: (unicode, Builder, addnodes.toctree, bool, int, bool, bool, bool) -> nodes.Node + """Resolve a *toctree* node into individual bullet lists with titles + as items, returning None (if no containing titles are found) or + a new node. + + If *prune* is True, the tree is pruned to *maxdepth*, or if that is 0, + to the value of the *maxdepth* option on the *toctree* node. + If *titles_only* is True, only toplevel document titles will be in the + resulting tree. + If *collapse* is True, all branches not containing docname will + be collapsed. + """ + if toctree.get('hidden', False) and not includehidden: + return None + + # For reading the following two helper function, it is useful to keep + # in mind the node structure of a toctree (using HTML-like node names + # for brevity): + # + # <ul> + # <li> + # <p><a></p> + # <p><a></p> + # ... + # <ul> + # ... + # </ul> + # </li> + # </ul> + # + # The transformation is made in two passes in order to avoid + # interactions between marking and pruning the tree (see bug #1046). + + toctree_ancestors = self.get_toctree_ancestors(docname) + + def _toctree_add_classes(node, depth): + """Add 'toctree-l%d' and 'current' classes to the toctree.""" + for subnode in node.children: + if isinstance(subnode, (addnodes.compact_paragraph, + nodes.list_item)): + # for <p> and <li>, indicate the depth level and recurse + subnode['classes'].append('toctree-l%d' % (depth-1)) + _toctree_add_classes(subnode, depth) + elif isinstance(subnode, nodes.bullet_list): + # for <ul>, just recurse + _toctree_add_classes(subnode, depth+1) + elif isinstance(subnode, nodes.reference): + # for <a>, identify which entries point to the current + # document and therefore may not be collapsed + if subnode['refuri'] == docname: + if not subnode['anchorname']: + # give the whole branch a 'current' class + # (useful for styling it differently) + branchnode = subnode + while branchnode: + branchnode['classes'].append('current') + branchnode = branchnode.parent + # mark the list_item as "on current page" + if subnode.parent.parent.get('iscurrent'): + # but only if it's not already done + return + while subnode: + subnode['iscurrent'] = True + subnode = subnode.parent + + def _entries_from_toctree(toctreenode, parents, + separate=False, subtree=False): + """Return TOC entries for a toctree node.""" + refs = [(e[0], e[1]) for e in toctreenode['entries']] + entries = [] + for (title, ref) in refs: + try: + refdoc = None + if url_re.match(ref): + if title is None: + title = ref + reference = nodes.reference('', '', internal=False, + refuri=ref, anchorname='', + *[nodes.Text(title)]) + para = addnodes.compact_paragraph('', '', reference) + item = nodes.list_item('', para) + toc = nodes.bullet_list('', item) + elif ref == 'self': + # 'self' refers to the document from which this + # toctree originates + ref = toctreenode['parent'] + if not title: + title = clean_astext(self.titles[ref]) + reference = nodes.reference('', '', internal=True, + refuri=ref, + anchorname='', + *[nodes.Text(title)]) + para = addnodes.compact_paragraph('', '', reference) + item = nodes.list_item('', para) + # don't show subitems + toc = nodes.bullet_list('', item) + else: + if ref in parents: + self.env.warn(ref, 'circular toctree references ' + 'detected, ignoring: %s <- %s' % + (ref, ' <- '.join(parents))) + continue + refdoc = ref + toc = self.tocs[ref].deepcopy() + maxdepth = self.env.metadata[ref].get('tocdepth', 0) + if ref not in toctree_ancestors or (prune and maxdepth > 0): + self._toctree_prune(toc, 2, maxdepth, collapse) + process_only_nodes(toc, builder.tags, warn_node=self.env.warn_node) + if title and toc.children and len(toc.children) == 1: + child = toc.children[0] + for refnode in child.traverse(nodes.reference): + if refnode['refuri'] == ref and \ + not refnode['anchorname']: + refnode.children = [nodes.Text(title)] + if not toc.children: + # empty toc means: no titles will show up in the toctree + self.env.warn_node( + 'toctree contains reference to document %r that ' + 'doesn\'t have a title: no link will be generated' + % ref, toctreenode) + except KeyError: + # this is raised if the included file does not exist + self.env.warn_node( + 'toctree contains reference to nonexisting document %r' + % ref, toctreenode) + else: + # if titles_only is given, only keep the main title and + # sub-toctrees + if titles_only: + # delete everything but the toplevel title(s) + # and toctrees + for toplevel in toc: + # nodes with length 1 don't have any children anyway + if len(toplevel) > 1: + subtrees = toplevel.traverse(addnodes.toctree) + if subtrees: + toplevel[1][:] = subtrees + else: + toplevel.pop(1) + # resolve all sub-toctrees + for subtocnode in toc.traverse(addnodes.toctree): + if not (subtocnode.get('hidden', False) and + not includehidden): + i = subtocnode.parent.index(subtocnode) + 1 + for item in _entries_from_toctree( + subtocnode, [refdoc] + parents, + subtree=True): + subtocnode.parent.insert(i, item) + i += 1 + subtocnode.parent.remove(subtocnode) + if separate: + entries.append(toc) + else: + entries.extend(toc.children) + if not subtree and not separate: + ret = nodes.bullet_list() + ret += entries + return [ret] + return entries + + maxdepth = maxdepth or toctree.get('maxdepth', -1) + if not titles_only and toctree.get('titlesonly', False): + titles_only = True + if not includehidden and toctree.get('includehidden', False): + includehidden = True + + # NOTE: previously, this was separate=True, but that leads to artificial + # separation when two or more toctree entries form a logical unit, so + # separating mode is no longer used -- it's kept here for history's sake + tocentries = _entries_from_toctree(toctree, [], separate=False) + if not tocentries: + return None + + newnode = addnodes.compact_paragraph('', '') + caption = toctree.attributes.get('caption') + if caption: + caption_node = nodes.caption(caption, '', *[nodes.Text(caption)]) + caption_node.line = toctree.line + caption_node.source = toctree.source + caption_node.rawsource = toctree['rawcaption'] + if hasattr(toctree, 'uid'): + # move uid to caption_node to translate it + caption_node.uid = toctree.uid + del toctree.uid + newnode += caption_node + newnode.extend(tocentries) + newnode['toctree'] = True + + # prune the tree to maxdepth, also set toc depth and current classes + _toctree_add_classes(newnode, 1) + self._toctree_prune(newnode, 1, prune and maxdepth or 0, collapse) + + if len(newnode[-1]) == 0: # No titles found + return None + + # set the target paths in the toctrees (they are not known at TOC + # generation time) + for refnode in newnode.traverse(nodes.reference): + if not url_re.match(refnode['refuri']): + refnode['refuri'] = builder.get_relative_uri( + docname, refnode['refuri']) + refnode['anchorname'] + return newnode + + def get_toctree_ancestors(self, docname): + # type: (unicode) -> List[unicode] + parent = {} + for p, children in iteritems(self.toctree_includes): + for child in children: + parent[child] = p + ancestors = [] # type: List[unicode] + d = docname + while d in parent and d not in ancestors: + ancestors.append(d) + d = parent[d] + return ancestors + + def _toctree_prune(self, node, depth, maxdepth, collapse=False): + # type: (nodes.Node, int, int, bool) -> None + """Utility: Cut a TOC at a specified depth.""" + for subnode in node.children[:]: + if isinstance(subnode, (addnodes.compact_paragraph, + nodes.list_item)): + # for <p> and <li>, just recurse + self._toctree_prune(subnode, depth, maxdepth, collapse) + elif isinstance(subnode, nodes.bullet_list): + # for <ul>, determine if the depth is too large or if the + # entry is to be collapsed + if maxdepth > 0 and depth > maxdepth: + subnode.parent.replace(subnode, []) + else: + # cull sub-entries whose parents aren't 'current' + if (collapse and depth > 1 and + 'iscurrent' not in subnode.parent): + subnode.parent.remove(subnode) + else: + # recurse on visible children + self._toctree_prune(subnode, depth+1, maxdepth, collapse) + + def assign_section_numbers(self): + # type: () -> List[unicode] + """Assign a section number to each heading under a numbered toctree.""" + # a list of all docnames whose section numbers changed + rewrite_needed = [] + + assigned = set() # type: Set[unicode] + old_secnumbers = self.toc_secnumbers + self.toc_secnumbers = self.env.toc_secnumbers = {} + + def _walk_toc(node, secnums, depth, titlenode=None): + # titlenode is the title of the document, it will get assigned a + # secnumber too, so that it shows up in next/prev/parent rellinks + for subnode in node.children: + if isinstance(subnode, nodes.bullet_list): + numstack.append(0) + _walk_toc(subnode, secnums, depth-1, titlenode) + numstack.pop() + titlenode = None + elif isinstance(subnode, nodes.list_item): + _walk_toc(subnode, secnums, depth, titlenode) + titlenode = None + elif isinstance(subnode, addnodes.only): + # at this stage we don't know yet which sections are going + # to be included; just include all of them, even if it leads + # to gaps in the numbering + _walk_toc(subnode, secnums, depth, titlenode) + titlenode = None + elif isinstance(subnode, addnodes.compact_paragraph): + numstack[-1] += 1 + if depth > 0: + number = tuple(numstack) + else: + number = None + secnums[subnode[0]['anchorname']] = \ + subnode[0]['secnumber'] = number + if titlenode: + titlenode['secnumber'] = number + titlenode = None + elif isinstance(subnode, addnodes.toctree): + _walk_toctree(subnode, depth) + + def _walk_toctree(toctreenode, depth): + if depth == 0: + return + for (title, ref) in toctreenode['entries']: + if url_re.match(ref) or ref == 'self' or ref in assigned: + # don't mess with those + continue + if ref in self.tocs: + secnums = self.toc_secnumbers[ref] = {} + assigned.add(ref) + _walk_toc(self.tocs[ref], secnums, depth, + self.env.titles.get(ref)) + if secnums != old_secnumbers.get(ref): + rewrite_needed.append(ref) + + for docname in self.numbered_toctrees: + assigned.add(docname) + doctree = self.env.get_doctree(docname) + for toctreenode in doctree.traverse(addnodes.toctree): + depth = toctreenode.get('numbered', 0) + if depth: + # every numbered toctree gets new numbering + numstack = [0] + _walk_toctree(toctreenode, depth) + + return rewrite_needed + + def assign_figure_numbers(self): + # type: () -> List[unicode] + """Assign a figure number to each figure under a numbered toctree.""" + + rewrite_needed = [] + + assigned = set() # type: Set[unicode] + old_fignumbers = self.toc_fignumbers + self.toc_fignumbers = self.env.toc_fignumbers = {} + fignum_counter = {} # type: Dict[unicode, Dict[Tuple[int], int]] + + def get_section_number(docname, section): + anchorname = '#' + section['ids'][0] + secnumbers = self.toc_secnumbers.get(docname, {}) + if anchorname in secnumbers: + secnum = secnumbers.get(anchorname) + else: + secnum = secnumbers.get('') + + return secnum or tuple() + + def get_next_fignumber(figtype, secnum): + counter = fignum_counter.setdefault(figtype, {}) + + secnum = secnum[:self.env.config.numfig_secnum_depth] + counter[secnum] = counter.get(secnum, 0) + 1 + return secnum + (counter[secnum],) + + def register_fignumber(docname, secnum, figtype, fignode): + self.toc_fignumbers.setdefault(docname, {}) + fignumbers = self.toc_fignumbers[docname].setdefault(figtype, {}) + figure_id = fignode['ids'][0] + + fignumbers[figure_id] = get_next_fignumber(figtype, secnum) + + def _walk_doctree(docname, doctree, secnum): + for subnode in doctree.children: + if isinstance(subnode, nodes.section): + next_secnum = get_section_number(docname, subnode) + if next_secnum: + _walk_doctree(docname, subnode, next_secnum) + else: + _walk_doctree(docname, subnode, secnum) + continue + elif isinstance(subnode, addnodes.toctree): + for title, subdocname in subnode['entries']: + if url_re.match(subdocname) or subdocname == 'self': + # don't mess with those + continue + + _walk_doc(subdocname, secnum) + + continue + + figtype = self.env.get_domain('std').get_figtype(subnode) # type: ignore + if figtype and subnode['ids']: + register_fignumber(docname, secnum, figtype, subnode) + + _walk_doctree(docname, subnode, secnum) + + def _walk_doc(docname, secnum): + if docname not in assigned: + assigned.add(docname) + doctree = self.env.get_doctree(docname) + _walk_doctree(docname, doctree, secnum) + + if self.env.config.numfig: + _walk_doc(self.env.config.master_doc, tuple()) + for docname, fignums in iteritems(self.toc_fignumbers): + if fignums != old_fignumbers.get(docname): + rewrite_needed.append(docname) + + return rewrite_needed diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 08afb1b86..1f83cd43f 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -765,36 +765,36 @@ class LaTeXTranslator(nodes.NodeVisitor): if isinstance(parent, addnodes.seealso): # the environment already handles this raise nodes.SkipNode - elif self.this_is_the_title: - if len(node.children) != 1 and not isinstance(node.children[0], - nodes.Text): - self.builder.warn('document title is not a single Text node', - (self.curfilestack[-1], node.line)) - if not self.elements['title']: - # text needs to be escaped since it is inserted into - # the output literally - self.elements['title'] = node.astext().translate(tex_escape_map) - self.this_is_the_title = 0 - raise nodes.SkipNode elif isinstance(parent, nodes.section): - short = '' - if node.traverse(nodes.image): - short = ('[%s]' % - u' '.join(clean_astext(node).split()).translate(tex_escape_map)) + if self.this_is_the_title: + if len(node.children) != 1 and not isinstance(node.children[0], + nodes.Text): + self.builder.warn('document title is not a single Text node', + (self.curfilestack[-1], node.line)) + if not self.elements['title']: + # text needs to be escaped since it is inserted into + # the output literally + self.elements['title'] = node.astext().translate(tex_escape_map) + self.this_is_the_title = 0 + raise nodes.SkipNode + else: + short = '' + if node.traverse(nodes.image): + short = ('[%s]' % + u' '.join(clean_astext(node).split()).translate(tex_escape_map)) - try: - self.body.append(r'\%s%s{' % (self.sectionnames[self.sectionlevel], short)) - except IndexError: - # just use "subparagraph", it's not numbered anyway - self.body.append(r'\%s%s{' % (self.sectionnames[-1], short)) - self.context.append('}\n') - - self.restrict_footnote(node) - if self.next_section_ids: - for id in self.next_section_ids: - self.context[-1] += self.hypertarget(id, anchor=False) - self.next_section_ids.clear() + try: + self.body.append(r'\%s%s{' % (self.sectionnames[self.sectionlevel], short)) + except IndexError: + # just use "subparagraph", it's not numbered anyway + self.body.append(r'\%s%s{' % (self.sectionnames[-1], short)) + self.context.append('}\n') + self.restrict_footnote(node) + if self.next_section_ids: + for id in self.next_section_ids: + self.context[-1] += self.hypertarget(id, anchor=False) + self.next_section_ids.clear() elif isinstance(parent, (nodes.topic, nodes.sidebar)): self.body.append(r'\textbf{') self.context.append('}\n\n\medskip\n\n') diff --git a/tests/roots/test-latex-title/conf.py b/tests/roots/test-latex-title/conf.py new file mode 100644 index 000000000..709f1be48 --- /dev/null +++ b/tests/roots/test-latex-title/conf.py @@ -0,0 +1,8 @@ +# -*- coding: utf-8 -*- + +master_doc = 'index' + +# set empty string to the third column to use the first section title to document title +latex_documents = [ + (master_doc, 'test.tex', '', 'Sphinx', 'report') +] diff --git a/tests/roots/test-latex-title/index.rst b/tests/roots/test-latex-title/index.rst new file mode 100644 index 000000000..411ad0009 --- /dev/null +++ b/tests/roots/test-latex-title/index.rst @@ -0,0 +1,12 @@ +.. admonition:: Notice + + This generates nodes.title node before first section title. + +test-latex-title +================ + +.. toctree:: + :numbered: + + foo + bar diff --git a/tests/test_build_latex.py b/tests/test_build_latex.py index 77ba4ca85..9ffca6b4e 100644 --- a/tests/test_build_latex.py +++ b/tests/test_build_latex.py @@ -181,6 +181,26 @@ def test_latex_warnings(app, status, warning): '--- Got:\n' + warnings +@with_app(buildername='latex', testroot='basic') +def test_latex_title(app, status, warning): + app.builder.build_all() + result = (app.outdir / 'test.tex').text(encoding='utf8') + print(result) + print(status.getvalue()) + print(warning.getvalue()) + assert '\\title{The basic Sphinx documentation for testing}' in result + + +@with_app(buildername='latex', testroot='latex-title') +def test_latex_title_after_admonitions(app, status, warning): + app.builder.build_all() + result = (app.outdir / 'test.tex').text(encoding='utf8') + print(result) + print(status.getvalue()) + print(warning.getvalue()) + assert '\\title{test-latex-title}' in result + + @with_app(buildername='latex', testroot='numfig', confoverrides={'numfig': True}) def test_numref(app, status, warning): From 9676e79c1cece0d76aa78fc3f00ea55e17f34434 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Tue, 22 Nov 2016 00:00:50 +0900 Subject: [PATCH 262/297] inheritance_diagram: Move _import_class_or_module() method to function --- sphinx/ext/inheritance_diagram.py | 93 ++++++++++--------- .../example/__init__.py | 1 + .../example/sphinx.py | 5 + tests/test_ext_inheritance_diagram.py | 47 +++++++++- 4 files changed, 99 insertions(+), 47 deletions(-) create mode 100644 tests/roots/test-ext-inheritance_diagram/example/__init__.py create mode 100644 tests/roots/test-ext-inheritance_diagram/example/sphinx.py diff --git a/sphinx/ext/inheritance_diagram.py b/sphinx/ext/inheritance_diagram.py index a06c4b17c..e29d849e9 100644 --- a/sphinx/ext/inheritance_diagram.py +++ b/sphinx/ext/inheritance_diagram.py @@ -63,6 +63,52 @@ class_sig_re = re.compile(r'''^([\w.]*\.)? # module names ''', re.VERBOSE) +def import_classes(name, currmodule): + """Import a class using its fully-qualified *name*.""" + try: + path, base = class_sig_re.match(name).groups() + except (AttributeError, ValueError): + raise InheritanceException('Invalid class or module %r specified ' + 'for inheritance diagram' % name) + + fullname = (path or '') + base + path = (path and path.rstrip('.') or '') + + # two possibilities: either it is a module, then import it + try: + __import__(fullname) + todoc = sys.modules[fullname] + except ImportError: + # else it is a class, then import the module + if not path: + if currmodule: + # try the current module + path = currmodule + else: + raise InheritanceException( + 'Could not import class %r specified for ' + 'inheritance diagram' % base) + try: + __import__(path) + todoc = getattr(sys.modules[path], base) + except (ImportError, AttributeError): + raise InheritanceException( + 'Could not import class or module %r specified for ' + 'inheritance diagram' % (path + '.' + base)) + + # If a class, just return it + if inspect.isclass(todoc): + return [todoc] + elif inspect.ismodule(todoc): + classes = [] + for cls in todoc.__dict__.values(): + if inspect.isclass(cls) and cls.__module__ == todoc.__name__: + classes.append(cls) + return classes + raise InheritanceException('%r specified for inheritance diagram is ' + 'not a class or module' % name) + + class InheritanceException(Exception): pass @@ -88,56 +134,11 @@ class InheritanceGraph(object): raise InheritanceException('No classes found for ' 'inheritance diagram') - def _import_class_or_module(self, name, currmodule): - """Import a class using its fully-qualified *name*.""" - try: - path, base = class_sig_re.match(name).groups() - except (AttributeError, ValueError): - raise InheritanceException('Invalid class or module %r specified ' - 'for inheritance diagram' % name) - - fullname = (path or '') + base - path = (path and path.rstrip('.') or '') - - # two possibilities: either it is a module, then import it - try: - __import__(fullname) - todoc = sys.modules[fullname] - except ImportError: - # else it is a class, then import the module - if not path: - if currmodule: - # try the current module - path = currmodule - else: - raise InheritanceException( - 'Could not import class %r specified for ' - 'inheritance diagram' % base) - try: - __import__(path) - todoc = getattr(sys.modules[path], base) - except (ImportError, AttributeError): - raise InheritanceException( - 'Could not import class or module %r specified for ' - 'inheritance diagram' % (path + '.' + base)) - - # If a class, just return it - if inspect.isclass(todoc): - return [todoc] - elif inspect.ismodule(todoc): - classes = [] - for cls in todoc.__dict__.values(): - if inspect.isclass(cls) and cls.__module__ == todoc.__name__: - classes.append(cls) - return classes - raise InheritanceException('%r specified for inheritance diagram is ' - 'not a class or module' % name) - def _import_classes(self, class_names, currmodule): """Import a list of classes.""" classes = [] for name in class_names: - classes.extend(self._import_class_or_module(name, currmodule)) + classes.extend(import_classes(name, currmodule)) return classes def _class_info(self, classes, show_builtins, private_bases, parts): diff --git a/tests/roots/test-ext-inheritance_diagram/example/__init__.py b/tests/roots/test-ext-inheritance_diagram/example/__init__.py new file mode 100644 index 000000000..2f85c0876 --- /dev/null +++ b/tests/roots/test-ext-inheritance_diagram/example/__init__.py @@ -0,0 +1 @@ +# example.py diff --git a/tests/roots/test-ext-inheritance_diagram/example/sphinx.py b/tests/roots/test-ext-inheritance_diagram/example/sphinx.py new file mode 100644 index 000000000..5eb8a2291 --- /dev/null +++ b/tests/roots/test-ext-inheritance_diagram/example/sphinx.py @@ -0,0 +1,5 @@ +# example.sphinx + + +class DummyClass(object): + pass diff --git a/tests/test_ext_inheritance_diagram.py b/tests/test_ext_inheritance_diagram.py index 64446eed8..e641cc0de 100644 --- a/tests/test_ext_inheritance_diagram.py +++ b/tests/test_ext_inheritance_diagram.py @@ -9,9 +9,54 @@ :license: BSD, see LICENSE for details. """ -from util import with_app +import sys +from util import with_app, rootdir, raises +from sphinx.ext.inheritance_diagram import InheritanceException, import_classes @with_app('html', testroot='ext-inheritance_diagram') def test_inheritance_diagram_html(app, status, warning): app.builder.build_all() + + +def test_import_classes(): + from sphinx.application import Sphinx, TemplateBridge + + try: + sys.path.append(rootdir / 'roots/test-ext-inheritance_diagram') + + # got exception for unknown class or module + raises(InheritanceException, import_classes, 'unknown', None) + raises(InheritanceException, import_classes, 'unknown.Unknown', None) + + # a module having no classes + classes = import_classes('sphinx', None) + assert classes == [] + + classes = import_classes('sphinx', 'foo') + assert classes == [] + + # all of classes in the module + classes = import_classes('sphinx.application', None) + assert set(classes) == set([Sphinx, TemplateBridge]) + + # specified class in the module + classes = import_classes('sphinx.application.Sphinx', None) + assert classes == [Sphinx] + + # specified class in current module + classes = import_classes('Sphinx', 'sphinx.application') + assert classes == [Sphinx] + + # ignore current module if name include the module name + raises(InheritanceException, import_classes, 'i18n.CatalogInfo', 'sphinx.util') + + # got exception for functions + raises(InheritanceException, import_classes, 'encode_uri', 'sphinx.util') + + # try to load example.sphinx, but inheritance_diagram imports sphinx instead + # refs: #3164 + classes = import_classes('sphinx', 'example') + assert classes == [] + finally: + sys.path.pop() From 52f54a637903a60cbda4074a2c903ed2b4528689 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Tue, 22 Nov 2016 16:32:03 +0900 Subject: [PATCH 263/297] Fix #3164: Change search order of ``sphinx.ext.inheritance_diagram`` --- CHANGES | 1 + sphinx/ext/inheritance_diagram.py | 80 ++++++++++++++------------- tests/test_ext_inheritance_diagram.py | 12 ++-- 3 files changed, 51 insertions(+), 42 deletions(-) diff --git a/CHANGES b/CHANGES index 9c6ca126b..582f7a301 100644 --- a/CHANGES +++ b/CHANGES @@ -15,6 +15,7 @@ Bugs fixed * #3093: gettext build broken on image node under ``note`` directive. * imgmath: crashes on showing error messages if image generation failed * #3117: LaTeX writer crashes if admonition is placed before first section title +* #3164: Change search order of ``sphinx.ext.inheritance_diagram`` Release 1.4.8 (released Oct 1, 2016) ==================================== diff --git a/sphinx/ext/inheritance_diagram.py b/sphinx/ext/inheritance_diagram.py index e29d849e9..eec56dc86 100644 --- a/sphinx/ext/inheritance_diagram.py +++ b/sphinx/ext/inheritance_diagram.py @@ -58,51 +58,57 @@ from sphinx.util import force_decode from sphinx.util.compat import Directive -class_sig_re = re.compile(r'''^([\w.]*\.)? # module names - (\w+) \s* $ # class/final module name - ''', re.VERBOSE) +module_sig_re = re.compile(r'''^(?:([\w.]*)\.)? # module names + (\w+) \s* $ # class/final module name + ''', re.VERBOSE) + + +def try_import(objname): + """Import a object or module using *name* and *currentmodule*. + *name* should be a relative name from *currentmodule* or + a fully-qualified name. + + Returns imported object or module. If failed, returns None value. + """ + try: + __import__(objname) + return sys.modules.get(objname) + except ImportError: + modname, attrname = module_sig_re.match(objname).groups() + if modname is None: + return None + try: + __import__(modname) + return getattr(sys.modules.get(modname), attrname, None) + except ImportError: + return None def import_classes(name, currmodule): """Import a class using its fully-qualified *name*.""" - try: - path, base = class_sig_re.match(name).groups() - except (AttributeError, ValueError): - raise InheritanceException('Invalid class or module %r specified ' - 'for inheritance diagram' % name) + target = None - fullname = (path or '') + base - path = (path and path.rstrip('.') or '') + # import class or module using currmodule + if currmodule: + target = try_import(currmodule + '.' + name) - # two possibilities: either it is a module, then import it - try: - __import__(fullname) - todoc = sys.modules[fullname] - except ImportError: - # else it is a class, then import the module - if not path: - if currmodule: - # try the current module - path = currmodule - else: - raise InheritanceException( - 'Could not import class %r specified for ' - 'inheritance diagram' % base) - try: - __import__(path) - todoc = getattr(sys.modules[path], base) - except (ImportError, AttributeError): - raise InheritanceException( - 'Could not import class or module %r specified for ' - 'inheritance diagram' % (path + '.' + base)) + # import class or module without currmodule + if target is None: + target = try_import(name) - # If a class, just return it - if inspect.isclass(todoc): - return [todoc] - elif inspect.ismodule(todoc): + if target is None: + raise InheritanceException( + 'Could not import class or module %r specified for ' + 'inheritance diagram' % name) + + if inspect.isclass(target): + # If imported object is a class, just return it + return [target] + elif inspect.ismodule(target): + # If imported object is a module, return classes defined on it classes = [] - for cls in todoc.__dict__.values(): - if inspect.isclass(cls) and cls.__module__ == todoc.__name__: + for cls in target.__dict__.values(): + if inspect.isclass(cls) and cls.__module__ == target.__name__: classes.append(cls) return classes raise InheritanceException('%r specified for inheritance diagram is ' diff --git a/tests/test_ext_inheritance_diagram.py b/tests/test_ext_inheritance_diagram.py index e641cc0de..ba912254a 100644 --- a/tests/test_ext_inheritance_diagram.py +++ b/tests/test_ext_inheritance_diagram.py @@ -21,9 +21,11 @@ def test_inheritance_diagram_html(app, status, warning): def test_import_classes(): from sphinx.application import Sphinx, TemplateBridge + from sphinx.util.i18n import CatalogInfo try: sys.path.append(rootdir / 'roots/test-ext-inheritance_diagram') + from example.sphinx import DummyClass # got exception for unknown class or module raises(InheritanceException, import_classes, 'unknown', None) @@ -48,15 +50,15 @@ def test_import_classes(): classes = import_classes('Sphinx', 'sphinx.application') assert classes == [Sphinx] - # ignore current module if name include the module name - raises(InheritanceException, import_classes, 'i18n.CatalogInfo', 'sphinx.util') + # relative module name to current module + classes = import_classes('i18n.CatalogInfo', 'sphinx.util') + assert classes == [CatalogInfo] # got exception for functions raises(InheritanceException, import_classes, 'encode_uri', 'sphinx.util') - # try to load example.sphinx, but inheritance_diagram imports sphinx instead - # refs: #3164 + # import submodule on current module (refs: #3164) classes = import_classes('sphinx', 'example') - assert classes == [] + assert classes == [DummyClass] finally: sys.path.pop() From 43fe104501912077dde3890b392a2518f784bef9 Mon Sep 17 00:00:00 2001 From: shimizukawa <shimizukawa@gmail.com> Date: Wed, 23 Nov 2016 11:56:49 +0900 Subject: [PATCH 264/297] make-mode is used by default. --- doc/invocation.rst | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/invocation.rst b/doc/invocation.rst index 436c652f9..4b4593014 100644 --- a/doc/invocation.rst +++ b/doc/invocation.rst @@ -128,7 +128,10 @@ Makefile and Batchfile creation options .. option:: --use-make-mode, --no-use-make-mode - Makefile/make.bat uses (or not use) make-mode. Default is not use. + Makefile/make.bat uses (or not use) make-mode. Default is use. + + .. versionchanged:: 1.5 + make-mode is default. .. option:: --makefile, --no-makefile From 97365c7db3f327879df8236852dca36b92f84582 Mon Sep 17 00:00:00 2001 From: shimizukawa <shimizukawa@gmail.com> Date: Wed, 23 Nov 2016 11:56:49 +0900 Subject: [PATCH 265/297] make-mode is used by default. --- doc/invocation.rst | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/invocation.rst b/doc/invocation.rst index 436c652f9..4b4593014 100644 --- a/doc/invocation.rst +++ b/doc/invocation.rst @@ -128,7 +128,10 @@ Makefile and Batchfile creation options .. option:: --use-make-mode, --no-use-make-mode - Makefile/make.bat uses (or not use) make-mode. Default is not use. + Makefile/make.bat uses (or not use) make-mode. Default is use. + + .. versionchanged:: 1.5 + make-mode is default. .. option:: --makefile, --no-makefile From cacfa68e74fd7d137c3265364aeec2d811345ffe Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Wed, 23 Nov 2016 12:31:27 +0900 Subject: [PATCH 266/297] Remove unused file --- sphinx/environment/managers/toctree.py | 580 ------------------------- 1 file changed, 580 deletions(-) delete mode 100644 sphinx/environment/managers/toctree.py diff --git a/sphinx/environment/managers/toctree.py b/sphinx/environment/managers/toctree.py deleted file mode 100644 index 26c8f385d..000000000 --- a/sphinx/environment/managers/toctree.py +++ /dev/null @@ -1,580 +0,0 @@ -# -*- coding: utf-8 -*- -""" - sphinx.environment.managers.toctree - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - Toctree manager for sphinx.environment. - - :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS. - :license: BSD, see LICENSE for details. -""" - -from six import iteritems - -from docutils import nodes - -from sphinx import addnodes -from sphinx.util import url_re -from sphinx.util.nodes import clean_astext, process_only_nodes -from sphinx.transforms import SphinxContentsFilter -from sphinx.environment.managers import EnvironmentManager - -if False: - # For type annotation - from typing import Any, Tuple # NOQA - from sphinx.builders import Builder # NOQA - from sphinx.environment import BuildEnvironment # NOQA - - -class Toctree(EnvironmentManager): - name = 'toctree' - - def __init__(self, env): - # type: (BuildEnvironment) -> None - super(Toctree, self).__init__(env) - - self.tocs = env.tocs - self.toc_num_entries = env.toc_num_entries - self.toc_secnumbers = env.toc_secnumbers - self.toc_fignumbers = env.toc_fignumbers - self.toctree_includes = env.toctree_includes - self.files_to_rebuild = env.files_to_rebuild - self.glob_toctrees = env.glob_toctrees - self.numbered_toctrees = env.numbered_toctrees - - def clear_doc(self, docname): - # type: (unicode) -> None - self.tocs.pop(docname, None) - self.toc_secnumbers.pop(docname, None) - self.toc_fignumbers.pop(docname, None) - self.toc_num_entries.pop(docname, None) - self.toctree_includes.pop(docname, None) - self.glob_toctrees.discard(docname) - self.numbered_toctrees.discard(docname) - - for subfn, fnset in list(self.files_to_rebuild.items()): - fnset.discard(docname) - if not fnset: - del self.files_to_rebuild[subfn] - - def merge_other(self, docnames, other): - # type: (List[unicode], BuildEnvironment) -> None - for docname in docnames: - self.tocs[docname] = other.tocs[docname] - self.toc_num_entries[docname] = other.toc_num_entries[docname] - if docname in other.toctree_includes: - self.toctree_includes[docname] = other.toctree_includes[docname] - if docname in other.glob_toctrees: - self.glob_toctrees.add(docname) - if docname in other.numbered_toctrees: - self.numbered_toctrees.add(docname) - - for subfn, fnset in other.files_to_rebuild.items(): - self.files_to_rebuild.setdefault(subfn, set()).update(fnset & docnames) - - def process_doc(self, docname, doctree): - # type: (unicode, nodes.Node) -> None - """Build a TOC from the doctree and store it in the inventory.""" - numentries = [0] # nonlocal again... - - def traverse_in_section(node, cls): - """Like traverse(), but stay within the same section.""" - result = [] - if isinstance(node, cls): - result.append(node) - for child in node.children: - if isinstance(child, nodes.section): - continue - result.extend(traverse_in_section(child, cls)) - return result - - def build_toc(node, depth=1): - entries = [] - for sectionnode in node: - # find all toctree nodes in this section and add them - # to the toc (just copying the toctree node which is then - # resolved in self.get_and_resolve_doctree) - if isinstance(sectionnode, addnodes.only): - onlynode = addnodes.only(expr=sectionnode['expr']) - blist = build_toc(sectionnode, depth) - if blist: - onlynode += blist.children - entries.append(onlynode) - continue - if not isinstance(sectionnode, nodes.section): - for toctreenode in traverse_in_section(sectionnode, - addnodes.toctree): - item = toctreenode.copy() - entries.append(item) - # important: do the inventory stuff - self.note_toctree(docname, toctreenode) - continue - title = sectionnode[0] - # copy the contents of the section title, but without references - # and unnecessary stuff - visitor = SphinxContentsFilter(doctree) - title.walkabout(visitor) - nodetext = visitor.get_entry_text() - if not numentries[0]: - # for the very first toc entry, don't add an anchor - # as it is the file's title anyway - anchorname = '' - else: - anchorname = '#' + sectionnode['ids'][0] - numentries[0] += 1 - # make these nodes: - # list_item -> compact_paragraph -> reference - reference = nodes.reference( - '', '', internal=True, refuri=docname, - anchorname=anchorname, *nodetext) - para = addnodes.compact_paragraph('', '', reference) - item = nodes.list_item('', para) - sub_item = build_toc(sectionnode, depth + 1) - item += sub_item - entries.append(item) - if entries: - return nodes.bullet_list('', *entries) - return [] - toc = build_toc(doctree) - if toc: - self.tocs[docname] = toc - else: - self.tocs[docname] = nodes.bullet_list('') - self.toc_num_entries[docname] = numentries[0] - - def note_toctree(self, docname, toctreenode): - # type: (unicode, addnodes.toctree) -> None - """Note a TOC tree directive in a document and gather information about - file relations from it. - """ - if toctreenode['glob']: - self.glob_toctrees.add(docname) - if toctreenode.get('numbered'): - self.numbered_toctrees.add(docname) - includefiles = toctreenode['includefiles'] - for includefile in includefiles: - # note that if the included file is rebuilt, this one must be - # too (since the TOC of the included file could have changed) - self.files_to_rebuild.setdefault(includefile, set()).add(docname) - self.toctree_includes.setdefault(docname, []).extend(includefiles) - - def get_toc_for(self, docname, builder): - # type: (unicode, Builder) -> None - """Return a TOC nodetree -- for use on the same page only!""" - tocdepth = self.env.metadata[docname].get('tocdepth', 0) - try: - toc = self.tocs[docname].deepcopy() - self._toctree_prune(toc, 2, tocdepth) - except KeyError: - # the document does not exist anymore: return a dummy node that - # renders to nothing - return nodes.paragraph() - process_only_nodes(toc, builder.tags, warn_node=self.env.warn_node) - for node in toc.traverse(nodes.reference): - node['refuri'] = node['anchorname'] or '#' - return toc - - def get_toctree_for(self, docname, builder, collapse, **kwds): - # type: (unicode, Builder, bool, Any) -> nodes.Node - """Return the global TOC nodetree.""" - doctree = self.env.get_doctree(self.env.config.master_doc) - toctrees = [] - if 'includehidden' not in kwds: - kwds['includehidden'] = True - if 'maxdepth' not in kwds: - kwds['maxdepth'] = 0 - kwds['collapse'] = collapse - for toctreenode in doctree.traverse(addnodes.toctree): - toctree = self.env.resolve_toctree(docname, builder, toctreenode, - prune=True, **kwds) - if toctree: - toctrees.append(toctree) - if not toctrees: - return None - result = toctrees[0] - for toctree in toctrees[1:]: - result.extend(toctree.children) - return result - - def resolve_toctree(self, docname, builder, toctree, prune=True, maxdepth=0, - titles_only=False, collapse=False, includehidden=False): - # type: (unicode, Builder, addnodes.toctree, bool, int, bool, bool, bool) -> nodes.Node - """Resolve a *toctree* node into individual bullet lists with titles - as items, returning None (if no containing titles are found) or - a new node. - - If *prune* is True, the tree is pruned to *maxdepth*, or if that is 0, - to the value of the *maxdepth* option on the *toctree* node. - If *titles_only* is True, only toplevel document titles will be in the - resulting tree. - If *collapse* is True, all branches not containing docname will - be collapsed. - """ - if toctree.get('hidden', False) and not includehidden: - return None - - # For reading the following two helper function, it is useful to keep - # in mind the node structure of a toctree (using HTML-like node names - # for brevity): - # - # <ul> - # <li> - # <p><a></p> - # <p><a></p> - # ... - # <ul> - # ... - # </ul> - # </li> - # </ul> - # - # The transformation is made in two passes in order to avoid - # interactions between marking and pruning the tree (see bug #1046). - - toctree_ancestors = self.get_toctree_ancestors(docname) - - def _toctree_add_classes(node, depth): - """Add 'toctree-l%d' and 'current' classes to the toctree.""" - for subnode in node.children: - if isinstance(subnode, (addnodes.compact_paragraph, - nodes.list_item)): - # for <p> and <li>, indicate the depth level and recurse - subnode['classes'].append('toctree-l%d' % (depth-1)) - _toctree_add_classes(subnode, depth) - elif isinstance(subnode, nodes.bullet_list): - # for <ul>, just recurse - _toctree_add_classes(subnode, depth+1) - elif isinstance(subnode, nodes.reference): - # for <a>, identify which entries point to the current - # document and therefore may not be collapsed - if subnode['refuri'] == docname: - if not subnode['anchorname']: - # give the whole branch a 'current' class - # (useful for styling it differently) - branchnode = subnode - while branchnode: - branchnode['classes'].append('current') - branchnode = branchnode.parent - # mark the list_item as "on current page" - if subnode.parent.parent.get('iscurrent'): - # but only if it's not already done - return - while subnode: - subnode['iscurrent'] = True - subnode = subnode.parent - - def _entries_from_toctree(toctreenode, parents, - separate=False, subtree=False): - """Return TOC entries for a toctree node.""" - refs = [(e[0], e[1]) for e in toctreenode['entries']] - entries = [] - for (title, ref) in refs: - try: - refdoc = None - if url_re.match(ref): - if title is None: - title = ref - reference = nodes.reference('', '', internal=False, - refuri=ref, anchorname='', - *[nodes.Text(title)]) - para = addnodes.compact_paragraph('', '', reference) - item = nodes.list_item('', para) - toc = nodes.bullet_list('', item) - elif ref == 'self': - # 'self' refers to the document from which this - # toctree originates - ref = toctreenode['parent'] - if not title: - title = clean_astext(self.titles[ref]) - reference = nodes.reference('', '', internal=True, - refuri=ref, - anchorname='', - *[nodes.Text(title)]) - para = addnodes.compact_paragraph('', '', reference) - item = nodes.list_item('', para) - # don't show subitems - toc = nodes.bullet_list('', item) - else: - if ref in parents: - self.env.warn(ref, 'circular toctree references ' - 'detected, ignoring: %s <- %s' % - (ref, ' <- '.join(parents))) - continue - refdoc = ref - toc = self.tocs[ref].deepcopy() - maxdepth = self.env.metadata[ref].get('tocdepth', 0) - if ref not in toctree_ancestors or (prune and maxdepth > 0): - self._toctree_prune(toc, 2, maxdepth, collapse) - process_only_nodes(toc, builder.tags, warn_node=self.env.warn_node) - if title and toc.children and len(toc.children) == 1: - child = toc.children[0] - for refnode in child.traverse(nodes.reference): - if refnode['refuri'] == ref and \ - not refnode['anchorname']: - refnode.children = [nodes.Text(title)] - if not toc.children: - # empty toc means: no titles will show up in the toctree - self.env.warn_node( - 'toctree contains reference to document %r that ' - 'doesn\'t have a title: no link will be generated' - % ref, toctreenode) - except KeyError: - # this is raised if the included file does not exist - self.env.warn_node( - 'toctree contains reference to nonexisting document %r' - % ref, toctreenode) - else: - # if titles_only is given, only keep the main title and - # sub-toctrees - if titles_only: - # delete everything but the toplevel title(s) - # and toctrees - for toplevel in toc: - # nodes with length 1 don't have any children anyway - if len(toplevel) > 1: - subtrees = toplevel.traverse(addnodes.toctree) - if subtrees: - toplevel[1][:] = subtrees - else: - toplevel.pop(1) - # resolve all sub-toctrees - for subtocnode in toc.traverse(addnodes.toctree): - if not (subtocnode.get('hidden', False) and - not includehidden): - i = subtocnode.parent.index(subtocnode) + 1 - for item in _entries_from_toctree( - subtocnode, [refdoc] + parents, - subtree=True): - subtocnode.parent.insert(i, item) - i += 1 - subtocnode.parent.remove(subtocnode) - if separate: - entries.append(toc) - else: - entries.extend(toc.children) - if not subtree and not separate: - ret = nodes.bullet_list() - ret += entries - return [ret] - return entries - - maxdepth = maxdepth or toctree.get('maxdepth', -1) - if not titles_only and toctree.get('titlesonly', False): - titles_only = True - if not includehidden and toctree.get('includehidden', False): - includehidden = True - - # NOTE: previously, this was separate=True, but that leads to artificial - # separation when two or more toctree entries form a logical unit, so - # separating mode is no longer used -- it's kept here for history's sake - tocentries = _entries_from_toctree(toctree, [], separate=False) - if not tocentries: - return None - - newnode = addnodes.compact_paragraph('', '') - caption = toctree.attributes.get('caption') - if caption: - caption_node = nodes.caption(caption, '', *[nodes.Text(caption)]) - caption_node.line = toctree.line - caption_node.source = toctree.source - caption_node.rawsource = toctree['rawcaption'] - if hasattr(toctree, 'uid'): - # move uid to caption_node to translate it - caption_node.uid = toctree.uid - del toctree.uid - newnode += caption_node - newnode.extend(tocentries) - newnode['toctree'] = True - - # prune the tree to maxdepth, also set toc depth and current classes - _toctree_add_classes(newnode, 1) - self._toctree_prune(newnode, 1, prune and maxdepth or 0, collapse) - - if len(newnode[-1]) == 0: # No titles found - return None - - # set the target paths in the toctrees (they are not known at TOC - # generation time) - for refnode in newnode.traverse(nodes.reference): - if not url_re.match(refnode['refuri']): - refnode['refuri'] = builder.get_relative_uri( - docname, refnode['refuri']) + refnode['anchorname'] - return newnode - - def get_toctree_ancestors(self, docname): - # type: (unicode) -> List[unicode] - parent = {} - for p, children in iteritems(self.toctree_includes): - for child in children: - parent[child] = p - ancestors = [] # type: List[unicode] - d = docname - while d in parent and d not in ancestors: - ancestors.append(d) - d = parent[d] - return ancestors - - def _toctree_prune(self, node, depth, maxdepth, collapse=False): - # type: (nodes.Node, int, int, bool) -> None - """Utility: Cut a TOC at a specified depth.""" - for subnode in node.children[:]: - if isinstance(subnode, (addnodes.compact_paragraph, - nodes.list_item)): - # for <p> and <li>, just recurse - self._toctree_prune(subnode, depth, maxdepth, collapse) - elif isinstance(subnode, nodes.bullet_list): - # for <ul>, determine if the depth is too large or if the - # entry is to be collapsed - if maxdepth > 0 and depth > maxdepth: - subnode.parent.replace(subnode, []) - else: - # cull sub-entries whose parents aren't 'current' - if (collapse and depth > 1 and - 'iscurrent' not in subnode.parent): - subnode.parent.remove(subnode) - else: - # recurse on visible children - self._toctree_prune(subnode, depth+1, maxdepth, collapse) - - def assign_section_numbers(self): - # type: () -> List[unicode] - """Assign a section number to each heading under a numbered toctree.""" - # a list of all docnames whose section numbers changed - rewrite_needed = [] - - assigned = set() # type: Set[unicode] - old_secnumbers = self.toc_secnumbers - self.toc_secnumbers = self.env.toc_secnumbers = {} - - def _walk_toc(node, secnums, depth, titlenode=None): - # titlenode is the title of the document, it will get assigned a - # secnumber too, so that it shows up in next/prev/parent rellinks - for subnode in node.children: - if isinstance(subnode, nodes.bullet_list): - numstack.append(0) - _walk_toc(subnode, secnums, depth-1, titlenode) - numstack.pop() - titlenode = None - elif isinstance(subnode, nodes.list_item): - _walk_toc(subnode, secnums, depth, titlenode) - titlenode = None - elif isinstance(subnode, addnodes.only): - # at this stage we don't know yet which sections are going - # to be included; just include all of them, even if it leads - # to gaps in the numbering - _walk_toc(subnode, secnums, depth, titlenode) - titlenode = None - elif isinstance(subnode, addnodes.compact_paragraph): - numstack[-1] += 1 - if depth > 0: - number = tuple(numstack) - else: - number = None - secnums[subnode[0]['anchorname']] = \ - subnode[0]['secnumber'] = number - if titlenode: - titlenode['secnumber'] = number - titlenode = None - elif isinstance(subnode, addnodes.toctree): - _walk_toctree(subnode, depth) - - def _walk_toctree(toctreenode, depth): - if depth == 0: - return - for (title, ref) in toctreenode['entries']: - if url_re.match(ref) or ref == 'self' or ref in assigned: - # don't mess with those - continue - if ref in self.tocs: - secnums = self.toc_secnumbers[ref] = {} - assigned.add(ref) - _walk_toc(self.tocs[ref], secnums, depth, - self.env.titles.get(ref)) - if secnums != old_secnumbers.get(ref): - rewrite_needed.append(ref) - - for docname in self.numbered_toctrees: - assigned.add(docname) - doctree = self.env.get_doctree(docname) - for toctreenode in doctree.traverse(addnodes.toctree): - depth = toctreenode.get('numbered', 0) - if depth: - # every numbered toctree gets new numbering - numstack = [0] - _walk_toctree(toctreenode, depth) - - return rewrite_needed - - def assign_figure_numbers(self): - # type: () -> List[unicode] - """Assign a figure number to each figure under a numbered toctree.""" - - rewrite_needed = [] - - assigned = set() # type: Set[unicode] - old_fignumbers = self.toc_fignumbers - self.toc_fignumbers = self.env.toc_fignumbers = {} - fignum_counter = {} # type: Dict[unicode, Dict[Tuple[int], int]] - - def get_section_number(docname, section): - anchorname = '#' + section['ids'][0] - secnumbers = self.toc_secnumbers.get(docname, {}) - if anchorname in secnumbers: - secnum = secnumbers.get(anchorname) - else: - secnum = secnumbers.get('') - - return secnum or tuple() - - def get_next_fignumber(figtype, secnum): - counter = fignum_counter.setdefault(figtype, {}) - - secnum = secnum[:self.env.config.numfig_secnum_depth] - counter[secnum] = counter.get(secnum, 0) + 1 - return secnum + (counter[secnum],) - - def register_fignumber(docname, secnum, figtype, fignode): - self.toc_fignumbers.setdefault(docname, {}) - fignumbers = self.toc_fignumbers[docname].setdefault(figtype, {}) - figure_id = fignode['ids'][0] - - fignumbers[figure_id] = get_next_fignumber(figtype, secnum) - - def _walk_doctree(docname, doctree, secnum): - for subnode in doctree.children: - if isinstance(subnode, nodes.section): - next_secnum = get_section_number(docname, subnode) - if next_secnum: - _walk_doctree(docname, subnode, next_secnum) - else: - _walk_doctree(docname, subnode, secnum) - continue - elif isinstance(subnode, addnodes.toctree): - for title, subdocname in subnode['entries']: - if url_re.match(subdocname) or subdocname == 'self': - # don't mess with those - continue - - _walk_doc(subdocname, secnum) - - continue - - figtype = self.env.get_domain('std').get_figtype(subnode) # type: ignore - if figtype and subnode['ids']: - register_fignumber(docname, secnum, figtype, subnode) - - _walk_doctree(docname, subnode, secnum) - - def _walk_doc(docname, secnum): - if docname not in assigned: - assigned.add(docname) - doctree = self.env.get_doctree(docname) - _walk_doctree(docname, doctree, secnum) - - if self.env.config.numfig: - _walk_doc(self.env.config.master_doc, tuple()) - for docname, fignums in iteritems(self.toc_fignumbers): - if fignums != old_fignumbers.get(docname): - rewrite_needed.append(docname) - - return rewrite_needed From 98f7818101af8d8076d8b44db32afe7bb011376f Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Wed, 23 Nov 2016 13:38:20 +0900 Subject: [PATCH 267/297] Fix merging --- sphinx/transforms/__init__.py | 2 +- tests/test_ext_inheritance_diagram.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/sphinx/transforms/__init__.py b/sphinx/transforms/__init__.py index 89fc38d83..461d9117d 100644 --- a/sphinx/transforms/__init__.py +++ b/sphinx/transforms/__init__.py @@ -129,7 +129,7 @@ class CitationReferences(Transform): def apply(self): for citnode in self.document.traverse(nodes.citation_reference): cittext = citnode.astext() - refnode = addnodes.pending_xref(cittext, reftype='citation', + refnode = addnodes.pending_xref(cittext, refdomain='std', reftype='citation', reftarget=cittext, refwarn=True, ids=citnode["ids"]) refnode.source = citnode.source or citnode.parent.source diff --git a/tests/test_ext_inheritance_diagram.py b/tests/test_ext_inheritance_diagram.py index 968bb1473..fb78c89f4 100644 --- a/tests/test_ext_inheritance_diagram.py +++ b/tests/test_ext_inheritance_diagram.py @@ -9,6 +9,7 @@ :license: BSD, see LICENSE for details. """ +import re import sys from util import with_app, rootdir, raises from test_ext_graphviz import skip_if_graphviz_not_found From cec5c39d84cdf0143ef3360318384821b9490eb8 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Wed, 23 Nov 2016 14:35:58 +0900 Subject: [PATCH 268/297] Fix style-check violations --- sphinx/search/jssplitter.py | 8 ++++---- utils/jssplitter_generator.py | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/sphinx/search/jssplitter.py b/sphinx/search/jssplitter.py index a3bd8b767..9dc0ca6e7 100644 --- a/sphinx/search/jssplitter.py +++ b/sphinx/search/jssplitter.py @@ -1,14 +1,14 @@ - -"""# -*- coding: utf-8 -*- +# -*- coding: utf-8 -*- +""" sphinx.search.jssplitter ~~~~~~~~~~~~~~~~~~~~~~~~ Provides Python compatible word splitter to JavaScript + DO NOT EDIT. This is generated by utils/jssplitter_generator.py + :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. - - DO NOT EDIT. This is generated by utils/jssplitter_generator.py """ splitter_code = """ diff --git a/utils/jssplitter_generator.py b/utils/jssplitter_generator.py index 6eef86cc3..e236f00d0 100644 --- a/utils/jssplitter_generator.py +++ b/utils/jssplitter_generator.py @@ -113,17 +113,17 @@ console.log(' ... ok\\n') ''' % js_src -python_src = ''' -"""# -*- coding: utf-8 -*- +python_src = '''# -*- coding: utf-8 -*- +""" sphinx.search.jssplitter ~~~~~~~~~~~~~~~~~~~~~~~~ Provides Python compatible word splitter to JavaScript + DO NOT EDIT. This is generated by utils/jssplitter_generator.py + :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. - - DO NOT EDIT. This is generated by utils/jssplitter_generator.py """ splitter_code = """ From e4adcdff622c9660d9667d9b96baf5fd2902e9fe Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Wed, 23 Nov 2016 14:35:58 +0900 Subject: [PATCH 269/297] Fix style-check violations --- sphinx/search/jssplitter.py | 8 ++++---- utils/jssplitter_generator.py | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/sphinx/search/jssplitter.py b/sphinx/search/jssplitter.py index a3bd8b767..9dc0ca6e7 100644 --- a/sphinx/search/jssplitter.py +++ b/sphinx/search/jssplitter.py @@ -1,14 +1,14 @@ - -"""# -*- coding: utf-8 -*- +# -*- coding: utf-8 -*- +""" sphinx.search.jssplitter ~~~~~~~~~~~~~~~~~~~~~~~~ Provides Python compatible word splitter to JavaScript + DO NOT EDIT. This is generated by utils/jssplitter_generator.py + :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. - - DO NOT EDIT. This is generated by utils/jssplitter_generator.py """ splitter_code = """ diff --git a/utils/jssplitter_generator.py b/utils/jssplitter_generator.py index 6eef86cc3..e236f00d0 100644 --- a/utils/jssplitter_generator.py +++ b/utils/jssplitter_generator.py @@ -113,17 +113,17 @@ console.log(' ... ok\\n') ''' % js_src -python_src = ''' -"""# -*- coding: utf-8 -*- +python_src = '''# -*- coding: utf-8 -*- +""" sphinx.search.jssplitter ~~~~~~~~~~~~~~~~~~~~~~~~ Provides Python compatible word splitter to JavaScript + DO NOT EDIT. This is generated by utils/jssplitter_generator.py + :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. - - DO NOT EDIT. This is generated by utils/jssplitter_generator.py """ splitter_code = """ From fa302485f3d6b574273030df3e903db135324e72 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Wed, 23 Nov 2016 23:26:12 +0900 Subject: [PATCH 270/297] Bump to 1.4.9 final --- CHANGES | 4 ++-- sphinx/__init__.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index 582f7a301..d65497137 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,5 @@ -Release 1.4.9 (in development) -============================== +Release 1.4.9 (released Nov 23, 2016) +===================================== Bugs fixed ---------- diff --git a/sphinx/__init__.py b/sphinx/__init__.py index 60b42d70e..b05ec91ed 100644 --- a/sphinx/__init__.py +++ b/sphinx/__init__.py @@ -15,13 +15,13 @@ import sys from os import path -__version__ = '1.4.9+' +__version__ = '1.4.9' __released__ = '1.4.9' # used when Sphinx builds its own docs # version info for better programmatic use # possible values for 3rd element: 'alpha', 'beta', 'rc', 'final' # 'final' has 0 as the last element -version_info = (1, 4, 9, 'beta', 1) +version_info = (1, 4, 9, 'final', 0) package_dir = path.abspath(path.dirname(__file__)) From 41b39b786af2841f74ab1f7dcfa42fe55a669a31 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Wed, 23 Nov 2016 23:36:25 +0900 Subject: [PATCH 271/297] Bump version --- CHANGES | 7 +++++++ sphinx/__init__.py | 6 +++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index d65497137..081a22d82 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,10 @@ +Release 1.4.10 (in development) +=============================== + +Bugs fixed +---------- + + Release 1.4.9 (released Nov 23, 2016) ===================================== diff --git a/sphinx/__init__.py b/sphinx/__init__.py index b05ec91ed..7f6dd5e89 100644 --- a/sphinx/__init__.py +++ b/sphinx/__init__.py @@ -15,13 +15,13 @@ import sys from os import path -__version__ = '1.4.9' -__released__ = '1.4.9' # used when Sphinx builds its own docs +__version__ = '1.4.10+' +__released__ = '1.4.10' # used when Sphinx builds its own docs # version info for better programmatic use # possible values for 3rd element: 'alpha', 'beta', 'rc', 'final' # 'final' has 0 as the last element -version_info = (1, 4, 9, 'final', 0) +version_info = (1, 4, 10, 'alpha', 1) package_dir = path.abspath(path.dirname(__file__)) From 76f2ed9215ecd8022f8d63ff1c5f455b0bb23354 Mon Sep 17 00:00:00 2001 From: shimizukawa <shimizukawa@gmail.com> Date: Thu, 24 Nov 2016 00:26:36 +0900 Subject: [PATCH 272/297] Fix #3015: fix a broken test on Windows. --- CHANGES | 1 + tests/test_build.py | 11 ++++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/CHANGES b/CHANGES index 081a22d82..b8573b8a0 100644 --- a/CHANGES +++ b/CHANGES @@ -4,6 +4,7 @@ Release 1.4.10 (in development) Bugs fixed ---------- +* #3015: fix a broken test on Windows. Release 1.4.9 (released Nov 23, 2016) ===================================== diff --git a/tests/test_build.py b/tests/test_build.py index 507a1cab3..dd0ad24bf 100644 --- a/tests/test_build.py +++ b/tests/test_build.py @@ -17,7 +17,7 @@ from textwrap import dedent from sphinx.errors import SphinxError import sphinx.builders.linkcheck -from util import with_app, with_tempdir, rootdir, tempdir, SkipTest, TestApp +from util import with_app, with_tempdir, rootdir, tempdir, SkipTest, TestApp, path try: from docutils.writers.manpage import Writer as ManWriter @@ -148,16 +148,17 @@ def test_image_glob(app, status, warning): doctree = pickle.loads((app.doctreedir / 'subdir/index.doctree').bytes()) assert isinstance(doctree[0][1], nodes.image) - assert doctree[0][1]['candidates'] == {'*': 'subdir/rimg.png'} - assert doctree[0][1]['uri'] == 'subdir/rimg.png' + sub = path('subdir') + assert doctree[0][1]['candidates'] == {'*': sub / 'rimg.png'} + assert doctree[0][1]['uri'] == sub / 'rimg.png' assert isinstance(doctree[0][2], nodes.image) assert doctree[0][2]['candidates'] == {'application/pdf': 'subdir/svgimg.pdf', 'image/svg+xml': 'subdir/svgimg.svg'} - assert doctree[0][2]['uri'] == 'subdir/svgimg.*' + assert doctree[0][2]['uri'] == sub / 'svgimg.*' assert isinstance(doctree[0][3], nodes.figure) assert isinstance(doctree[0][3][0], nodes.image) assert doctree[0][3][0]['candidates'] == {'application/pdf': 'subdir/svgimg.pdf', 'image/svg+xml': 'subdir/svgimg.svg'} - assert doctree[0][3][0]['uri'] == 'subdir/svgimg.*' + assert doctree[0][3][0]['uri'] == sub / 'svgimg.*' From f45fe6fc8ca95f5b71b57b0ab80a3a44560c0295 Mon Sep 17 00:00:00 2001 From: Rob Ruana <rob@robruana.com> Date: Wed, 23 Nov 2016 10:45:39 -0800 Subject: [PATCH 273/297] Fix #3174: [Napoleon] Defers autodoc-skip-member to other extensions if Napoleon doesn't care if the member is skipped --- doc/ext/autodoc.rst | 5 +++++ setup.cfg | 2 +- sphinx/ext/napoleon/__init__.py | 2 +- tests/test_ext_napoleon.py | 10 +++++----- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/doc/ext/autodoc.rst b/doc/ext/autodoc.rst index 63c959869..50004e575 100644 --- a/doc/ext/autodoc.rst +++ b/doc/ext/autodoc.rst @@ -446,6 +446,11 @@ member should be included in the documentation by using the following event: documentation. The member is excluded if a handler returns ``True``. It is included if the handler returns ``False``. + If more than one enabled extension handles the ``autodoc-skip-member`` + event, autodoc will use the first non-``None`` value returned by a handler. + Handlers should return ``None`` to fall back to the skipping behavior of + autodoc and other enabled extensions. + :param app: the Sphinx application object :param what: the type of the object which the docstring belongs to (one of ``"module"``, ``"class"``, ``"exception"``, ``"function"``, ``"method"``, diff --git a/setup.cfg b/setup.cfg index a65719461..533a71b0a 100644 --- a/setup.cfg +++ b/setup.cfg @@ -26,4 +26,4 @@ universal = 1 [flake8] max-line-length=95 ignore=E113,E116,E221,E226,E241,E251,E901 -exclude=tests/*,build/*,sphinx/search/*,sphinx/pycode/pgen2/*,doc/ext/example*.py +exclude=tests/*,build/*,sphinx/search/*,sphinx/pycode/pgen2/*,doc/ext/example*.py,.tox/* diff --git a/sphinx/ext/napoleon/__init__.py b/sphinx/ext/napoleon/__init__.py index b74dfb75d..f6fccac7d 100644 --- a/sphinx/ext/napoleon/__init__.py +++ b/sphinx/ext/napoleon/__init__.py @@ -464,4 +464,4 @@ def _skip_member(app, what, name, obj, skip, options): (is_private and inc_private) or (is_init and inc_init)): return False - return skip + return None diff --git a/tests/test_ext_napoleon.py b/tests/test_ext_napoleon.py index 21d095a79..5f68ba7c0 100644 --- a/tests/test_ext_napoleon.py +++ b/tests/test_ext_napoleon.py @@ -123,19 +123,19 @@ class SetupTest(TestCase): class SkipMemberTest(TestCase): - def assertSkip(self, what, member, obj, expect_skip, config_name): - skip = 'default skip' + def assertSkip(self, what, member, obj, expect_default_skip, config_name): + skip = True app = mock.Mock() app.config = Config() setattr(app.config, config_name, True) - if expect_skip: - self.assertEqual(skip, _skip_member(app, what, member, obj, skip, + if expect_default_skip: + self.assertEqual(None, _skip_member(app, what, member, obj, skip, mock.Mock())) else: self.assertFalse(_skip_member(app, what, member, obj, skip, mock.Mock())) setattr(app.config, config_name, False) - self.assertEqual(skip, _skip_member(app, what, member, obj, skip, + self.assertEqual(None, _skip_member(app, what, member, obj, skip, mock.Mock())) def test_namedtuple(self): From 77361395a6dc046b33fd9f72312ed344c49f5613 Mon Sep 17 00:00:00 2001 From: shimizukawa <shimizukawa@gmail.com> Date: Thu, 24 Nov 2016 22:04:50 +0900 Subject: [PATCH 274/297] test_quickstart.test_generated_files_eol requires empty line. --- sphinx/templates/quickstart/make.bat.new_t | 1 + sphinx/templates/quickstart/make.bat_t | 1 + 2 files changed, 2 insertions(+) diff --git a/sphinx/templates/quickstart/make.bat.new_t b/sphinx/templates/quickstart/make.bat.new_t index 49c117458..e49ffbe78 100644 --- a/sphinx/templates/quickstart/make.bat.new_t +++ b/sphinx/templates/quickstart/make.bat.new_t @@ -34,3 +34,4 @@ goto end :end popd + diff --git a/sphinx/templates/quickstart/make.bat_t b/sphinx/templates/quickstart/make.bat_t index b19cfe9a8..13923636f 100644 --- a/sphinx/templates/quickstart/make.bat_t +++ b/sphinx/templates/quickstart/make.bat_t @@ -282,3 +282,4 @@ if "%1" == "dummy" ( :end popd + From 41da6e79b7b9c0d153549bf92823de01a7c82611 Mon Sep 17 00:00:00 2001 From: shimizukawa <shimizukawa@gmail.com> Date: Thu, 24 Nov 2016 23:29:57 +0900 Subject: [PATCH 275/297] update changes refs #3085, refs #2215 --- CHANGES | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGES b/CHANGES index 51c9a02eb..5a44e3048 100644 --- a/CHANGES +++ b/CHANGES @@ -7,12 +7,17 @@ Incompatible changes Features added -------------- +* #2215: make.bat generated by sphinx-quickstart can be called from another dir. + Thanks to Timotheus Kampik. + Bugs fixed ---------- * #2432: Fix unwanted * between varargs and keyword only args. Thanks to Alex Grönholm. * #3062: Failed to build PDF using 1.5a2 (undefined ``\hypersetup`` for Japanese documents since PR#3030) +* #3085: keep current directory after breaking build documentation. Thanks to + Timotheus Kampik. Release 1.5 alpha2 (released Oct 17, 2016) ========================================== From 9cea699149cd07f2c3752ecf7afa676136dfb4c7 Mon Sep 17 00:00:00 2001 From: shimizukawa <shimizukawa@gmail.com> Date: Fri, 25 Nov 2016 00:01:15 +0900 Subject: [PATCH 276/297] update changes refs #1843 --- CHANGES | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES b/CHANGES index b8573b8a0..dc73ee935 100644 --- a/CHANGES +++ b/CHANGES @@ -5,6 +5,8 @@ Bugs fixed ---------- * #3015: fix a broken test on Windows. +* #1843: Fix documentation of descriptor classes that have a custom metaclass. + Thanks to Erik Bray. Release 1.4.9 (released Nov 23, 2016) ===================================== From 69820e1203d7b5b6b7285e3d12826d0bbbf4e06a Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Fri, 25 Nov 2016 23:34:26 +0900 Subject: [PATCH 277/297] Fix #3181: pLaTeX crashes with a section contains emdash --- CHANGES | 1 + sphinx/util/texescape.py | 1 + 2 files changed, 2 insertions(+) diff --git a/CHANGES b/CHANGES index e2f5761a0..a4e2eadf1 100644 --- a/CHANGES +++ b/CHANGES @@ -23,6 +23,7 @@ Bugs fixed * #3155: Fix JavaScript for `html_sourcelink_suffix` fails with IE and Opera * #3085: keep current directory after breaking build documentation. Thanks to Timotheus Kampik. +* #3181: pLaTeX crashes with a section contains emdash Release 1.5 beta1 (released Nov 6, 2016) ======================================== diff --git a/sphinx/util/texescape.py b/sphinx/util/texescape.py index 0a3192f6a..dcd90f55a 100644 --- a/sphinx/util/texescape.py +++ b/sphinx/util/texescape.py @@ -43,6 +43,7 @@ tex_replacements = [ ('─', r'-'), ('⎽', r'\_'), ('╲', r'\textbackslash{}'), + ('–', r'\textemdash{}'), ('|', r'\textbar{}'), ('│', r'\textbar{}'), ('ℯ', r'e'), From ff48038ff047cba74ed39563c12eb013ac6dc5d5 Mon Sep 17 00:00:00 2001 From: jfbu <jfbu@free.fr> Date: Thu, 20 Oct 2016 12:08:50 +0200 Subject: [PATCH 278/297] latex: better spacing for successive (multi)line cpp signatures ref #3072. --- sphinx/texinputs/sphinx.sty | 8 +++++++- sphinx/writers/latex.py | 4 ++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index b89ffa64e..5037fbd92 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -650,12 +650,18 @@ \newlength{\py@argswidth} \newcommand{\py@sigparams}[2]{% \parbox[t]{\py@argswidth}{#1\sphinxcode{)}#2}} -\newcommand{\pysigline}[1]{\item[{#1}]\nopagebreak} +\newcommand{\pysigline}[1]{\item[{#1}]} \newcommand{\pysiglinewithargsret}[3]{% \settowidth{\py@argswidth}{#1\sphinxcode{(}}% \addtolength{\py@argswidth}{-2\py@argswidth}% \addtolength{\py@argswidth}{\linewidth}% \item[{#1\sphinxcode{(}\py@sigparams{#2}{#3}}]} +\newcommand{\pysigstartmultiline}{% + \def\pysigstartmultiline{\vskip\smallskipamount\parskip\z@skip\itemsep\z@skip}% + \edef\pysigstopmultiline + {\noexpand\leavevmode\parskip\the\parskip\relax\itemsep\the\itemsep\relax}% + \parskip\z@skip\itemsep\z@skip +} % Production lists % diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index f54de7cea..ed62308c4 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -918,10 +918,14 @@ class LaTeXTranslator(nodes.NodeVisitor): self.body.append(hyper) if not node.get('is_multiline'): self._visit_signature_line(node) + else: + self.body.append('%\n\\pysigstartmultiline\n') def depart_desc_signature(self, node): if not node.get('is_multiline'): self._depart_signature_line(node) + else: + self.body.append('%\n\\pysigstopmultiline') def visit_desc_signature_line(self, node): self._visit_signature_line(node) From dd11290e839baf8a9462d5d6f3391d2ad25cf716 Mon Sep 17 00:00:00 2001 From: jfbu <jfbu@free.fr> Date: Thu, 1 Dec 2016 19:13:49 +0100 Subject: [PATCH 279/297] Update CHANGES for PR#3180 --- CHANGES | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES b/CHANGES index a4e2eadf1..cf532b41b 100644 --- a/CHANGES +++ b/CHANGES @@ -24,6 +24,8 @@ Bugs fixed * #3085: keep current directory after breaking build documentation. Thanks to Timotheus Kampik. * #3181: pLaTeX crashes with a section contains emdash +* #3180: latex: add stretch/shrink between successive singleline or + multipleline cpp signatures (ref #3072) Release 1.5 beta1 (released Nov 6, 2016) ======================================== From df37a05420d3a435b96a5521d0d30de79b6e1656 Mon Sep 17 00:00:00 2001 From: Junpei Kawamoto <kawamoto.junpei@gmail.com> Date: Fri, 2 Dec 2016 23:39:12 -0500 Subject: [PATCH 280/297] Update the regex in util.split_docinfo so that it parses multi-line field bodies. Field Lists, which are used to define docinfo, allow multi-line field bodies, but util.split_docinfo didn't consider it. This commit updates the regex in that function so that it parses such multi-line field bodies. --- sphinx/util/__init__.py | 2 +- tests/test_util.py | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/sphinx/util/__init__.py b/sphinx/util/__init__.py index 9c5365aa7..573882418 100644 --- a/sphinx/util/__init__.py +++ b/sphinx/util/__init__.py @@ -545,7 +545,7 @@ def encode_uri(uri): def split_docinfo(text): - docinfo_re = re.compile('\A((?:\s*:\w+:.*?\n)+)', re.M) + docinfo_re = re.compile('\A((?:\s*:\w+:.*?\n(?:[ \t]+.*?\n)*)+)', re.M) result = docinfo_re.split(text, 1) if len(result) == 1: return '', result[0] diff --git a/tests/test_util.py b/tests/test_util.py index dbecfb1a2..d97329668 100644 --- a/tests/test_util.py +++ b/tests/test_util.py @@ -41,3 +41,8 @@ def test_splitdocinfo(): docinfo, content = split_docinfo(source) assert docinfo == ':author: Georg Brandl\n:title: Manual of Sphinx\n' assert content == '\nHello world.\n' + + source = ":multiline: one\n\ttwo\n\tthree\n\nHello world.\n" + docinfo, content = split_docinfo(source) + assert docinfo == ":multiline: one\n\ttwo\n\tthree\n" + assert content == '\nHello world.\n' From b799249c775472e3d26f7854ea0bc62ce33326d9 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Sat, 3 Dec 2016 14:43:15 +0900 Subject: [PATCH 281/297] Fix #3128: globing images does not support .svgz file --- CHANGES | 1 + sphinx/util/images.py | 1 + 2 files changed, 2 insertions(+) diff --git a/CHANGES b/CHANGES index cf532b41b..3888b2305 100644 --- a/CHANGES +++ b/CHANGES @@ -26,6 +26,7 @@ Bugs fixed * #3181: pLaTeX crashes with a section contains emdash * #3180: latex: add stretch/shrink between successive singleline or multipleline cpp signatures (ref #3072) +* #3128: globing images does not support .svgz file Release 1.5 beta1 (released Nov 6, 2016) ======================================== diff --git a/sphinx/util/images.py b/sphinx/util/images.py index 143042a58..698a030ad 100644 --- a/sphinx/util/images.py +++ b/sphinx/util/images.py @@ -24,6 +24,7 @@ except ImportError: mime_suffixes = { '.pdf': 'application/pdf', '.svg': 'image/svg+xml', + '.svgz': 'image/svg+xml', } From 12660e44b5a763f19352a53c3fd4d641ccc6b0e6 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Sat, 3 Dec 2016 15:25:15 +0900 Subject: [PATCH 282/297] Fix #3185: Add new warning type ``misc.highlighting_failure`` --- CHANGES | 1 + doc/config.rst | 5 +++++ sphinx/highlighting.py | 3 ++- sphinx/writers/html.py | 4 ++-- sphinx/writers/latex.py | 4 ++-- 5 files changed, 12 insertions(+), 5 deletions(-) diff --git a/CHANGES b/CHANGES index 3888b2305..56fc6b11d 100644 --- a/CHANGES +++ b/CHANGES @@ -13,6 +13,7 @@ Features added self-signed HTTPS servers in linkcheck and intersphinx * #2215: make.bat generated by sphinx-quickstart can be called from another dir. Thanks to Timotheus Kampik. +* #3185: Add new warning type ``misc.highlighting_failure`` Bugs fixed ---------- diff --git a/doc/config.rst b/doc/config.rst index a3f45abe9..9c74d664f 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -232,6 +232,7 @@ General configuration * ref.option * ref.citation * ref.doc + * misc.highlighting_failure You can choose from these types. @@ -239,6 +240,10 @@ General configuration .. versionadded:: 1.4 + .. versionchanged:: 1.5 + + Added ``misc.highlighting_failure`` + .. confval:: needs_sphinx If set to a ``major.minor`` version string like ``'1.1'``, Sphinx will diff --git a/sphinx/highlighting.py b/sphinx/highlighting.py index 9594b5336..4b4ba87da 100644 --- a/sphinx/highlighting.py +++ b/sphinx/highlighting.py @@ -143,7 +143,8 @@ class PygmentsBridge(object): pass # automatic highlighting failed. elif warn: warn('Could not lex literal_block as "%s". ' - 'Highlighting skipped.' % lang) + 'Highlighting skipped.' % lang, + type='misc', subtype='higlighting_failure') else: raise exc hlsource = highlight(source, lexers['none'], formatter) diff --git a/sphinx/writers/html.py b/sphinx/writers/html.py index ba2b758d8..5c0fa0fee 100644 --- a/sphinx/writers/html.py +++ b/sphinx/writers/html.py @@ -363,8 +363,8 @@ class HTMLTranslator(BaseTranslator): else: opts = {} - def warner(msg): - self.builder.warn(msg, (self.builder.current_docname, node.line)) + def warner(msg, **kwargs): + self.builder.warn(msg, (self.builder.current_docname, node.line), **kwargs) highlighted = self.highlighter.highlight_block( node.rawsource, lang, opts=opts, warn=warner, linenos=linenos, **highlight_args) diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index ed62308c4..104401152 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -1954,8 +1954,8 @@ class LaTeXTranslator(nodes.NodeVisitor): else: opts = {} - def warner(msg): - self.builder.warn(msg, (self.curfilestack[-1], node.line)) + def warner(msg, **kwargs): + self.builder.warn(msg, (self.curfilestack[-1], node.line), **kwargs) hlcode = self.highlighter.highlight_block(code, lang, opts=opts, warn=warner, linenos=linenos, **highlight_args) From 88887bad88d9724048a5a67a52094881a24d0759 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Sat, 3 Dec 2016 16:51:18 +0900 Subject: [PATCH 283/297] Update type annotation --- sphinx/builders/linkcheck.py | 3 ++- sphinx/ext/inheritance_diagram.py | 4 ++-- sphinx/search/__init__.py | 4 ++-- sphinx/util/requests.py | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/sphinx/builders/linkcheck.py b/sphinx/builders/linkcheck.py index 6df9480a4..836709375 100644 --- a/sphinx/builders/linkcheck.py +++ b/sphinx/builders/linkcheck.py @@ -43,6 +43,7 @@ if False: # For type annotation from typing import Any, Tuple, Union # NOQA from sphinx.application import Sphinx # NOQA + from sphinx.util.requests.requests import Response # NOQA class AnchorCheckParser(HTMLParser): @@ -64,7 +65,7 @@ class AnchorCheckParser(HTMLParser): def check_anchor(response, anchor): - # type: (requests.Response, unicode) -> bool + # type: (Response, unicode) -> bool """Reads HTML data from a response object `response` searching for `anchor`. Returns True if anchor was found, False otherwise. """ diff --git a/sphinx/ext/inheritance_diagram.py b/sphinx/ext/inheritance_diagram.py index f37d7cf8b..f355aa6c4 100644 --- a/sphinx/ext/inheritance_diagram.py +++ b/sphinx/ext/inheritance_diagram.py @@ -79,9 +79,9 @@ def try_import(objname): """ try: __import__(objname) - return sys.modules.get(objname) + return sys.modules.get(objname) # type: ignore except ImportError: - modname, attrname = module_sig_re.match(objname).groups() + modname, attrname = module_sig_re.match(objname).groups() # type: ignore if modname is None: return None try: diff --git a/sphinx/search/__init__.py b/sphinx/search/__init__.py index df374ae46..d2baf363c 100644 --- a/sphinx/search/__init__.py +++ b/sphinx/search/__init__.py @@ -287,7 +287,7 @@ class IndexBuilder(object): # type: (IO, Any) -> None """Reconstruct from frozen data.""" if isinstance(format, string_types): - format = self.formats[format] + format = self.formats[format] # type: ignore frozen = format.load(stream) # if an old index is present, we treat it as not existing. if not isinstance(frozen, dict) or \ @@ -314,7 +314,7 @@ class IndexBuilder(object): # type: (IO, Any) -> None """Dump the frozen index to a stream.""" if isinstance(format, string_types): - format = self.formats[format] + format = self.formats[format] # type: ignore format.dump(self.freeze(), stream) # type: ignore def get_objects(self, fn2index): diff --git a/sphinx/util/requests.py b/sphinx/util/requests.py index e2ac94e80..3576b0088 100644 --- a/sphinx/util/requests.py +++ b/sphinx/util/requests.py @@ -71,7 +71,7 @@ def _get_tls_cacert(url, config): certs = getattr(config, 'tls_cacerts', None) if not certs: return True - elif isinstance(certs, (string_types, tuple)): + elif isinstance(certs, (string_types, tuple)): # type: ignore return certs else: hostname = urlsplit(url)[1] From a265670b79e737a0c88ea76dbac5485c19f6e350 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Sat, 3 Dec 2016 16:51:35 +0900 Subject: [PATCH 284/297] Adjust code to type annotation --- sphinx/ext/coverage.py | 2 +- sphinx/make_mode.py | 2 +- sphinx/util/console.py | 2 +- sphinx/util/i18n.py | 7 ++++--- sphinx/writers/texinfo.py | 4 ++-- 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/sphinx/ext/coverage.py b/sphinx/ext/coverage.py index 98681466c..11e017f69 100644 --- a/sphinx/ext/coverage.py +++ b/sphinx/ext/coverage.py @@ -105,7 +105,7 @@ class CoverageBuilder(Builder): if match: name = match.groups()[0] if name not in c_objects: - for exp in self.c_ignorexps.get(key, ()): + for exp in self.c_ignorexps.get(key, []): if exp.match(name): break else: diff --git a/sphinx/make_mode.py b/sphinx/make_mode.py index 87333301c..7751b8b40 100644 --- a/sphinx/make_mode.py +++ b/sphinx/make_mode.py @@ -71,7 +71,7 @@ class Make(object): def build_clean(self): # type: () -> int if not path.exists(self.builddir): - return + return 0 elif not path.isdir(self.builddir): print("Error: %r is not a directory!" % self.builddir) return 1 diff --git a/sphinx/util/console.py b/sphinx/util/console.py index b952d7183..6dc4b88ca 100644 --- a/sphinx/util/console.py +++ b/sphinx/util/console.py @@ -36,7 +36,7 @@ def get_terminal_width(): terminal_width = width except Exception: # FALLBACK - terminal_width = int(os.environ.get('COLUMNS', 80)) - 1 + terminal_width = int(os.environ.get('COLUMNS', "80")) - 1 return terminal_width diff --git a/sphinx/util/i18n.py b/sphinx/util/i18n.py index efbbb75f7..9ec6f9136 100644 --- a/sphinx/util/i18n.py +++ b/sphinx/util/i18n.py @@ -108,10 +108,11 @@ def find_catalog_source_files(locale_dirs, locale, domains=None, gettext_compact default is False. :return: [CatalogInfo(), ...] """ - if not locale: - return [] # locale is not specified - catalogs = set() # type: Set[CatalogInfo] + + if not locale: + return catalogs # locale is not specified + for locale_dir in locale_dirs: if not locale_dir: continue # skip system locale directory diff --git a/sphinx/writers/texinfo.py b/sphinx/writers/texinfo.py index 6311d3b84..792318a36 100644 --- a/sphinx/writers/texinfo.py +++ b/sphinx/writers/texinfo.py @@ -324,7 +324,7 @@ class TexinfoTranslator(nodes.NodeVisitor): top['node_name'] = 'Top' # handle the indices for name, content in self.indices: - node_menus[name] = () + node_menus[name] = [] node_menus['Top'].append(name) def collect_rellinks(self): @@ -642,7 +642,7 @@ class TexinfoTranslator(nodes.NodeVisitor): def visit_title(self, node): # type: (nodes.Node) -> None if not self.seen_title: - self.seen_title = 1 + self.seen_title = True raise nodes.SkipNode parent = node.parent if isinstance(parent, nodes.table): From 794e0801f8dea9bf8b465411964ee120432ee8e9 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Sat, 3 Dec 2016 20:57:11 +0900 Subject: [PATCH 285/297] Update CHANGES for PR#3190 --- CHANGES | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES b/CHANGES index dc73ee935..0f0da4f6c 100644 --- a/CHANGES +++ b/CHANGES @@ -7,6 +7,7 @@ Bugs fixed * #3015: fix a broken test on Windows. * #1843: Fix documentation of descriptor classes that have a custom metaclass. Thanks to Erik Bray. +* #3190: util.split_docinfo fails to parse multi-line field bodies Release 1.4.9 (released Nov 23, 2016) ===================================== From 7fccbea1ae96e3db3ce1bdaa8268b07a6e5aacf0 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Sat, 3 Dec 2016 21:05:03 +0900 Subject: [PATCH 286/297] Fix typo (ref: #3181) --- sphinx/util/texescape.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sphinx/util/texescape.py b/sphinx/util/texescape.py index dcd90f55a..8101a8fbf 100644 --- a/sphinx/util/texescape.py +++ b/sphinx/util/texescape.py @@ -43,7 +43,7 @@ tex_replacements = [ ('─', r'-'), ('⎽', r'\_'), ('╲', r'\textbackslash{}'), - ('–', r'\textemdash{}'), + ('–', r'\textendash{}'), ('|', r'\textbar{}'), ('│', r'\textbar{}'), ('ℯ', r'e'), From 6ae67f9f38120dd72945d2d2ca43a8af2c0a6967 Mon Sep 17 00:00:00 2001 From: shimizukawa <shimizukawa@gmail.com> Date: Sun, 4 Dec 2016 13:51:53 +0900 Subject: [PATCH 287/297] Fix #3024, refs #3037: In Python3, application.Sphinx._log crushed when the log message cannot be encoded into console encoding. --- CHANGES | 2 ++ sphinx/application.py | 4 +++- tests/test_application.py | 20 ++++++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 0f0da4f6c..f4ae5abaa 100644 --- a/CHANGES +++ b/CHANGES @@ -8,6 +8,8 @@ Bugs fixed * #1843: Fix documentation of descriptor classes that have a custom metaclass. Thanks to Erik Bray. * #3190: util.split_docinfo fails to parse multi-line field bodies +* #3024, #3037: In Python3, application.Sphinx._log crushed when the log message cannot + be encoded into console encoding. Release 1.4.9 (released Nov 23, 2016) ===================================== diff --git a/sphinx/application.py b/sphinx/application.py index 9d99227c5..45d5d5986 100644 --- a/sphinx/application.py +++ b/sphinx/application.py @@ -322,7 +322,9 @@ class Sphinx(object): wfile.write(message) except UnicodeEncodeError: encoding = getattr(wfile, 'encoding', 'ascii') or 'ascii' - wfile.write(message.encode(encoding, 'replace')) + # wfile.write accept only str, not bytes.So, we encode and replace + # non-encodable characters, then decode them. + wfile.write(message.encode(encoding, 'replace').decode(encoding)) if not nonl: wfile.write('\n') if hasattr(wfile, 'flush'): diff --git a/tests/test_application.py b/tests/test_application.py index 420680451..b0ad4b8d6 100644 --- a/tests/test_application.py +++ b/tests/test_application.py @@ -8,6 +8,7 @@ :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. """ +import codecs from docutils import nodes @@ -49,21 +50,40 @@ def test_emit_with_nonascii_name_node(app, status, warning): @with_app() def test_output(app, status, warning): + # info with newline status.truncate(0) # __init__ writes to status status.seek(0) app.info("Nothing here...") assert status.getvalue() == "Nothing here...\n" + # info without newline status.truncate(0) status.seek(0) app.info("Nothing here...", True) assert status.getvalue() == "Nothing here..." + # warning old_count = app._warncount app.warn("Bad news!") assert warning.getvalue() == "WARNING: Bad news!\n" assert app._warncount == old_count + 1 +@with_app() +def test_output_with_unencodable_char(app, status, warning): + + class StreamWriter(codecs.StreamWriter): + def write(self, object): + self.stream.write(object.encode('cp1252').decode('cp1252')) + + app._status = StreamWriter(status) + + # info with UnicodeEncodeError + status.truncate(0) + status.seek(0) + app.info(u"unicode \u206d...") + assert status.getvalue() == "unicode ?...\n" + + @with_app() def test_extensions(app, status, warning): app.setup_extension('shutil') From 816b1db93dde129dd6a5fb7a5bb2f6985a4c503b Mon Sep 17 00:00:00 2001 From: shimizukawa <shimizukawa@gmail.com> Date: Sun, 27 Nov 2016 11:37:16 +0900 Subject: [PATCH 288/297] Emit several warnings that will be deprecated in Sphinx 1.6. There is no way to hide the warnings. --- CHANGES | 2 ++ sphinx/addnodes.py | 7 ++++--- sphinx/application.py | 4 ++++ sphinx/deprecation.py | 21 +++++++++++++++++++++ sphinx/util/i18n.py | 5 +++-- sphinx/util/pycompat.py | 7 ++++--- sphinx/writers/html.py | 7 +++++-- sphinx/writers/latex.py | 7 +++++-- sphinx/writers/manpage.py | 7 +++++-- sphinx/writers/texinfo.py | 7 +++++-- sphinx/writers/text.py | 7 +++++-- 11 files changed, 63 insertions(+), 18 deletions(-) create mode 100644 sphinx/deprecation.py diff --git a/CHANGES b/CHANGES index 4786391c3..8aaf0a274 100644 --- a/CHANGES +++ b/CHANGES @@ -5,6 +5,8 @@ Incompatible changes -------------------- * #2986: ``themes/basic/defindex.html`` is now deprecated +* Emit several warnings that will be deprecated in Sphinx 1.6. + There is no way to hide the warnings. Features added -------------- diff --git a/sphinx/addnodes.py b/sphinx/addnodes.py index 4035faa2d..95f58052d 100644 --- a/sphinx/addnodes.py +++ b/sphinx/addnodes.py @@ -12,6 +12,7 @@ import warnings from docutils import nodes +from sphinx.deprecation import RemovedInSphinx16Warning class translatable(object): @@ -276,12 +277,12 @@ class termsep(nodes.Structural, nodes.Element): """Separates two terms within a <term> node. .. versionchanged:: 1.4 - sphinx.addnodes.termsep is deprecated. It will be removed at Sphinx-1.5. + sphinx.addnodes.termsep is deprecated. It will be removed at Sphinx-1.6. """ def __init__(self, *args, **kw): - warnings.warn('sphinx.addnodes.termsep will be removed at Sphinx-1.5', - DeprecationWarning, stacklevel=2) + warnings.warn('sphinx.addnodes.termsep will be removed at Sphinx-1.6', + RemovedInSphinx16Warning, stacklevel=2) super(termsep, self).__init__(*args, **kw) diff --git a/sphinx/application.py b/sphinx/application.py index cee780c9c..e1e0af512 100644 --- a/sphinx/application.py +++ b/sphinx/application.py @@ -17,6 +17,7 @@ import sys import types import posixpath import traceback +import warnings from os import path from collections import deque @@ -32,6 +33,7 @@ from sphinx.roles import XRefRole from sphinx.config import Config from sphinx.errors import SphinxError, SphinxWarning, ExtensionError, \ VersionRequirementError, ConfigError +from sphinx.deprecation import RemovedInSphinx16Warning from sphinx.domains import ObjType from sphinx.domains.std import GenericObject, Target, StandardDomain from sphinx.environment import BuildEnvironment @@ -106,6 +108,8 @@ class Sphinx(object): confoverrides=None, status=sys.stdout, warning=sys.stderr, freshenv=False, warningiserror=False, tags=None, verbosity=0, parallel=0): + warnings.filterwarnings('default', category=RemovedInSphinx16Warning, + module='sphinx') self.verbosity = verbosity self.next_listener_id = 0 self._extensions = {} diff --git a/sphinx/deprecation.py b/sphinx/deprecation.py new file mode 100644 index 000000000..a5d14762f --- /dev/null +++ b/sphinx/deprecation.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +""" + sphinx.deprecation + ~~~~~~~~~~~~~~~~~~ + + Sphinx deprecation classes and utilities. + + :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + + +class RemovedInSphinx16Warning(DeprecationWarning): + pass + + +class RemovedInSphinx17Warning(PendingDeprecationWarning): + pass + + +RemovedInNextVersionWarning = RemovedInSphinx16Warning diff --git a/sphinx/util/i18n.py b/sphinx/util/i18n.py index 112353d47..41a9c5e20 100644 --- a/sphinx/util/i18n.py +++ b/sphinx/util/i18n.py @@ -22,6 +22,7 @@ from babel.messages.pofile import read_po from babel.messages.mofile import write_mo from sphinx.errors import SphinxError +from sphinx.deprecation import RemovedInSphinx16Warning from sphinx.util.osutil import walk from sphinx.util import SEP @@ -194,8 +195,8 @@ def format_date(format, date=None, language=None, warn=None): if re.match('EEE|MMM|dd|DDD|MM|WW|medium|YY', format): # consider the format as babel's - warnings.warn('LDML format support will be dropped at Sphinx-1.5', - DeprecationWarning) + warnings.warn('LDML format support will be dropped at Sphinx-1.6', + RemovedInSphinx16Warning) return babel_format_date(date, format, locale=language, warn=warn, formatter=babel.dates.format_datetime) diff --git a/sphinx/util/pycompat.py b/sphinx/util/pycompat.py index e3b17ef62..d268ef6ae 100644 --- a/sphinx/util/pycompat.py +++ b/sphinx/util/pycompat.py @@ -15,10 +15,11 @@ import codecs import warnings from six import class_types +from six import PY3, text_type, exec_ from six.moves import zip_longest from itertools import product -from six import PY3, text_type, exec_ +from sphinx.deprecation import RemovedInSphinx16Warning NoneType = type(None) @@ -138,9 +139,9 @@ class _DeprecationWrapper(object): def __getattr__(self, attr): if attr in self._deprecated: warnings.warn("sphinx.util.pycompat.%s is deprecated and will be " - "removed in Sphinx 1.4, please use the standard " + "removed in Sphinx 1.6, please use the standard " "library version instead." % attr, - DeprecationWarning, stacklevel=2) + RemovedInSphinx16Warning, stacklevel=2) return self._deprecated[attr] return getattr(self._mod, attr) diff --git a/sphinx/writers/html.py b/sphinx/writers/html.py index 5c0fa0fee..af8b6d98d 100644 --- a/sphinx/writers/html.py +++ b/sphinx/writers/html.py @@ -20,6 +20,7 @@ from docutils import nodes from docutils.writers.html4css1 import Writer, HTMLTranslator as BaseTranslator from sphinx import addnodes +from sphinx.deprecation import RemovedInSphinx16Warning from sphinx.locale import admonitionlabels, _ from sphinx.util.images import get_image_size from sphinx.util.smartypants import sphinx_smarty_pants @@ -688,8 +689,10 @@ class HTMLTranslator(BaseTranslator): self.body.append('</dd>\n') def visit_termsep(self, node): - warnings.warn('sphinx.addnodes.termsep will be removed at Sphinx-1.5', - DeprecationWarning) + warnings.warn('sphinx.addnodes.termsep will be removed at Sphinx-1.6. ' + 'This warning is displayed because some Sphinx extension ' + 'uses sphinx.addnodes.termsep. Please report it to ' + 'author of the extension.', RemovedInSphinx16Warning) self.body.append('<br />') raise nodes.SkipNode diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 104401152..52d8e268c 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -24,6 +24,7 @@ from docutils.writers.latex2e import Babel from sphinx import addnodes from sphinx import highlighting from sphinx.errors import SphinxError +from sphinx.deprecation import RemovedInSphinx16Warning from sphinx.locale import admonitionlabels, _ from sphinx.util import split_into from sphinx.util.i18n import format_date @@ -1339,8 +1340,10 @@ class LaTeXTranslator(nodes.NodeVisitor): self.in_term -= 1 def visit_termsep(self, node): - warnings.warn('sphinx.addnodes.termsep will be removed at Sphinx-1.5', - DeprecationWarning) + warnings.warn('sphinx.addnodes.termsep will be removed at Sphinx-1.6. ' + 'This warning is displayed because some Sphinx extension ' + 'uses sphinx.addnodes.termsep. Please report it to ' + 'author of the extension.', RemovedInSphinx16Warning) self.body.append(', ') raise nodes.SkipNode diff --git a/sphinx/writers/manpage.py b/sphinx/writers/manpage.py index b9c9bd646..53cf29767 100644 --- a/sphinx/writers/manpage.py +++ b/sphinx/writers/manpage.py @@ -19,6 +19,7 @@ from docutils.writers.manpage import ( ) from sphinx import addnodes +from sphinx.deprecation import RemovedInSphinx16Warning from sphinx.locale import admonitionlabels, _ from sphinx.util.compat import docutils_version from sphinx.util.i18n import format_date @@ -216,8 +217,10 @@ class ManualPageTranslator(BaseTranslator): BaseTranslator.visit_term(self, node) def visit_termsep(self, node): - warnings.warn('sphinx.addnodes.termsep will be removed at Sphinx-1.5', - DeprecationWarning) + warnings.warn('sphinx.addnodes.termsep will be removed at Sphinx-1.6. ' + 'This warning is displayed because some Sphinx extension ' + 'uses sphinx.addnodes.termsep. Please report it to ' + 'author of the extension.', RemovedInSphinx16Warning) self.body.append(', ') raise nodes.SkipNode diff --git a/sphinx/writers/texinfo.py b/sphinx/writers/texinfo.py index 6ec077fd7..18dcd9177 100644 --- a/sphinx/writers/texinfo.py +++ b/sphinx/writers/texinfo.py @@ -19,6 +19,7 @@ from six.moves import range from docutils import nodes, writers from sphinx import addnodes, __display_version__ +from sphinx.deprecation import RemovedInSphinx16Warning from sphinx.locale import admonitionlabels, _ from sphinx.util.i18n import format_date from sphinx.writers.latex import collected_footnote @@ -954,8 +955,10 @@ class TexinfoTranslator(nodes.NodeVisitor): pass def visit_termsep(self, node): - warnings.warn('sphinx.addnodes.termsep will be removed at Sphinx-1.5', - DeprecationWarning) + warnings.warn('sphinx.addnodes.termsep will be removed at Sphinx-1.6. ' + 'This warning is displayed because some Sphinx extension ' + 'uses sphinx.addnodes.termsep. Please report it to ' + 'author of the extension.', RemovedInSphinx16Warning) self.body.append('\n%s ' % self.at_item_x) def depart_termsep(self, node): diff --git a/sphinx/writers/text.py b/sphinx/writers/text.py index 7032208ea..fc9e3378c 100644 --- a/sphinx/writers/text.py +++ b/sphinx/writers/text.py @@ -20,6 +20,7 @@ from docutils import nodes, writers from docutils.utils import column_width from sphinx import addnodes +from sphinx.deprecation import RemovedInSphinx16Warning from sphinx.locale import admonitionlabels, _ @@ -651,8 +652,10 @@ class TextTranslator(nodes.NodeVisitor): self.end_state(end=None) def visit_termsep(self, node): - warnings.warn('sphinx.addnodes.termsep will be removed at Sphinx-1.5', - DeprecationWarning) + warnings.warn('sphinx.addnodes.termsep will be removed at Sphinx-1.6. ' + 'This warning is displayed because some Sphinx extension ' + 'uses sphinx.addnodes.termsep. Please report it to ' + 'author of the extension.', RemovedInSphinx16Warning) self.add_text(', ') raise nodes.SkipNode From 1c8935adaef3d1d8a645a54f7fa2853de9963d0e Mon Sep 17 00:00:00 2001 From: shimizukawa <shimizukawa@gmail.com> Date: Sun, 4 Dec 2016 17:52:45 +0900 Subject: [PATCH 289/297] Inprovement of warnings mechanism. Now support disabling emit warnings and add documentation. --- .travis.yml | 1 + CHANGES | 20 +++++++++++++-- doc/devguide.rst | 57 +++++++++++++++++++++++++++++++++++++++++ doc/glossary.rst | 5 ++++ doc/invocation.rst | 17 ++++++++++++ sphinx/__init__.py | 15 +++++++++++ sphinx/application.py | 4 --- sphinx/util/pycompat.py | 3 ++- tox.ini | 4 +-- 9 files changed, 117 insertions(+), 9 deletions(-) diff --git a/.travis.yml b/.travis.yml index 5f035b73b..8cef03f44 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,6 +13,7 @@ env: global: - TEST='-v --with-timer --timer-top-n 25' - PYTHONFAULTHANDLER=x + - PYTHONWARNINGS=all matrix: - DOCUTILS=0.11 - DOCUTILS=0.12 diff --git a/CHANGES b/CHANGES index 8aaf0a274..b27b55db1 100644 --- a/CHANGES +++ b/CHANGES @@ -5,8 +5,24 @@ Incompatible changes -------------------- * #2986: ``themes/basic/defindex.html`` is now deprecated -* Emit several warnings that will be deprecated in Sphinx 1.6. - There is no way to hide the warnings. +* Emit warnings that will be deprecated in Sphinx 1.6 by default. + Users can change the behavior by setting the environment variable + PYTHONWARNINGS. Please refer :ref:`when-deprecation-warnings-are-displayed`. + +Deprecated +---------- + +These features are removed in Sphinx-1.6: + +* LDML format support in i18n feature +* ``sphinx.addnodes.termsep`` +* Some functions and classes in ``sphinx.util.pycompat``: + ``zip_longest``, ``product``, ``all``, ``any``, ``next``, ``open``, + ``class_types``, ``base_exception``, ``relpath``, ``StringIO``, ``BytesIO``. + Please use the standard library version instead; + +If any deprecation warning like ``RemovedInSphinxXXXWarning`` are displayed, +please refer :ref:`when-deprecation-warnings-are-displayed`. Features added -------------- diff --git a/doc/devguide.rst b/doc/devguide.rst index b621f622a..f29646550 100644 --- a/doc/devguide.rst +++ b/doc/devguide.rst @@ -114,6 +114,11 @@ These are the basic steps needed to start developing on Sphinx. pip install -r test-reqs.txt make test + * Again, it's useful to turn on deprecation warnings on so they're shown in + the test output:: + + PYTHONWARNINGS=all make test + * Build the documentation and check the output for different builders:: cd doc @@ -272,3 +277,55 @@ Debugging Tips $ npm install $ node_modules/.bin/grunt build # -> dest/*.global.js + +Deprecating a feature +--------------------- + +There are a couple reasons that code in Sphinx might be deprecated: + +* If a feature has been improved or modified in a backwards-incompatible way, + the old feature or behavior will be deprecated. + +* Sometimes Sphinx will include a backport of a Python library that's not + included in a version of Python that Sphinx currently supports. When Sphinx + no longer needs to support the older version of Python that doesn't include + the library, the library will be deprecated in Sphinx. + +As the :ref:`deprecation-policy` describes, +the first release of Sphinx that deprecates a feature (``A.B``) should raise a +``RemovedInSphinxXXWarning`` (where XX is the Sphinx version where the feature +will be removed) when the deprecated feature is invoked. Assuming we have good +test coverage, these warnings are converted to errors when running the test +suite with warnings enabled: ``python -Wall tests/run.py``. Thus, when adding +a ``RemovedInSphinxXXWarning`` you need to eliminate or silence any warnings +generated when running the tests. + +.. _deprecation-policy: + +Deprecation policy +------------------ + +A feature release may deprecate certain features from previous releases. If a +feature is deprecated in feature release 1.A, it will continue to work in all +1.A.x versions (for all versions of x) but raise warnings. Deprecated features +will be removed in the first 1.B release, or 1.B.1 for features deprecated in +the last 1.A.x feature release to ensure deprecations are done over at least 2 +feature releases. + +So, for example, if we decided to start the deprecation of a function in +Sphinx 1.4: + +* Sphinx 1.4.x will contain a backwards-compatible replica of the function + which will raise a ``RemovedInSphinx16Warning``. + +* Sphinx 1.5 (the version that follows 1.4) will still contain the + backwards-compatible replica. + +* Sphinx 1.6 will remove the feature outright. + +The warnings are displayed by default. You can turn off display of these +warnings with: + +* ``PYTHONWARNINGS= make html`` (Linux/Mac) +* ``export PYTHONWARNINGS=`` and do ``make html`` (Linux/Mac) +* ``set PYTHONWARNINGS=`` and do ``make html`` (Windows) diff --git a/doc/glossary.rst b/doc/glossary.rst index 3ef1623db..a92e52b98 100644 --- a/doc/glossary.rst +++ b/doc/glossary.rst @@ -73,6 +73,11 @@ Glossary directive" (e.g. :rst:dir:`function` or :rst:dir:`object`) creates such a block; and most objects can be cross-referenced to. + RemoveInSphinxXXXWarning + The feature which is warned will be removed in Sphinx-XXX version. + It usually caused from Sphinx extensions which is using deprecated. + See also :ref:`when-deprecation-warnings-are-displayed`. + role A reStructuredText markup element that allows marking a piece of text. Like directives, roles are extensible. The basic syntax looks like this: diff --git a/doc/invocation.rst b/doc/invocation.rst index 4b4593014..a16ab2128 100644 --- a/doc/invocation.rst +++ b/doc/invocation.rst @@ -410,6 +410,23 @@ variables to customize behavior: Additional options for :program:`sphinx-build`. +.. _when-deprecation-warnings-are-displayed: + +Deprecation Warnings +-------------------- + +If any deprecation warning like ``RemovedInSphinxXXXWarning`` are displayed +when building a user's document, some Sphinx extension is using deprecated +features. In that case, please report it to author of the extension. + +To disable the deprecation warnings, please set ``PYTHONWARNINGS=`` environment +variable to your environment. For example: + +* ``PYTHONWARNINGS= make html`` (Linux/Mac) +* ``export PYTHONWARNINGS=`` and do ``make html`` (Linux/Mac) +* ``set PYTHONWARNINGS=`` and do ``make html`` (Windows) +* modify your Makefile/make.bat and set the environment variable + .. _invocation-apidoc: diff --git a/sphinx/__init__.py b/sphinx/__init__.py index 415a85421..84265e51e 100644 --- a/sphinx/__init__.py +++ b/sphinx/__init__.py @@ -12,9 +12,24 @@ # Keep this file executable as-is in Python 3! # (Otherwise getting the version out of it from setup.py is impossible.) +from __future__ import absolute_import + +import os import sys +import warnings from os import path +from .deprecation import RemovedInNextVersionWarning + +# by default, all DeprecationWarning under sphinx package will be emit. +# Users can avoid this by using environment variable: PYTHONWARNINGS= +if 'PYTHONWARNINGS' not in os.environ: + warnings.filterwarnings('default', + category=RemovedInNextVersionWarning, module='sphinx') +# docutils.io using mode='rU' for open +warnings.filterwarnings('ignore', "'U' mode is deprecated", + DeprecationWarning, module='docutils.io') + __version__ = '1.5b2' __released__ = '1.5b2' # used when Sphinx builds its own docs diff --git a/sphinx/application.py b/sphinx/application.py index e1e0af512..cee780c9c 100644 --- a/sphinx/application.py +++ b/sphinx/application.py @@ -17,7 +17,6 @@ import sys import types import posixpath import traceback -import warnings from os import path from collections import deque @@ -33,7 +32,6 @@ from sphinx.roles import XRefRole from sphinx.config import Config from sphinx.errors import SphinxError, SphinxWarning, ExtensionError, \ VersionRequirementError, ConfigError -from sphinx.deprecation import RemovedInSphinx16Warning from sphinx.domains import ObjType from sphinx.domains.std import GenericObject, Target, StandardDomain from sphinx.environment import BuildEnvironment @@ -108,8 +106,6 @@ class Sphinx(object): confoverrides=None, status=sys.stdout, warning=sys.stderr, freshenv=False, warningiserror=False, tags=None, verbosity=0, parallel=0): - warnings.filterwarnings('default', category=RemovedInSphinx16Warning, - module='sphinx') self.verbosity = verbosity self.next_listener_id = 0 self._extensions = {} diff --git a/sphinx/util/pycompat.py b/sphinx/util/pycompat.py index d268ef6ae..69a5e07cf 100644 --- a/sphinx/util/pycompat.py +++ b/sphinx/util/pycompat.py @@ -106,7 +106,8 @@ def execfile_(filepath, _globals, open=open): from sphinx.util.osutil import fs_encoding # get config source -- 'b' is a no-op under 2.x, while 'U' is # ignored under 3.x (but 3.x compile() accepts \r\n newlines) - with open(filepath, 'rbU') as f: + mode = 'rb' if PY3 else 'rbU' + with open(filepath, mode) as f: source = f.read() # py26 accept only LF eol instead of CRLF diff --git a/tox.ini b/tox.ini index ca3cac99b..1ccaa583f 100644 --- a/tox.ini +++ b/tox.ini @@ -14,7 +14,7 @@ deps= setenv = SPHINX_TEST_TEMPDIR = {envdir}/testbuild commands= - {envpython} tests/run.py -I py35 -m '^[tT]est' {posargs} + {envpython} -Wall tests/run.py -I py35 -m '^[tT]est' {posargs} sphinx-build -q -W -b html -d {envtmpdir}/doctrees doc {envtmpdir}/html [testenv:pypy] @@ -48,5 +48,5 @@ deps= [testenv:py35] commands= - {envpython} tests/run.py -m '^[tT]est' {posargs} + {envpython} -Wall tests/run.py -m '^[tT]est' {posargs} sphinx-build -q -W -b html -d {envtmpdir}/doctrees doc {envtmpdir}/html From 0e95cab53010edaad82dff844e3156ee9ccd36a9 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Sun, 4 Dec 2016 21:10:01 +0900 Subject: [PATCH 290/297] Update CHANGES --- CHANGES | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 79e9007a9..356f96484 100644 --- a/CHANGES +++ b/CHANGES @@ -24,7 +24,7 @@ Bugs fixed * #3155: Fix JavaScript for `html_sourcelink_suffix` fails with IE and Opera * #3085: keep current directory after breaking build documentation. Thanks to Timotheus Kampik. -* #3181: pLaTeX crashes with a section contains emdash +* #3181: pLaTeX crashes with a section contains endash * #3180: latex: add stretch/shrink between successive singleline or multipleline cpp signatures (ref #3072) * #3128: globing images does not support .svgz file From 37a41be2a2bf30467dc9c8089c9ac5130fb3e7c8 Mon Sep 17 00:00:00 2001 From: shimizukawa <shimizukawa@gmail.com> Date: Sun, 4 Dec 2016 22:03:25 +0900 Subject: [PATCH 291/297] small fix in setup.py and release-checklist. --- setup.py | 2 +- utils/release-checklist | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 37c10b345..3582124ac 100644 --- a/setup.py +++ b/setup.py @@ -157,7 +157,7 @@ else: msgid = msgid[0] jscatalog[msgid] = message.string - with open(js_file, 'wb') as outfile: + with open(js_file, 'wt') as outfile: outfile.write('Documentation.addTranslations(') dump(dict( messages=jscatalog, diff --git a/utils/release-checklist b/utils/release-checklist index b73a191f9..78e9323b2 100644 --- a/utils/release-checklist +++ b/utils/release-checklist @@ -5,6 +5,7 @@ Release checklist * Check `git status` * Run `make style-check` * Run `tx pull -a -f` in sphinx/locale if final major release +* Run `python setup.py compile_catalog` in project root after 'tx pull' * Update version info in sphinx/__init__.py * Update release date in CHANGES * `git commit -am 'Bump to x.y.z final'` From 30b9acc3026c795ba98beb361afff271fe197821 Mon Sep 17 00:00:00 2001 From: shimizukawa <shimizukawa@gmail.com> Date: Sun, 4 Dec 2016 22:04:05 +0900 Subject: [PATCH 292/297] Update translations --- sphinx/locale/bn/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/bn/LC_MESSAGES/sphinx.mo | Bin 13904 -> 14336 bytes sphinx/locale/bn/LC_MESSAGES/sphinx.po | 348 ++++---- sphinx/locale/ca/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/ca/LC_MESSAGES/sphinx.mo | Bin 10846 -> 11323 bytes sphinx/locale/ca/LC_MESSAGES/sphinx.po | 348 ++++---- sphinx/locale/cmn/LC_MESSAGES/sphinx.js | 1 + sphinx/locale/cmn/LC_MESSAGES/sphinx.mo | Bin 0 -> 11140 bytes sphinx/locale/cmn/LC_MESSAGES/sphinx.po | 914 ++++++++++++++++++++++ sphinx/locale/cs/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/cs/LC_MESSAGES/sphinx.mo | Bin 10993 -> 11471 bytes sphinx/locale/cs/LC_MESSAGES/sphinx.po | 348 ++++---- sphinx/locale/cy/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/cy/LC_MESSAGES/sphinx.mo | Bin 10905 -> 11380 bytes sphinx/locale/cy/LC_MESSAGES/sphinx.po | 346 ++++---- sphinx/locale/da/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/da/LC_MESSAGES/sphinx.mo | Bin 10738 -> 11231 bytes sphinx/locale/da/LC_MESSAGES/sphinx.po | 352 +++++---- sphinx/locale/de/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/de/LC_MESSAGES/sphinx.mo | Bin 11054 -> 11555 bytes sphinx/locale/de/LC_MESSAGES/sphinx.po | 357 +++++---- sphinx/locale/el/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/el/LC_MESSAGES/sphinx.mo | Bin 14388 -> 14824 bytes sphinx/locale/el/LC_MESSAGES/sphinx.po | 348 ++++---- sphinx/locale/eo/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/eo/LC_MESSAGES/sphinx.mo | Bin 10675 -> 11147 bytes sphinx/locale/eo/LC_MESSAGES/sphinx.po | 344 ++++---- sphinx/locale/es/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/es/LC_MESSAGES/sphinx.mo | Bin 11406 -> 11933 bytes sphinx/locale/es/LC_MESSAGES/sphinx.po | 353 +++++---- sphinx/locale/et/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/et/LC_MESSAGES/sphinx.mo | Bin 10873 -> 11325 bytes sphinx/locale/et/LC_MESSAGES/sphinx.po | 356 +++++---- sphinx/locale/eu/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/eu/LC_MESSAGES/sphinx.mo | Bin 10931 -> 11410 bytes sphinx/locale/eu/LC_MESSAGES/sphinx.po | 346 ++++---- sphinx/locale/fa/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/fa/LC_MESSAGES/sphinx.mo | Bin 11418 -> 11888 bytes sphinx/locale/fa/LC_MESSAGES/sphinx.po | 340 ++++---- sphinx/locale/fi/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/fi/LC_MESSAGES/sphinx.mo | Bin 10489 -> 10971 bytes sphinx/locale/fi/LC_MESSAGES/sphinx.po | 340 ++++---- sphinx/locale/fr/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/fr/LC_MESSAGES/sphinx.mo | Bin 11353 -> 11836 bytes sphinx/locale/fr/LC_MESSAGES/sphinx.po | 359 +++++---- sphinx/locale/he/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/he/LC_MESSAGES/sphinx.mo | Bin 11250 -> 11691 bytes sphinx/locale/he/LC_MESSAGES/sphinx.po | 344 ++++---- sphinx/locale/hi/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/hi/LC_MESSAGES/sphinx.mo | Bin 10768 -> 11591 bytes sphinx/locale/hi/LC_MESSAGES/sphinx.po | 370 +++++---- sphinx/locale/hr/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/hr/LC_MESSAGES/sphinx.mo | Bin 10863 -> 11339 bytes sphinx/locale/hr/LC_MESSAGES/sphinx.po | 374 +++++---- sphinx/locale/hu/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/hu/LC_MESSAGES/sphinx.mo | Bin 11350 -> 11793 bytes sphinx/locale/hu/LC_MESSAGES/sphinx.po | 348 ++++---- sphinx/locale/id/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/id/LC_MESSAGES/sphinx.mo | Bin 10744 -> 11216 bytes sphinx/locale/id/LC_MESSAGES/sphinx.po | 354 +++++---- sphinx/locale/is/LC_MESSAGES/sphinx.js | 1 + sphinx/locale/is/LC_MESSAGES/sphinx.mo | Bin 0 -> 11151 bytes sphinx/locale/is/LC_MESSAGES/sphinx.po | 914 ++++++++++++++++++++++ sphinx/locale/it/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/it/LC_MESSAGES/sphinx.mo | Bin 11108 -> 11635 bytes sphinx/locale/it/LC_MESSAGES/sphinx.po | 349 +++++---- sphinx/locale/it_IT/LC_MESSAGES/sphinx.js | 1 + sphinx/locale/it_IT/LC_MESSAGES/sphinx.mo | Bin 0 -> 11130 bytes sphinx/locale/it_IT/LC_MESSAGES/sphinx.po | 914 ++++++++++++++++++++++ sphinx/locale/ja/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/ja/LC_MESSAGES/sphinx.mo | Bin 11715 -> 12237 bytes sphinx/locale/ja/LC_MESSAGES/sphinx.po | 358 +++++---- sphinx/locale/ko/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/ko/LC_MESSAGES/sphinx.mo | Bin 10705 -> 11185 bytes sphinx/locale/ko/LC_MESSAGES/sphinx.po | 338 ++++---- sphinx/locale/lt/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/lt/LC_MESSAGES/sphinx.mo | Bin 11167 -> 11626 bytes sphinx/locale/lt/LC_MESSAGES/sphinx.po | 348 ++++---- sphinx/locale/lv/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/lv/LC_MESSAGES/sphinx.mo | Bin 11067 -> 11546 bytes sphinx/locale/lv/LC_MESSAGES/sphinx.po | 348 ++++---- sphinx/locale/mk/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/mk/LC_MESSAGES/sphinx.mo | Bin 10989 -> 11469 bytes sphinx/locale/mk/LC_MESSAGES/sphinx.po | 338 ++++---- sphinx/locale/nb/LC_MESSAGES/sphinx.js | 1 + sphinx/locale/nb/LC_MESSAGES/sphinx.mo | Bin 0 -> 11137 bytes sphinx/locale/nb/LC_MESSAGES/sphinx.po | 914 ++++++++++++++++++++++ sphinx/locale/nb_NO/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/nb_NO/LC_MESSAGES/sphinx.mo | Bin 10566 -> 11045 bytes sphinx/locale/nb_NO/LC_MESSAGES/sphinx.po | 348 ++++---- sphinx/locale/ne/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/ne/LC_MESSAGES/sphinx.mo | Bin 13415 -> 13874 bytes sphinx/locale/ne/LC_MESSAGES/sphinx.po | 349 +++++---- sphinx/locale/nl/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/nl/LC_MESSAGES/sphinx.mo | Bin 10811 -> 11445 bytes sphinx/locale/nl/LC_MESSAGES/sphinx.po | 467 ++++++----- sphinx/locale/no/LC_MESSAGES/sphinx.js | 1 + sphinx/locale/no/LC_MESSAGES/sphinx.mo | Bin 0 -> 11132 bytes sphinx/locale/no/LC_MESSAGES/sphinx.po | 914 ++++++++++++++++++++++ sphinx/locale/pl/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/pl/LC_MESSAGES/sphinx.mo | Bin 11052 -> 11578 bytes sphinx/locale/pl/LC_MESSAGES/sphinx.po | 354 +++++---- sphinx/locale/pt_BR/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/pt_BR/LC_MESSAGES/sphinx.mo | Bin 11153 -> 11674 bytes sphinx/locale/pt_BR/LC_MESSAGES/sphinx.po | 350 +++++---- sphinx/locale/pt_PT/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/pt_PT/LC_MESSAGES/sphinx.mo | Bin 11202 -> 11678 bytes sphinx/locale/pt_PT/LC_MESSAGES/sphinx.po | 349 +++++---- sphinx/locale/ro/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/ro/LC_MESSAGES/sphinx.mo | Bin 11196 -> 11655 bytes sphinx/locale/ro/LC_MESSAGES/sphinx.po | 349 +++++---- sphinx/locale/ru/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/ru/LC_MESSAGES/sphinx.mo | Bin 13829 -> 14547 bytes sphinx/locale/ru/LC_MESSAGES/sphinx.po | 359 +++++---- sphinx/locale/si/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/si/LC_MESSAGES/sphinx.mo | Bin 11504 -> 11984 bytes sphinx/locale/si/LC_MESSAGES/sphinx.po | 338 ++++---- sphinx/locale/sk/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/sk/LC_MESSAGES/sphinx.mo | Bin 11000 -> 11507 bytes sphinx/locale/sk/LC_MESSAGES/sphinx.po | 351 +++++---- sphinx/locale/sl/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/sl/LC_MESSAGES/sphinx.mo | Bin 10811 -> 11265 bytes sphinx/locale/sl/LC_MESSAGES/sphinx.po | 348 ++++---- sphinx/locale/sv/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/sv/LC_MESSAGES/sphinx.mo | Bin 10615 -> 11087 bytes sphinx/locale/sv/LC_MESSAGES/sphinx.po | 348 ++++---- sphinx/locale/tr/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/tr/LC_MESSAGES/sphinx.mo | Bin 11185 -> 11658 bytes sphinx/locale/tr/LC_MESSAGES/sphinx.po | 350 +++++---- sphinx/locale/uk_UA/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/uk_UA/LC_MESSAGES/sphinx.mo | Bin 12384 -> 12847 bytes sphinx/locale/uk_UA/LC_MESSAGES/sphinx.po | 348 ++++---- sphinx/locale/vi/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/vi/LC_MESSAGES/sphinx.mo | Bin 11232 -> 11688 bytes sphinx/locale/vi/LC_MESSAGES/sphinx.po | 342 ++++---- sphinx/locale/zh_CN/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/zh_CN/LC_MESSAGES/sphinx.mo | Bin 10309 -> 10778 bytes sphinx/locale/zh_CN/LC_MESSAGES/sphinx.po | 350 +++++---- sphinx/locale/zh_TW/LC_MESSAGES/sphinx.js | 2 +- sphinx/locale/zh_TW/LC_MESSAGES/sphinx.mo | Bin 10487 -> 10945 bytes sphinx/locale/zh_TW/LC_MESSAGES/sphinx.po | 363 +++++---- 141 files changed, 12790 insertions(+), 6686 deletions(-) create mode 100644 sphinx/locale/cmn/LC_MESSAGES/sphinx.js create mode 100644 sphinx/locale/cmn/LC_MESSAGES/sphinx.mo create mode 100644 sphinx/locale/cmn/LC_MESSAGES/sphinx.po create mode 100644 sphinx/locale/is/LC_MESSAGES/sphinx.js create mode 100644 sphinx/locale/is/LC_MESSAGES/sphinx.mo create mode 100644 sphinx/locale/is/LC_MESSAGES/sphinx.po create mode 100644 sphinx/locale/it_IT/LC_MESSAGES/sphinx.js create mode 100644 sphinx/locale/it_IT/LC_MESSAGES/sphinx.mo create mode 100644 sphinx/locale/it_IT/LC_MESSAGES/sphinx.po create mode 100644 sphinx/locale/nb/LC_MESSAGES/sphinx.js create mode 100644 sphinx/locale/nb/LC_MESSAGES/sphinx.mo create mode 100644 sphinx/locale/nb/LC_MESSAGES/sphinx.po create mode 100644 sphinx/locale/no/LC_MESSAGES/sphinx.js create mode 100644 sphinx/locale/no/LC_MESSAGES/sphinx.mo create mode 100644 sphinx/locale/no/LC_MESSAGES/sphinx.po diff --git a/sphinx/locale/bn/LC_MESSAGES/sphinx.js b/sphinx/locale/bn/LC_MESSAGES/sphinx.js index e758ee2ee..0fffc9ed5 100644 --- a/sphinx/locale/bn/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/bn/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "bn", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">\u0995\u09aa\u09bf\u09b0\u09be\u0987\u099f</a> %(copyright)s.", "© Copyright %(copyright)s.": "© \u0995\u09aa\u09bf\u09b0\u09be\u0987\u099f %(copyright)s.", ", in ": "", "About these documents": "\u098f\u0987 \u09a1\u0995\u09c1\u09ae\u09c7\u09a8\u09cd\u099f \u09b8\u09ae\u09cd\u09aa\u09b0\u09cd\u0995\u09c7", "Automatically generated list of changes in version %(version)s": "\u09b8\u09cd\u09ac\u09df\u0982\u0995\u09cd\u09b0\u09bf\u09df\u09ad\u09be\u09ac\u09c7 \u09a4\u09c8\u09b0\u09c0 %(version)s-\u098f \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8 \u09b8\u09ae\u09c2\u09b9\u09c7\u09b0 \u09a4\u09be\u09b2\u09bf\u0995\u09be\u0964", "C API changes": "C API \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8", "Changes in Version %(version)s — %(docstitle)s": "%(version)s — %(docstitle)s-\u098f \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8 \u09b8\u09ae\u09c2\u09b9", "Collapse sidebar": "", "Complete Table of Contents": "\u09aa\u09c2\u09b0\u09cd\u09a3\u09be\u0999\u09cd\u0997 \u09b8\u09c2\u099a\u09c0\u09aa\u09a4\u09cd\u09b0", "Contents": "", "Copyright": "\u0995\u09aa\u09bf\u09b0\u09be\u0987\u099f", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "<a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s \u09a6\u09bf\u09df\u09c7 \u09a4\u09c8\u09b0\u09c0\u0964", "Expand 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.": "\u098f\u0996\u09be\u09a8 \u09a5\u09c7\u0995\u09c7 \u098f\u0987 \u09a8\u09a5\u09bf\u0997\u09c1\u09b2\u09c7\u09be\u09a4\u09c7 \u0986\u09aa\u09a8\u09bf \u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be\u09a8 \u0995\u09b0\u09a4\u09c7 \u09aa\u09be\u09b0\u09ac\u09c7\u09a8\u0964 \n \u0986\u09aa\u09a8\u09be\u09b0 \u0995\u09be\u0999\u09cd\u0995\u09cd\u09b7\u09bf\u09a4 \u09b6\u09ac\u09cd\u09a6\u09b8\u09ae\u09c2\u09b9 \u09a8\u09bf\u099a\u09c7\u09b0 \u09ac\u09be\u0995\u09cd\u09b8\u09c7 \u09b2\u09bf\u0996\u09c1\u09a8 \u098f\u09ac\u0982 \"\u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be\u09a8\" \u09ac\u09be\u099f\u09a8\u09c7 \u0995\u09cd\u09b2\u09bf\u0995 \u0995\u09b0\u09c1\u09a8\u0964\n \u0989\u09b2\u09cd\u09b2\u09c7\u0996\u09cd\u09af, \u09b8\u0995\u09b2 \u09b6\u09ac\u09cd\u09a6\u09b8\u09ae\u09c2\u09b9\u09c7\u09b0 \u0989\u09aa\u09b8\u09cd\u09a5\u09bf\u09a4\u09bf \u09a8\u09bf\u09df\u09c7 \u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be\u09a8 \u0995\u09b0\u09be \u09b9\u09ac\u09c7\u0964 \u09af\u09c7\u09b8\u09ac \u09aa\u09be\u09a4\u09be\u09df \u09b8\u0995\u09b2\n \u09b6\u09ac\u09cd\u09a6 \u09a8\u09c7\u0987 \u09b8\u09c7\u0997\u09c1\u09b2\u09c7\u09be \u09ac\u09be\u09a6 \u09a6\u09c7\u09df\u09be \u09b9\u09ac\u09c7\u0964", "Full index on one page": "\u098f\u0995 \u09aa\u09be\u09a4\u09be\u09df \u09b8\u09ae\u09cd\u09aa\u09c2\u09b0\u09cd\u09a3 \u0987\u09a8\u09a1\u09c7\u0995\u09cd\u09b8", "General Index": "\u09b8\u09be\u09a7\u09be\u09b0\u09a3 \u0987\u09a8\u09a1\u09c7\u0995\u09cd\u09b8", "Global Module Index": "\u0997\u09cd\u09b2\u09c7\u09be\u09ac\u09be\u09b2 \u09ae\u09a1\u09bf\u0989\u09b2 \u0987\u09a8\u09a1\u09c7\u0995\u09cd\u09b8", "Go": "\u09af\u09be\u09a8", "Hide Search Matches": "\u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be\u09a8\u09c7\u09b0 \u09ae\u09cd\u09af\u09be\u099a\u0997\u09c1\u09b2\u09c7\u09be \u09b2\u09c1\u0995\u09be\u09a8", "Index": "\u0987\u09a8\u09a1\u09c7\u0995\u09cd\u09b8", "Index – %(key)s": "\u0987\u09a8\u09a1\u09c7\u0995\u09cd\u09b8 – %(key)s", "Index pages by letter": "\u09ac\u09b0\u09cd\u09a3\u09be\u09a8\u09c1\u09b8\u09be\u09b0\u09c7 \u0987\u09a8\u09a1\u09c7\u0995\u09cd\u09b8 \u09aa\u09be\u09a4\u09be", "Indices and tables:": "\u0987\u09a8\u09a1\u09c7\u0995\u09cd\u09b8 \u0993 \u099f\u09c7\u09ac\u09bf\u09b2 \u09b8\u09ae\u09c2\u09b9:", "Last updated on %(last_updated)s.": "%(last_updated)s \u09b8\u09b0\u09cd\u09ac\u09b6\u09c7\u09b7 \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8 \u0995\u09b0\u09be \u09b9\u09df\u09c7\u099b\u09c7\u0964", "Library changes": "\u09b2\u09be\u0987\u09ac\u09cd\u09b0\u09c7\u09b0\u09bf\u09b0 \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8", "Navigation": "\u09a8\u09c7\u09ad\u09bf\u0997\u09c7\u09b6\u09a8", "Next topic": "\u09aa\u09b0\u09ac\u09b0\u09cd\u09a4\u09c0 \u099f\u09aa\u09bf\u0995", "Other changes": "\u0985\u09a8\u09cd\u09af\u09be\u09a8\u09cd\u09af \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8", "Overview": "\u09ad\u09c1\u09ae\u09bf\u0995\u09be", "Permalink to this definition": "\u098f\u0987 \u09b8\u0982\u099c\u09cd\u099e\u09be\u09b0 \u09aa\u09be\u09b0\u09cd\u09ae\u09be\u09b2\u09bf\u0999\u09cd\u0995", "Permalink to this headline": "\u098f\u0987 \u09b6\u09bf\u09b0\u09c7\u09be\u09a8\u09be\u09ae\u09c7\u09b0 \u09aa\u09be\u09b0\u09cd\u09ae\u09be\u09b2\u09bf\u0999\u09cd\u0995", "Please activate JavaScript to enable the search\n functionality.": "\u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be\u09a8 \u0995\u09b0\u09be\u09b0 \u099c\u09a8\u09cd\u09af \u0985\u09a8\u09c1\u0997\u09cd\u09b0\u09b9\u09aa\u09c2\u09b0\u09cd\u09ac\u0995 \u099c\u09be\u09ad\u09be\u09b8\u09cd\u0995\u09cd\u09b0\u09bf\u09aa\u09cd\u099f \n \u09b8\u0995\u09cd\u09b0\u09bf\u09df \u0995\u09b0\u09c1\u09a8\u0964", "Preparing search...": "", "Previous topic": "\u09aa\u09c2\u09b0\u09cd\u09ac\u09ac\u09b0\u09cd\u09a4\u09c0 \u099f\u09aa\u09bf\u0995", "Quick search": "\u09a6\u09cd\u09b0\u09c1\u09a4 \u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be\u09a8", "Search": "\u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be\u09a8", "Search Page": "\u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be\u09a8 \u09aa\u09be\u09a4\u09be", "Search Results": "\u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be\u09a8\u09c7\u09b0 \u09ab\u09b2\u09be\u09ab\u09b2", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "%(docstitle)s \u098f\u09b0 \u09ae\u09a7\u09cd\u09af\u09c7 \u0996\u09c1\u0981\u099c\u09c1\u09a8", "Searching": "", "Show Source": "\u09b8\u09c7\u09be\u09b0\u09cd\u09b8 \u09a6\u09c7\u0996\u09c1\u09a8", "Table Of Contents": "\u09b8\u09c2\u099a\u09c0\u09aa\u09a4\u09cd\u09b0", "This Page": "\u098f\u0987 \u09aa\u09be\u09a4\u09be", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "\u09b8\u0995\u09b2 \u09ab\u09be\u0982\u09b6\u09a8, \u0995\u09cd\u09b2\u09be\u09b8, \u099f\u09be\u09b0\u09cd\u09ae", "can be huge": "\u0996\u09c1\u09ac \u09ac\u09dc \u09b9\u09a4\u09c7 \u09aa\u09be\u09b0\u09c7", "last updated": "", "lists all sections and subsections": "\u09b8\u0995\u09b2 \u0985\u09a8\u09c1\u099a\u09cd\u099b\u09c7\u09a6 \u09b8\u09ae\u09c2\u09b9\u09c7\u09b0 \u09a4\u09be\u09b2\u09bf\u0995\u09be", "next chapter": "\u09aa\u09b0\u09ac\u09b0\u09cd\u09a4\u09c0 \u0985\u09a7\u09cd\u09af\u09be\u09df", "previous chapter": "\u09aa\u09c2\u09b0\u09cd\u09ac\u09ac\u09b0\u09cd\u09a4\u09c0 \u0985\u09a7\u09cd\u09af\u09be\u09df", "quick access to all modules": "\u09b8\u0995\u09b2 \u09ae\u09a1\u09bf\u0989\u09b2\u09c7 \u09a6\u09cd\u09b0\u09c1\u09a4 \u09aa\u09cd\u09b0\u09ac\u09c7\u09b6", "search": "\u0996\u09c1\u0981\u099c\u09c1\u09a8", "search this documentation": "\u098f\u0987 \u09b8\u09b9\u09be\u09df\u09bf\u0995\u09be\u09a4\u09c7 \u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be \u0995\u09b0\u09c1\u09a8", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file +Documentation.addTranslations({"locale": "bn", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "\u098f\u0987 \u09a1\u0995\u09c1\u09ae\u09c7\u09a8\u09cd\u099f \u09b8\u09ae\u09cd\u09aa\u09b0\u09cd\u0995\u09c7", "Automatically generated list of changes in version %(version)s": "\u09b8\u09cd\u09ac\u09df\u0982\u0995\u09cd\u09b0\u09bf\u09df\u09ad\u09be\u09ac\u09c7 \u09a4\u09c8\u09b0\u09c0 %(version)s-\u098f \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8 \u09b8\u09ae\u09c2\u09b9\u09c7\u09b0 \u09a4\u09be\u09b2\u09bf\u0995\u09be\u0964", "C API changes": "C API \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "\u09aa\u09c2\u09b0\u09cd\u09a3\u09be\u0999\u09cd\u0997 \u09b8\u09c2\u099a\u09c0\u09aa\u09a4\u09cd\u09b0", "Contents": "", "Copyright": "\u0995\u09aa\u09bf\u09b0\u09be\u0987\u099f", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "<a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s \u09a6\u09bf\u09df\u09c7 \u09a4\u09c8\u09b0\u09c0\u0964", "Expand 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.": "\u098f\u0996\u09be\u09a8 \u09a5\u09c7\u0995\u09c7 \u098f\u0987 \u09a8\u09a5\u09bf\u0997\u09c1\u09b2\u09c7\u09be\u09a4\u09c7 \u0986\u09aa\u09a8\u09bf \u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be\u09a8 \u0995\u09b0\u09a4\u09c7 \u09aa\u09be\u09b0\u09ac\u09c7\u09a8\u0964 \n \u0986\u09aa\u09a8\u09be\u09b0 \u0995\u09be\u0999\u09cd\u0995\u09cd\u09b7\u09bf\u09a4 \u09b6\u09ac\u09cd\u09a6\u09b8\u09ae\u09c2\u09b9 \u09a8\u09bf\u099a\u09c7\u09b0 \u09ac\u09be\u0995\u09cd\u09b8\u09c7 \u09b2\u09bf\u0996\u09c1\u09a8 \u098f\u09ac\u0982 \"\u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be\u09a8\" \u09ac\u09be\u099f\u09a8\u09c7 \u0995\u09cd\u09b2\u09bf\u0995 \u0995\u09b0\u09c1\u09a8\u0964\n \u0989\u09b2\u09cd\u09b2\u09c7\u0996\u09cd\u09af, \u09b8\u0995\u09b2 \u09b6\u09ac\u09cd\u09a6\u09b8\u09ae\u09c2\u09b9\u09c7\u09b0 \u0989\u09aa\u09b8\u09cd\u09a5\u09bf\u09a4\u09bf \u09a8\u09bf\u09df\u09c7 \u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be\u09a8 \u0995\u09b0\u09be \u09b9\u09ac\u09c7\u0964 \u09af\u09c7\u09b8\u09ac \u09aa\u09be\u09a4\u09be\u09df \u09b8\u0995\u09b2\n \u09b6\u09ac\u09cd\u09a6 \u09a8\u09c7\u0987 \u09b8\u09c7\u0997\u09c1\u09b2\u09c7\u09be \u09ac\u09be\u09a6 \u09a6\u09c7\u09df\u09be \u09b9\u09ac\u09c7\u0964", "Full index on one page": "\u098f\u0995 \u09aa\u09be\u09a4\u09be\u09df \u09b8\u09ae\u09cd\u09aa\u09c2\u09b0\u09cd\u09a3 \u0987\u09a8\u09a1\u09c7\u0995\u09cd\u09b8", "General Index": "\u09b8\u09be\u09a7\u09be\u09b0\u09a3 \u0987\u09a8\u09a1\u09c7\u0995\u09cd\u09b8", "Global Module Index": "\u0997\u09cd\u09b2\u09c7\u09be\u09ac\u09be\u09b2 \u09ae\u09a1\u09bf\u0989\u09b2 \u0987\u09a8\u09a1\u09c7\u0995\u09cd\u09b8", "Go": "\u09af\u09be\u09a8", "Hide Search Matches": "\u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be\u09a8\u09c7\u09b0 \u09ae\u09cd\u09af\u09be\u099a\u0997\u09c1\u09b2\u09c7\u09be \u09b2\u09c1\u0995\u09be\u09a8", "Index": "\u0987\u09a8\u09a1\u09c7\u0995\u09cd\u09b8", "Index – %(key)s": "\u0987\u09a8\u09a1\u09c7\u0995\u09cd\u09b8 – %(key)s", "Index pages by letter": "\u09ac\u09b0\u09cd\u09a3\u09be\u09a8\u09c1\u09b8\u09be\u09b0\u09c7 \u0987\u09a8\u09a1\u09c7\u0995\u09cd\u09b8 \u09aa\u09be\u09a4\u09be", "Indices and tables:": "\u0987\u09a8\u09a1\u09c7\u0995\u09cd\u09b8 \u0993 \u099f\u09c7\u09ac\u09bf\u09b2 \u09b8\u09ae\u09c2\u09b9:", "Last updated on %(last_updated)s.": "%(last_updated)s \u09b8\u09b0\u09cd\u09ac\u09b6\u09c7\u09b7 \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8 \u0995\u09b0\u09be \u09b9\u09df\u09c7\u099b\u09c7\u0964", "Library changes": "\u09b2\u09be\u0987\u09ac\u09cd\u09b0\u09c7\u09b0\u09bf\u09b0 \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8", "Navigation": "\u09a8\u09c7\u09ad\u09bf\u0997\u09c7\u09b6\u09a8", "Next topic": "\u09aa\u09b0\u09ac\u09b0\u09cd\u09a4\u09c0 \u099f\u09aa\u09bf\u0995", "Other changes": "\u0985\u09a8\u09cd\u09af\u09be\u09a8\u09cd\u09af \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09a8", "Overview": "\u09ad\u09c1\u09ae\u09bf\u0995\u09be", "Permalink to this definition": "\u098f\u0987 \u09b8\u0982\u099c\u09cd\u099e\u09be\u09b0 \u09aa\u09be\u09b0\u09cd\u09ae\u09be\u09b2\u09bf\u0999\u09cd\u0995", "Permalink to this headline": "\u098f\u0987 \u09b6\u09bf\u09b0\u09c7\u09be\u09a8\u09be\u09ae\u09c7\u09b0 \u09aa\u09be\u09b0\u09cd\u09ae\u09be\u09b2\u09bf\u0999\u09cd\u0995", "Please activate JavaScript to enable the search\n functionality.": "\u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be\u09a8 \u0995\u09b0\u09be\u09b0 \u099c\u09a8\u09cd\u09af \u0985\u09a8\u09c1\u0997\u09cd\u09b0\u09b9\u09aa\u09c2\u09b0\u09cd\u09ac\u0995 \u099c\u09be\u09ad\u09be\u09b8\u09cd\u0995\u09cd\u09b0\u09bf\u09aa\u09cd\u099f \n \u09b8\u0995\u09cd\u09b0\u09bf\u09df \u0995\u09b0\u09c1\u09a8\u0964", "Preparing search...": "", "Previous topic": "\u09aa\u09c2\u09b0\u09cd\u09ac\u09ac\u09b0\u09cd\u09a4\u09c0 \u099f\u09aa\u09bf\u0995", "Quick search": "\u09a6\u09cd\u09b0\u09c1\u09a4 \u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be\u09a8", "Search": "\u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be\u09a8", "Search Page": "\u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be\u09a8 \u09aa\u09be\u09a4\u09be", "Search Results": "\u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be\u09a8\u09c7\u09b0 \u09ab\u09b2\u09be\u09ab\u09b2", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "%(docstitle)s \u098f\u09b0 \u09ae\u09a7\u09cd\u09af\u09c7 \u0996\u09c1\u0981\u099c\u09c1\u09a8", "Searching": "", "Show Source": "\u09b8\u09c7\u09be\u09b0\u09cd\u09b8 \u09a6\u09c7\u0996\u09c1\u09a8", "Table Of Contents": "\u09b8\u09c2\u099a\u09c0\u09aa\u09a4\u09cd\u09b0", "This Page": "\u098f\u0987 \u09aa\u09be\u09a4\u09be", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "\u09b8\u0995\u09b2 \u09ab\u09be\u0982\u09b6\u09a8, \u0995\u09cd\u09b2\u09be\u09b8, \u099f\u09be\u09b0\u09cd\u09ae", "can be huge": "\u0996\u09c1\u09ac \u09ac\u09dc \u09b9\u09a4\u09c7 \u09aa\u09be\u09b0\u09c7", "last updated": "", "lists all sections and subsections": "\u09b8\u0995\u09b2 \u0985\u09a8\u09c1\u099a\u09cd\u099b\u09c7\u09a6 \u09b8\u09ae\u09c2\u09b9\u09c7\u09b0 \u09a4\u09be\u09b2\u09bf\u0995\u09be", "next chapter": "\u09aa\u09b0\u09ac\u09b0\u09cd\u09a4\u09c0 \u0985\u09a7\u09cd\u09af\u09be\u09df", "previous chapter": "\u09aa\u09c2\u09b0\u09cd\u09ac\u09ac\u09b0\u09cd\u09a4\u09c0 \u0985\u09a7\u09cd\u09af\u09be\u09df", "quick access to all modules": "\u09b8\u0995\u09b2 \u09ae\u09a1\u09bf\u0989\u09b2\u09c7 \u09a6\u09cd\u09b0\u09c1\u09a4 \u09aa\u09cd\u09b0\u09ac\u09c7\u09b6", "search": "\u0996\u09c1\u0981\u099c\u09c1\u09a8", "search this documentation": "\u098f\u0987 \u09b8\u09b9\u09be\u09df\u09bf\u0995\u09be\u09a4\u09c7 \u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be \u0995\u09b0\u09c1\u09a8", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/locale/bn/LC_MESSAGES/sphinx.mo b/sphinx/locale/bn/LC_MESSAGES/sphinx.mo index f2bc637f4542a24d722a5748b6a30524da9d3c77..5d47dbee1e18387443bad675e95f431b259353ef 100644 GIT binary patch delta 3928 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 F{so^+25bNT delta 3620 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 diff --git a/sphinx/locale/bn/LC_MESSAGES/sphinx.po b/sphinx/locale/bn/LC_MESSAGES/sphinx.po index 4c941e1df..e2cff3019 100644 --- a/sphinx/locale/bn/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/bn/LC_MESSAGES/sphinx.po @@ -8,61 +8,42 @@ msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Bengali (http://www.transifex.com/sphinx-doc/sphinx-1/language/bn/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: bn\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "পাইথন উন্নয়ন পরামর্শ; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "বিল্টইন সমূহ" @@ -71,8 +52,11 @@ msgstr "বিল্টইন সমূহ" msgid "Module level" msgstr "মডিউল লেভেল" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -83,18 +67,28 @@ msgstr "সাধারণ ইনডেক্স" msgid "index" msgstr "ইনডেক্স" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "পরবর্তী" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "পূর্ববর্তী" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr "(-" +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "অনুচ্ছেদ লেখক:" @@ -111,23 +105,23 @@ msgstr "" msgid "Author: " msgstr "লেখক:" -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "প্যারামিটার" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "রিটার্নস" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "রিটার্ন টাইপ" @@ -156,12 +150,12 @@ msgstr "%s (C টাইপ)" msgid "%s (C variable)" msgstr "%s (C ভ্যারিয়েবল)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "ফাংশন" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "" @@ -169,7 +163,7 @@ msgstr "" msgid "macro" msgstr "" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "" @@ -177,63 +171,72 @@ msgstr "" msgid "variable" msgstr "" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (C++ টাইপ)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (C++ মেম্বার)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (C++ ফাংশন)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (C++ ক্লাসে)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "ক্লাস" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (বিল্ট-ইন ফাংশন)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (%s মেথড)" @@ -248,7 +251,7 @@ msgstr "%s() (ক্লাসে)" msgid "%s (global variable or constant)" msgstr "" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (%s এ্যট্রিবিউট)" @@ -257,116 +260,116 @@ msgstr "%s (%s এ্যট্রিবিউট)" msgid "Arguments" msgstr "" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "ডাটা" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "এ্যট্রিবিউট" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "রেইজেস" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (%s মডিউলে)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (বিল্ট-ইন ভ্যারিয়েবল)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (%s মডিউলে)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (বিল্ট-ইন ক্লাস)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (%s ক্লাসে)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s (%s.%s মেথড)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s (%s.%s স্ট্যাটিক মেথড)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (%s স্ট্যাটিক মেথড)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "%s() (%s.%s ক্লাস মেথড)" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "%s() (%s ক্লাস মেথড)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (%s.%s এ্যট্রিবিউট)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (মডিউল)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "মডিউল সমূহ" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "ডেপ্রিকেটেড" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "এক্সেপশন" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "মেথড" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "ক্লাস মেথড" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "স্ট্যাটিক মেথড" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "মডিউল" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr "" @@ -388,120 +391,147 @@ msgstr "" msgid "role" msgstr "" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "এনভায়রনমেন্ট ভ্যারিয়েবল; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%sকমান্ড লাইন অপশন; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "শব্দকোষ" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "ব্যকরণ টোকেন" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "এনভায়রনমেন্ট ভ্যারিয়েবল" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "প্রোগ্রাম অপশন" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "ইনডেক্স" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "মডিউল ইনডেক্স" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "অনুসন্ধান পাতা" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" -msgstr "বেস: %s" +msgid "see %s" +msgstr "" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr ":class:`%s` এর উপনাম" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "অসমাপ্ত কাজ" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "দৃষ্টি আকর্ষণ" @@ -582,7 +612,7 @@ msgstr "বিল্ট-ইন ফাংশন" msgid "Table Of Contents" msgstr "সূচীপত্র" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -640,15 +670,15 @@ msgstr "সকল মডিউলে দ্রুত প্রবেশ" msgid "all functions, classes, terms" msgstr "সকল ফাংশন, ক্লাস, টার্ম" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "ইনডেক্স – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "এক পাতায় সম্পূর্ণ ইনডেক্স" @@ -664,35 +694,35 @@ msgstr "খুব বড় হতে পারে" msgid "Navigation" msgstr "নেভিগেশন" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "%(docstitle)s এর মধ্যে খুঁজুন" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "এই ডকুমেন্ট সম্পর্কে" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "কপিরাইট" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">কপিরাইট</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© কপিরাইট %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "%(last_updated)s সর্বশেষ পরিবর্তন করা হয়েছে।" -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -741,13 +771,13 @@ msgstr "খুঁজুন" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "অনুসন্ধানের ফলাফল" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -764,13 +794,13 @@ msgstr "এই পাতা" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "%(version)s — %(docstitle)s-এ পরিবর্তন সমূহ" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -789,12 +819,13 @@ msgstr "C API পরিবর্তন" msgid "Other changes" msgstr "অন্যান্য পরিবর্তন" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "এই শিরোনামের পার্মালিঙ্ক" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "এই সংজ্ঞার পার্মালিঙ্ক" @@ -810,12 +841,12 @@ msgstr "" msgid "Preparing search..." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr "" @@ -832,48 +863,53 @@ msgstr "" msgid "Contents" msgstr "" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "রিলিজ" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "পাদটীকা" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "পূর্ববর্তী পাতা হতে চলমান" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "পরবর্তী পাতাতে চলমান" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[ছবি]" diff --git a/sphinx/locale/ca/LC_MESSAGES/sphinx.js b/sphinx/locale/ca/LC_MESSAGES/sphinx.js index d3ba424ad..e3cd6b736 100644 --- a/sphinx/locale/ca/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/ca/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "ca", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\\\"%(path)s\\\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": "", "About these documents": "Quant a aquests documents", "Automatically generated list of changes in version %(version)s": "Llista de canvis de la versi\u00f3 %(version)s generada autom\u00e0ticament", "C API changes": "Canvis a la API de C", "Changes in Version %(version)s — %(docstitle)s": "Canvis a la Versi\u00f3 %(version)s — %(docstitle)s", "Collapse sidebar": "", "Complete Table of Contents": "Taula de Contingut Completa", "Contents": "", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Creat amb <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand 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.": "Des d'aqu\u00ed pots fer cerques en aquests documents. Entra les \nparaules de la teva cerca i clica el bot\u00f3 \"cerca\". Tingues en compte\nque la cerca inclour\u00e0 totes les paraules que posis. Les p\u00e0gines que no\ntenen totes les paraules no sortir\u00e0n.", "Full index on one page": "\u00cdndex complet en una p\u00e0gina", "General Index": "\u00cdndex General", "Global Module Index": "\u00cdndex Global de M\u00f2duls", "Go": "Ves a", "Hide Search Matches": "Oculta Resultats de Cerca", "Index": "\u00cdndex", "Index – %(key)s": "\u00cdndes – %(key)s", "Index pages by letter": "P\u00e0gines d'\u00edndex per lletra", "Indices and tables:": "\u00cdndexs i taules:", "Last updated on %(last_updated)s.": "\u00daltima actualitzaci\u00f3 el %(last_updated)s.", "Library changes": "Canvis a la llibreria", "Navigation": "Navegaci\u00f3", "Next topic": "Tema seg\u00fcent", "Other changes": "Altres canvis", "Overview": "Resum", "Permalink to this definition": "Link permanent a aquesta definici\u00f3", "Permalink to this headline": "Link permanent a aquest t\u00edtol", "Please activate JavaScript to enable the search\n functionality.": "Activa JavaScript per utilitzar la funcionalitat\nde cerca.", "Preparing search...": "", "Previous topic": "Tema anterior", "Quick search": "Cerca r\u00e0pida", "Search": "Cerca", "Search Page": "P\u00e0gina de Cerca", "Search Results": "Resultats de la Cerca", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "Cerca dins de %(docstitle)s", "Searching": "", "Show Source": "Mostra Codi Font", "Table Of Contents": "Taula de Contingut", "This Page": "Aquesta P\u00e0gina", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "totes les funcions, classes, termes", "can be huge": "pot ser gegant", "last updated": "", "lists all sections and subsections": "llista totes les seccions i subseccions", "next chapter": "cap\u00edtol seg\u00fcent", "previous chapter": "cap\u00edtol anterior", "quick access to all modules": "acc\u00e9s r\u00e0pid a tots els m\u00f2duls", "search": "cerca", "search this documentation": "cerca aquesta documentaci\u00f3", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file +Documentation.addTranslations({"locale": "ca", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "Quant a aquests documents", "Automatically generated list of changes in version %(version)s": "Llista de canvis de la versi\u00f3 %(version)s generada autom\u00e0ticament", "C API changes": "Canvis a la API de C", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "Taula de Contingut Completa", "Contents": "", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Creat amb <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand 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.": "Des d'aqu\u00ed pots fer cerques en aquests documents. Entra les \nparaules de la teva cerca i clica el bot\u00f3 \"cerca\". Tingues en compte\nque la cerca inclour\u00e0 totes les paraules que posis. Les p\u00e0gines que no\ntenen totes les paraules no sortir\u00e0n.", "Full index on one page": "\u00cdndex complet en una p\u00e0gina", "General Index": "\u00cdndex General", "Global Module Index": "\u00cdndex Global de M\u00f2duls", "Go": "Ves a", "Hide Search Matches": "Oculta Resultats de Cerca", "Index": "\u00cdndex", "Index – %(key)s": "\u00cdndes – %(key)s", "Index pages by letter": "P\u00e0gines d'\u00edndex per lletra", "Indices and tables:": "\u00cdndexs i taules:", "Last updated on %(last_updated)s.": "\u00daltima actualitzaci\u00f3 el %(last_updated)s.", "Library changes": "Canvis a la llibreria", "Navigation": "Navegaci\u00f3", "Next topic": "Tema seg\u00fcent", "Other changes": "Altres canvis", "Overview": "Resum", "Permalink to this definition": "Link permanent a aquesta definici\u00f3", "Permalink to this headline": "Link permanent a aquest t\u00edtol", "Please activate JavaScript to enable the search\n functionality.": "Activa JavaScript per utilitzar la funcionalitat\nde cerca.", "Preparing search...": "", "Previous topic": "Tema anterior", "Quick search": "Cerca r\u00e0pida", "Search": "Cerca", "Search Page": "P\u00e0gina de Cerca", "Search Results": "Resultats de la Cerca", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "Cerca dins de %(docstitle)s", "Searching": "", "Show Source": "Mostra Codi Font", "Table Of Contents": "Taula de Contingut", "This Page": "Aquesta P\u00e0gina", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "totes les funcions, classes, termes", "can be huge": "pot ser gegant", "last updated": "", "lists all sections and subsections": "llista totes les seccions i subseccions", "next chapter": "cap\u00edtol seg\u00fcent", "previous chapter": "cap\u00edtol anterior", "quick access to all modules": "acc\u00e9s r\u00e0pid a tots els m\u00f2duls", "search": "cerca", "search this documentation": "cerca aquesta documentaci\u00f3", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/locale/ca/LC_MESSAGES/sphinx.mo b/sphinx/locale/ca/LC_MESSAGES/sphinx.mo index 373cb2c45936142d772f9d0b44bcf83e4368c668..60c2ad24517cbeab06c3e1716117c89c190e9b13 100644 GIT binary patch delta 3929 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 Vuy)XQaW`IfUBg#9lUUuf?>`Hy{WAan delta 3547 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 JRTcf{`wO^&sm1^R diff --git a/sphinx/locale/ca/LC_MESSAGES/sphinx.po b/sphinx/locale/ca/LC_MESSAGES/sphinx.po index 73ab50aa7..fc946e9ef 100644 --- a/sphinx/locale/ca/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/ca/LC_MESSAGES/sphinx.po @@ -8,61 +8,42 @@ msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Catalan (http://www.transifex.com/sphinx-doc/sphinx-1/language/ca/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: ca\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "%s %s documentació" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "vegeu %s" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "vegeu també %s" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python Enhancement Proposals; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "Mòduls Interns" @@ -71,8 +52,11 @@ msgstr "Mòduls Interns" msgid "Module level" msgstr "Nivell de mòdul" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -83,18 +67,28 @@ msgstr "Índex General" msgid "index" msgstr "índex" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "següent" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "anterior" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s documentació" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr " (a " +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "Autor de la secció:" @@ -111,23 +105,23 @@ msgstr "" msgid "Author: " msgstr "Autor: " -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Paràmetres" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "Retorna" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "Tipus de retorn" @@ -156,12 +150,12 @@ msgstr "%s (tipus de C)" msgid "%s (C variable)" msgstr "%s (variable de C)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "funció" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "membre" @@ -169,7 +163,7 @@ msgstr "membre" msgid "macro" msgstr "macro" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "tipus" @@ -177,63 +171,72 @@ msgstr "tipus" msgid "variable" msgstr "variable" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (tipus de C++)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (membre de C++)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (funció de C++)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (class de C++)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "class" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (funció interna)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (mètode %s)" @@ -248,7 +251,7 @@ msgstr "%s() (class)" msgid "%s (global variable or constant)" msgstr "" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (atribut %s)" @@ -257,116 +260,116 @@ msgstr "%s (atribut %s)" msgid "Arguments" msgstr "" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "atribut" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "Llença" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (al mòdul %s)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (variable interna)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (al mòdul %s)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (classe interna)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (class a %s)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (mètode %s.%s)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (mètode estàtic %s.%s)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (mètode estàtic %s)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (atribut %s.%s)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (mòdul)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "mòduls" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "Obsolet" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "excepció" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "mètode estàtic" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "mòdul" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr " (obsolet)" @@ -388,120 +391,147 @@ msgstr "" msgid "role" msgstr "" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "variable d'entorn; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "opció de línia de comandes %s; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "variable d'entorn" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "Índex" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "Índex de Mòduls" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "Pàgina de Cerca" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" -msgstr " Bases: %s" +msgid "see %s" +msgstr "vegeu %s" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "vegeu també %s" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "àlies de :class:`%s`" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "Pendent" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "Atenció" @@ -582,7 +612,7 @@ msgstr "funció interna" msgid "Table Of Contents" msgstr "Taula de Contingut" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -640,15 +670,15 @@ msgstr "accés ràpid a tots els mòduls" msgid "all functions, classes, terms" msgstr "totes les funcions, classes, termes" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Índes – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "Índex complet en una pàgina" @@ -664,35 +694,35 @@ msgstr "pot ser gegant" msgid "Navigation" msgstr "Navegació" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "Cerca dins de %(docstitle)s" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "Quant a aquests documents" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "Copyright" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\\\"%(path)s\\\">Copyright</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Copyright %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Última actualització el %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -741,13 +771,13 @@ msgstr "cerca" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "Resultats de la Cerca" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -764,13 +794,13 @@ msgstr "Aquesta Pàgina" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "Canvis a la Versió %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -789,12 +819,13 @@ msgstr "Canvis a la API de C" msgid "Other changes" msgstr "Altres canvis" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "Link permanent a aquest títol" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "Link permanent a aquesta definició" @@ -810,12 +841,12 @@ msgstr "" msgid "Preparing search..." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr "" @@ -832,48 +863,53 @@ msgstr "" msgid "Contents" msgstr "" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "Versió" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "ve de la pàgina anterior" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "Continua a la pàgina següent" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[imatge]" diff --git a/sphinx/locale/cmn/LC_MESSAGES/sphinx.js b/sphinx/locale/cmn/LC_MESSAGES/sphinx.js new file mode 100644 index 000000000..dee432c18 --- /dev/null +++ b/sphinx/locale/cmn/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "zh_Hans_CN", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "", "Automatically generated list of changes in version %(version)s": "", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "", "Contents": "", "Copyright": "", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand 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.": "", "Full index on one page": "", "General Index": "", "Global Module Index": "", "Go": "", "Hide Search Matches": "", "Index": "", "Index – %(key)s": "", "Index pages by letter": "", "Indices and tables:": "", "Last updated on %(last_updated)s.": "", "Library changes": "", "Navigation": "", "Next topic": "", "Other changes": "", "Overview": "", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "", "Previous topic": "", "Quick search": "", "Search": "", "Search Page": "", "Search Results": "", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "", "Show Source": "", "Table Of Contents": "", "This Page": "", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "", "can be huge": "", "last updated": "", "lists all sections and subsections": "", "next chapter": "", "previous chapter": "", "quick access to all modules": "", "search": "", "search this documentation": "", "the documentation for": ""}, "plural_expr": "0"}); \ No newline at end of file diff --git a/sphinx/locale/cmn/LC_MESSAGES/sphinx.mo b/sphinx/locale/cmn/LC_MESSAGES/sphinx.mo new file mode 100644 index 0000000000000000000000000000000000000000..8986a35c20bfdcc995da00b1ee034fa8712536b8 GIT binary patch literal 11140 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 a5wZTVVf|$TFZ0%4Hgx|}^Z)g-;eP=N^^pAl literal 0 HcmV?d00001 diff --git a/sphinx/locale/cmn/LC_MESSAGES/sphinx.po b/sphinx/locale/cmn/LC_MESSAGES/sphinx.po new file mode 100644 index 000000000..e5a646df1 --- /dev/null +++ b/sphinx/locale/cmn/LC_MESSAGES/sphinx.po @@ -0,0 +1,914 @@ +# Translations template for Sphinx. +# Copyright (C) 2016 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Chinese (Mandarin) (http://www.transifex.com/sphinx-doc/sphinx-1/language/cmn/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.3.4\n" +"Language: cmn\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:111 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:112 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/roles.py:187 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "" + +#: sphinx/builders/changes.py:75 +msgid "Builtins" +msgstr "" + +#: sphinx/builders/changes.py:77 +msgid "Module level" +msgstr "" + +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" +msgstr "" + +#: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 +msgid "General Index" +msgstr "" + +#: sphinx/builders/html.py:315 +msgid "index" +msgstr "" + +#: sphinx/builders/html.py:377 +msgid "next" +msgstr "" + +#: sphinx/builders/html.py:386 +msgid "previous" +msgstr "" + +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 +msgid " (in " +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/other.py:149 +msgid "Section author: " +msgstr "" + +#: sphinx/directives/other.py:151 +msgid "Module author: " +msgstr "" + +#: sphinx/directives/other.py:153 +msgid "Code author: " +msgstr "" + +#: sphinx/directives/other.py:155 +msgid "Author: " +msgstr "" + +#: sphinx/domains/__init__.py:277 +#, python-format +msgid "%s %s" +msgstr "" + +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 +msgid "Parameters" +msgstr "" + +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 +msgid "Returns" +msgstr "" + +#: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 +#: sphinx/domains/python.py:163 +msgid "Return type" +msgstr "" + +#: sphinx/domains/c.py:177 +#, python-format +msgid "%s (C function)" +msgstr "" + +#: sphinx/domains/c.py:179 +#, python-format +msgid "%s (C member)" +msgstr "" + +#: sphinx/domains/c.py:181 +#, python-format +msgid "%s (C macro)" +msgstr "" + +#: sphinx/domains/c.py:183 +#, python-format +msgid "%s (C type)" +msgstr "" + +#: sphinx/domains/c.py:185 +#, python-format +msgid "%s (C variable)" +msgstr "" + +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 +msgid "function" +msgstr "" + +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 +msgid "member" +msgstr "" + +#: sphinx/domains/c.py:244 +msgid "macro" +msgstr "" + +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 +msgid "type" +msgstr "" + +#: sphinx/domains/c.py:246 +msgid "variable" +msgstr "" + +#: sphinx/domains/cpp.py:4054 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 +msgid "Throws" +msgstr "" + +#: sphinx/domains/cpp.py:4205 +#, python-format +msgid "%s (C++ type)" +msgstr "" + +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 +#, python-format +msgid "%s (C++ member)" +msgstr "" + +#: sphinx/domains/cpp.py:4238 +#, python-format +msgid "%s (C++ function)" +msgstr "" + +#: sphinx/domains/cpp.py:4249 +#, python-format +msgid "%s (C++ class)" +msgstr "" + +#: sphinx/domains/cpp.py:4260 +#, python-format +msgid "%s (C++ enum)" +msgstr "" + +#: sphinx/domains/cpp.py:4281 +#, python-format +msgid "%s (C++ enumerator)" +msgstr "" + +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 +msgid "class" +msgstr "" + +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:4423 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 +#, python-format +msgid "%s() (built-in function)" +msgstr "" + +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 +#, python-format +msgid "%s() (%s method)" +msgstr "" + +#: sphinx/domains/javascript.py:109 +#, python-format +msgid "%s() (class)" +msgstr "" + +#: sphinx/domains/javascript.py:111 +#, python-format +msgid "%s (global variable or constant)" +msgstr "" + +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 +#, python-format +msgid "%s (%s attribute)" +msgstr "" + +#: sphinx/domains/javascript.py:122 +msgid "Arguments" +msgstr "" + +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 +msgid "data" +msgstr "" + +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 +msgid "attribute" +msgstr "" + +#: sphinx/domains/python.py:154 +msgid "Variables" +msgstr "" + +#: sphinx/domains/python.py:158 +msgid "Raises" +msgstr "" + +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 +#, python-format +msgid "%s() (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:311 +#, python-format +msgid "%s (built-in variable)" +msgstr "" + +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 +#, python-format +msgid "%s (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:328 +#, python-format +msgid "%s (built-in class)" +msgstr "" + +#: sphinx/domains/python.py:329 +#, python-format +msgid "%s (class in %s)" +msgstr "" + +#: sphinx/domains/python.py:369 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "" + +#: sphinx/domains/python.py:381 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "" + +#: sphinx/domains/python.py:384 +#, python-format +msgid "%s() (%s static method)" +msgstr "" + +#: sphinx/domains/python.py:394 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "" + +#: sphinx/domains/python.py:397 +#, python-format +msgid "%s() (%s class method)" +msgstr "" + +#: sphinx/domains/python.py:407 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "" + +#: sphinx/domains/python.py:488 +#, python-format +msgid "%s (module)" +msgstr "" + +#: sphinx/domains/python.py:545 +msgid "Python Module Index" +msgstr "" + +#: sphinx/domains/python.py:546 +msgid "modules" +msgstr "" + +#: sphinx/domains/python.py:592 +msgid "Deprecated" +msgstr "" + +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 +msgid "exception" +msgstr "" + +#: sphinx/domains/python.py:618 +msgid "method" +msgstr "" + +#: sphinx/domains/python.py:619 +msgid "class method" +msgstr "" + +#: sphinx/domains/python.py:620 +msgid "static method" +msgstr "" + +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 +msgid "module" +msgstr "" + +#: sphinx/domains/python.py:787 +msgid " (deprecated)" +msgstr "" + +#: sphinx/domains/rst.py:55 +#, python-format +msgid "%s (directive)" +msgstr "" + +#: sphinx/domains/rst.py:57 +#, python-format +msgid "%s (role)" +msgstr "" + +#: sphinx/domains/rst.py:106 +msgid "directive" +msgstr "" + +#: sphinx/domains/rst.py:107 +msgid "role" +msgstr "" + +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 +#, python-format +msgid "environment variable; %s" +msgstr "" + +#: sphinx/domains/std.py:186 +#, python-format +msgid "%scommand line option; %s" +msgstr "" + +#: sphinx/domains/std.py:434 +msgid "glossary term" +msgstr "" + +#: sphinx/domains/std.py:435 +msgid "grammar token" +msgstr "" + +#: sphinx/domains/std.py:436 +msgid "reference label" +msgstr "" + +#: sphinx/domains/std.py:438 +msgid "environment variable" +msgstr "" + +#: sphinx/domains/std.py:439 +msgid "program option" +msgstr "" + +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 +#: sphinx/themes/basic/genindex-split.html:11 +#: sphinx/themes/basic/genindex-split.html:14 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 +msgid "Index" +msgstr "" + +#: sphinx/domains/std.py:474 +msgid "Module Index" +msgstr "" + +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 +msgid "Search Page" +msgstr "" + +#: sphinx/environment/managers/indexentries.py:104 +#, python-format +msgid "see %s" +msgstr "" + +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 +#, python-format +msgid "alias of :class:`%s`" +msgstr "" + +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 +msgid "[source]" +msgstr "" + +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/ext/todo.py:56 +msgid "Todo" +msgstr "" + +#: sphinx/ext/todo.py:134 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:137 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:146 +msgid "original entry" +msgstr "" + +#: sphinx/ext/viewcode.py:166 +msgid "[docs]" +msgstr "" + +#: sphinx/ext/viewcode.py:180 +msgid "Module code" +msgstr "" + +#: sphinx/ext/viewcode.py:186 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "" + +#: sphinx/ext/viewcode.py:212 +msgid "Overview: module code" +msgstr "" + +#: sphinx/ext/viewcode.py:213 +msgid "<h1>All modules for which code is available</h1>" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/locale/__init__.py:159 +msgid "Attention" +msgstr "" + +#: sphinx/locale/__init__.py:160 +msgid "Caution" +msgstr "" + +#: sphinx/locale/__init__.py:161 +msgid "Danger" +msgstr "" + +#: sphinx/locale/__init__.py:162 +msgid "Error" +msgstr "" + +#: sphinx/locale/__init__.py:163 +msgid "Hint" +msgstr "" + +#: sphinx/locale/__init__.py:164 +msgid "Important" +msgstr "" + +#: sphinx/locale/__init__.py:165 +msgid "Note" +msgstr "" + +#: sphinx/locale/__init__.py:166 +msgid "See also" +msgstr "" + +#: sphinx/locale/__init__.py:167 +msgid "Tip" +msgstr "" + +#: sphinx/locale/__init__.py:168 +msgid "Warning" +msgstr "" + +#: sphinx/locale/__init__.py:172 +#, python-format +msgid "New in version %s" +msgstr "" + +#: sphinx/locale/__init__.py:173 +#, python-format +msgid "Changed in version %s" +msgstr "" + +#: sphinx/locale/__init__.py:174 +#, python-format +msgid "Deprecated since version %s" +msgstr "" + +#: sphinx/locale/__init__.py:180 +msgid "keyword" +msgstr "" + +#: sphinx/locale/__init__.py:181 +msgid "operator" +msgstr "" + +#: sphinx/locale/__init__.py:182 +msgid "object" +msgstr "" + +#: sphinx/locale/__init__.py:184 +msgid "statement" +msgstr "" + +#: sphinx/locale/__init__.py:185 +msgid "built-in function" +msgstr "" + +#: sphinx/themes/agogo/layout.html:46 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:11 sphinx/themes/scrolls/layout.html:35 +msgid "Table Of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 +#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 +#: sphinx/themes/basic/searchresults.html:10 +msgid "Search" +msgstr "" + +#: sphinx/themes/agogo/layout.html:54 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "" + +#: sphinx/themes/agogo/layout.html:81 sphinx/themes/basic/sourcelink.html:15 +msgid "Show Source" +msgstr "" + +#: sphinx/themes/basic/defindex.html:11 +msgid "Overview" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:17 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:20 +msgid "Indices and tables:" +msgstr "" + +#: sphinx/themes/basic/defindex.html:23 +msgid "Complete Table of Contents" +msgstr "" + +#: sphinx/themes/basic/defindex.html:24 +msgid "lists all sections and subsections" +msgstr "" + +#: sphinx/themes/basic/defindex.html:26 +msgid "search this documentation" +msgstr "" + +#: sphinx/themes/basic/defindex.html:28 +msgid "Global Module Index" +msgstr "" + +#: sphinx/themes/basic/defindex.html:29 +msgid "quick access to all modules" +msgstr "" + +#: sphinx/themes/basic/defindex.html:31 +msgid "all functions, classes, terms" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:33 +#, python-format +msgid "Index – %(key)s" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:61 +#: sphinx/themes/basic/genindex-split.html:24 +#: sphinx/themes/basic/genindex-split.html:38 +#: sphinx/themes/basic/genindex.html:72 +msgid "Full index on one page" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:16 +msgid "Index pages by letter" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:25 +msgid "can be huge" +msgstr "" + +#: sphinx/themes/basic/layout.html:29 +msgid "Navigation" +msgstr "" + +#: sphinx/themes/basic/layout.html:123 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/layout.html:132 +msgid "About these documents" +msgstr "" + +#: sphinx/themes/basic/layout.html:141 +msgid "Copyright" +msgstr "" + +#: sphinx/themes/basic/layout.html:186 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:188 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:192 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:195 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "" + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/relations.html:11 +msgid "Previous topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:13 +msgid "previous chapter" +msgstr "" + +#: sphinx/themes/basic/relations.html:16 +msgid "Next topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:18 +msgid "next chapter" +msgstr "" + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "" +"From here you can search these documents. Enter your search\n" +" words into the box below and click \"search\". Note that the search\n" +" function will automatically search for all of the words. Pages\n" +" containing fewer words won't appear in the result list." +msgstr "" + +#: sphinx/themes/basic/search.html:39 +#: sphinx/themes/basic/searchresults.html:17 +msgid "search" +msgstr "" + +#: sphinx/themes/basic/search.html:43 +#: sphinx/themes/basic/searchresults.html:21 +#: sphinx/themes/basic/static/searchtools.js_t:287 +msgid "Search Results" +msgstr "" + +#: sphinx/themes/basic/search.html:45 +#: sphinx/themes/basic/searchresults.html:23 +#: sphinx/themes/basic/static/searchtools.js_t:289 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:12 +msgid "Quick search" +msgstr "" + +#: sphinx/themes/basic/sourcelink.html:12 +msgid "This Page" +msgstr "" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 +msgid "Permalink to this headline" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 +msgid "Permalink to this definition" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js_t:208 +msgid "Hide Search Matches" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js_t:121 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js_t:126 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js_t:291 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js_t:344 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "" + +#: sphinx/themes/haiku/layout.html:24 +msgid "Contents" +msgstr "" + +#: sphinx/writers/html.py:389 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:393 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:395 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:717 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/latex.py:380 +msgid "Release" +msgstr "" + +#: sphinx/writers/latex.py:483 +msgid "page" +msgstr "" + +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 +msgid "Footnotes" +msgstr "" + +#: sphinx/writers/latex.py:1112 +msgid "continued from previous page" +msgstr "" + +#: sphinx/writers/latex.py:1118 +msgid "Continued on next page" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 +#, python-format +msgid "[image: %s]" +msgstr "" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 +msgid "[image]" +msgstr "" diff --git a/sphinx/locale/cs/LC_MESSAGES/sphinx.js b/sphinx/locale/cs/LC_MESSAGES/sphinx.js index c2e3ea2ec..3689e78dc 100644 --- a/sphinx/locale/cs/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/cs/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "cs", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", v ", "About these documents": "O t\u011bchto dokumentech", "Automatically generated list of changes in version %(version)s": "Automaticky generovan\u00fd seznam zm\u011bn ve verzi %(version)s", "C API changes": "Zm\u011bny API", "Changes in Version %(version)s — %(docstitle)s": "Zm\u011bny ve verzi %(version)s — %(docstitle)s", "Collapse sidebar": "Sbalit bo\u010dn\u00ed li\u0161tu", "Complete Table of Contents": "Celkov\u00fd obsah", "Contents": "Obsah", "Copyright": "Ve\u0161ker\u00e1 pr\u00e1va vyhrazena", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Vytvo\u0159eno pomoc\u00ed <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Rozbalit bo\u010dn\u00ed li\u0161tu", "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.": "Toto je vyhled\u00e1vac\u00ed str\u00e1nka. Zadejte kl\u00ed\u010dov\u00e1 slova a klikn\u011bte na \"hledat\". \nVyhled\u00e1v\u00e1n\u00ed automaticky hled\u00e1 v\u0161echna slova, nebudou tedy nalezeny str\u00e1nky obsahuj\u00edc\u00ed jen n\u011bkter\u00e9 z nich.", "Full index on one page": "Cel\u00fd rejst\u0159\u00edk na jedn\u00e9 str\u00e1nce", "General Index": "Obecn\u00fd rejst\u0159\u00edk", "Global Module Index": "Celkov\u00fd rejst\u0159\u00edk modul\u016f", "Go": "OK", "Hide Search Matches": "Skr\u00fdt v\u00fdsledky vyhled\u00e1v\u00e1n\u00ed", "Index": "Rejst\u0159\u00edk", "Index – %(key)s": "Rejst\u0159\u00edk – %(key)s", "Index pages by letter": "Rejst\u0159\u00edk podle p\u00edsmene", "Indices and tables:": "Rejst\u0159\u00edky a tabulky:", "Last updated on %(last_updated)s.": "Aktualizov\u00e1no dne %(last_updated)s.", "Library changes": "Zm\u011bny v knihovn\u00e1ch", "Navigation": "Navigace", "Next topic": "Dal\u0161\u00ed t\u00e9ma", "Other changes": "Ostatn\u00ed zm\u011bny", "Overview": "P\u0159ehled", "Permalink to this definition": "Trval\u00fd odkaz na tuto definici", "Permalink to this headline": "Trval\u00fd odkaz na tento nadpis", "Please activate JavaScript to enable the search\n functionality.": "Pro podporu vyhled\u00e1v\u00e1n\u00ed aktivujte JavaScript.", "Preparing search...": "Vyhled\u00e1v\u00e1n\u00ed se p\u0159ipravuje...", "Previous topic": "P\u0159echoz\u00ed t\u00e9ma", "Quick search": "Rychl\u00e9 vyhled\u00e1v\u00e1n\u00ed", "Search": "Vyhled\u00e1v\u00e1n\u00ed", "Search Page": "Vyhled\u00e1vac\u00ed str\u00e1nka", "Search Results": "V\u00fdsledky vyhled\u00e1v\u00e1n\u00ed", "Search finished, found %s page(s) matching the search query.": "Vyhled\u00e1v\u00e1n\u00ed dokon\u010deno, str\u00e1nky odpov\u00eddaj\u00edc\u00ed hledan\u00e9mu v\u00fdrazu: %s.", "Search within %(docstitle)s": "Prohledat %(docstitle)s", "Searching": "Prob\u00edh\u00e1 vyhled\u00e1n\u00ed", "Show Source": "Uk\u00e1zat zdroj", "Table Of Contents": "Obsah", "This Page": "Tato str\u00e1nka", "Welcome! This is": "V\u00edtejte! Toto je", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Vyhled\u00e1v\u00e1n\u00ed nenalezlo \u017e\u00e1dn\u00fd odpov\u00eddaj\u00edc\u00ed dokument. Ujist\u011bte se, \u017ee jste v\u0161echna slova zapsal/a spr\u00e1vn\u011b a \u017ee jste vybral/a dostatek kategori\u00ed.", "all functions, classes, terms": "v\u0161echny funkce, t\u0159\u00eddy, term\u00edny", "can be huge": "m\u016f\u017ee b\u00fdt obrovsk\u00fd", "last updated": "naposledy aktualizov\u00e1no", "lists all sections and subsections": "seznam v\u0161ech sekc\u00ed a podsekc\u00ed", "next chapter": "dal\u0161\u00ed kapitola", "previous chapter": "p\u0159edchoz\u00ed kapitola", "quick access to all modules": "rychl\u00fd p\u0159\u00edstup ke v\u0161em modul\u016fm", "search": "hledat", "search this documentation": "prohledat tuto dokumentaci", "the documentation for": "dokumentace pro"}, "plural_expr": "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2"}); \ No newline at end of file +Documentation.addTranslations({"locale": "cs", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": ", v ", "About these documents": "O t\u011bchto dokumentech", "Automatically generated list of changes in version %(version)s": "Automaticky generovan\u00fd seznam zm\u011bn ve verzi %(version)s", "C API changes": "Zm\u011bny API", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "Sbalit bo\u010dn\u00ed li\u0161tu", "Complete Table of Contents": "Celkov\u00fd obsah", "Contents": "Obsah", "Copyright": "Ve\u0161ker\u00e1 pr\u00e1va vyhrazena", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Vytvo\u0159eno pomoc\u00ed <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Rozbalit bo\u010dn\u00ed li\u0161tu", "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.": "Toto je vyhled\u00e1vac\u00ed str\u00e1nka. Zadejte kl\u00ed\u010dov\u00e1 slova a klikn\u011bte na \"hledat\". \nVyhled\u00e1v\u00e1n\u00ed automaticky hled\u00e1 v\u0161echna slova, nebudou tedy nalezeny str\u00e1nky obsahuj\u00edc\u00ed jen n\u011bkter\u00e9 z nich.", "Full index on one page": "Cel\u00fd rejst\u0159\u00edk na jedn\u00e9 str\u00e1nce", "General Index": "Obecn\u00fd rejst\u0159\u00edk", "Global Module Index": "Celkov\u00fd rejst\u0159\u00edk modul\u016f", "Go": "OK", "Hide Search Matches": "Skr\u00fdt v\u00fdsledky vyhled\u00e1v\u00e1n\u00ed", "Index": "Rejst\u0159\u00edk", "Index – %(key)s": "Rejst\u0159\u00edk – %(key)s", "Index pages by letter": "Rejst\u0159\u00edk podle p\u00edsmene", "Indices and tables:": "Rejst\u0159\u00edky a tabulky:", "Last updated on %(last_updated)s.": "Aktualizov\u00e1no dne %(last_updated)s.", "Library changes": "Zm\u011bny v knihovn\u00e1ch", "Navigation": "Navigace", "Next topic": "Dal\u0161\u00ed t\u00e9ma", "Other changes": "Ostatn\u00ed zm\u011bny", "Overview": "P\u0159ehled", "Permalink to this definition": "Trval\u00fd odkaz na tuto definici", "Permalink to this headline": "Trval\u00fd odkaz na tento nadpis", "Please activate JavaScript to enable the search\n functionality.": "Pro podporu vyhled\u00e1v\u00e1n\u00ed aktivujte JavaScript.", "Preparing search...": "Vyhled\u00e1v\u00e1n\u00ed se p\u0159ipravuje...", "Previous topic": "P\u0159echoz\u00ed t\u00e9ma", "Quick search": "Rychl\u00e9 vyhled\u00e1v\u00e1n\u00ed", "Search": "Vyhled\u00e1v\u00e1n\u00ed", "Search Page": "Vyhled\u00e1vac\u00ed str\u00e1nka", "Search Results": "V\u00fdsledky vyhled\u00e1v\u00e1n\u00ed", "Search finished, found %s page(s) matching the search query.": "Vyhled\u00e1v\u00e1n\u00ed dokon\u010deno, str\u00e1nky odpov\u00eddaj\u00edc\u00ed hledan\u00e9mu v\u00fdrazu: %s.", "Search within %(docstitle)s": "Prohledat %(docstitle)s", "Searching": "Prob\u00edh\u00e1 vyhled\u00e1n\u00ed", "Show Source": "Uk\u00e1zat zdroj", "Table Of Contents": "Obsah", "This Page": "Tato str\u00e1nka", "Welcome! This is": "V\u00edtejte! Toto je", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Vyhled\u00e1v\u00e1n\u00ed nenalezlo \u017e\u00e1dn\u00fd odpov\u00eddaj\u00edc\u00ed dokument. Ujist\u011bte se, \u017ee jste v\u0161echna slova zapsal/a spr\u00e1vn\u011b a \u017ee jste vybral/a dostatek kategori\u00ed.", "all functions, classes, terms": "v\u0161echny funkce, t\u0159\u00eddy, term\u00edny", "can be huge": "m\u016f\u017ee b\u00fdt obrovsk\u00fd", "last updated": "naposledy aktualizov\u00e1no", "lists all sections and subsections": "seznam v\u0161ech sekc\u00ed a podsekc\u00ed", "next chapter": "dal\u0161\u00ed kapitola", "previous chapter": "p\u0159edchoz\u00ed kapitola", "quick access to all modules": "rychl\u00fd p\u0159\u00edstup ke v\u0161em modul\u016fm", "search": "hledat", "search this documentation": "prohledat tuto dokumentaci", "the documentation for": "dokumentace pro"}, "plural_expr": "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2"}); \ No newline at end of file diff --git a/sphinx/locale/cs/LC_MESSAGES/sphinx.mo b/sphinx/locale/cs/LC_MESSAGES/sphinx.mo index 67bf7add67c2e3e7727a4fbc45e874750a295530..027e9243a869981287e2bdd4490ad35cf6ea037b 100644 GIT binary patch delta 3922 zcmbW&eQ;FO8OQOnVMAUBAwnP_B;-O^$U>lb9}<~5Ap_G41Og`5NFCiIH(@7X7j|z% zI_lEeQ9)_3i|8=E(gCc>%gj0!Y|Eh1*eMFyS1BzrqC*?{Vy$(ombTwt_As64Kkb-V z_H)j;_nz}S&pCJbOV`=%#D&TJhYf!t{43?(%JJ&`=kLxuV<ytQ3p4QnoQ)4*4!&T= zPv8{#r|>#_8w+t1C*i-4kD0_|ny-|v3C1MMd>Xo;5%Y057GM|hG5vgLVh=U({iyr* zA|LZCU%Gw_r{U|U=P#k=`v@HzM@P@kK^8WRn8W&JDGfci67^s&7NLjJ@j=uA2e1TR z!eaadDx*Ky>z|?SpG0(x7{qeC4eM|lYT*}9l{|@)S>KG%sK#?R19ORDD$Yffc!_m6 zX4CJ$FJiYHf7FieLy|SmVHO@o&GRzW<FD-XJjy`Rlwd*`Euf)^m!m4N8ntjgw&Nz$ zu{eRb_#;%HZ=y2!1CqS?5Vf#xa{BokG(M__nzxWLD!>J(iZ)H5{uwmd?LY_m>Gz=m z2%{E=qcYiQ{TA{u`>n^3wapti3*SMCX?&bO1$-T9t4dMhLDW_>6;gj)SY~fri<;;b z+mE6G`YI~&1gcUyQ335iE$}=l!|$QqqBE$<Ua^knW}T^7)+W?hS(Bi#l*S+uv^k6_ z<tsP`-?HN$qXNxk6>UWks?;-4nas8QT6?`2S=+SO>+4YS_TUoSjM~D)VHzs+Pf(fs z9CbL}L1p>@YJtC_7R)3KjZZ{XY8oo=N*p_^r~sGaIBZ8%a1A!#I@Em+BJ(B89vWKk z3EY84P!lxsj%nc*)WYqy-(~wDR3KqgrZFtT`%nw)M+JBUHP6eav-Ae4l0U;Nz5f?! zXwQC!iZqjr(FD0zkA<l5HdKXHp%&~$9x)Nr{r8~)dI)t^_FA7oE&L)XksqJ}IEAzI z{=a2!_z0Exr&b>)Nd0WogOgB!6rm<4wbz5Fg{x6}+=ROCOLn{+RpE8^`T%P0Z^wjQ zhi}u+1N%@59z<d=hi(7Is1lw<WqKZ!;rqzBG=D`spTn#QBp)yE-WQ?n`<U|Tx}W{g z{~bA~d8*2&ze>}{fF@dk3TQ3rx1$F&!7wW0d#t-qTk$w*kDozh_>%QB>bc*b4(BLp z-hZMhls_{)U)fCRuRWa4fJ)Men($WCjhiuu+fWNUi(2^ms0>Ds<jtG*`W4&%2eOta zDo+Q{fa<rQDm#Fh|7!^v%5)d1G~dBS96>(jDqnS2=A;*1gDT}$P|t<13O!^^^E9fG zCs6_Z(s~hfhDNaoKSW(mRPlSMi5gLvwV_JgiJB;cdJDGL@#pRMaa0CpQCoNc74Ung ziulQ9EtaFsP7F2w-N;Xg*^WGyFi+9ol{W`a5uQN3UL!by=dl9!@ufgVP+N5lGw^Sy zg+D=6rg%<z!7|i>K~zBXsM4=S1rSF4|6{h%(4Ox`KIQ;l3g9%VL>EyDkD@ZZipnT2 zkUmt!s8e5wnx_VJ_*zlVuR$HY^{D#>QI+*{o%PKQ8ajl#QG0j@74hq+LvtCGapv4~ z2D7Z!V>RPl=-|DmLwXR2(Huj~^IKHLpWxW<$h>qQMVL_O9U9|tF)G6wP~)pm5B8%1 zybD+09((;=R3@LIN?lNy&U^+c^Puh5VHW)s96Mu}Nx!p_`s@9?+1?njH{OZk82<+P z@qTQ;ou~<3wVpwh{2V@xS5T$j9!%f&2r99CsKmZ&$B&@`dNoM>btq0Vz&SJT+Y8zA z(|cZk%CG|UKohFOEw;ZFId|q}RG@cb4&H-$Yj)c4S1_0UYp9C;6ty+KPteGw;a`xB zbRw!Eg{VVQiF$A`YT;JYR&=6+8&ReFrgb+e<Gr^3wCx{6C2$xu&x>|E@fr<9d<Ip@ zw^5ml;spFN>TUQ8Rl)*(ZIp32>Ws9a?q82u_%>8#1GfKl%%i^@mFON+08b(bPBlkq zXs=JAGChUK>3J11D;C$*)L!odD*K|naWCu*xxu&z^f-aODkspL?8tj6t2Y|ybvJp* zL#1CxO`Z6N&tFl~*pxh)UpLlBUCyufWrgByyx9pPiwkbb9Gf!b75p$G&=$EpG!*W0 zdPAGMa5TalakIkRx+NOxb6R2p!yDa*7f)7Cxgoh@%0<7sc{r51vGBYvBM?sprrpud z6&Z{~w?rHw=noGJ$6RO7-P-I7g*^9;Tiqdd?D6%1*ey;t?t}*-(U{w}DD~L1FZ=vs z5r0s$u)c42(@?mVCwQ#K9de@mj@D5)L{sHNy$x>62}j~yh%{+1nkp@xmocHHW?^-s zQ(N0yU!7c4Qr4XA*VHvP)GesyFLz}q?k(($g(7hxipH9q&d{J6-w<|ItZr}XZgG}` z7kPuxjp41SLnV&SU$>|}H+gBs?Eh8s>7`Fxt9j~B=^y{A-pR}P9mzoXud|n4tNGRP z*5v8}$JV{adGG(N`?88<$^8}YmUOtWjcik7(D9;<w}Dz-t5E9RIrB4eZ*+TYxspfb b#y{t-%$m2$cP*{t(aQSIw=tJ0^E3VpG)V$w delta 3524 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 diff --git a/sphinx/locale/cs/LC_MESSAGES/sphinx.po b/sphinx/locale/cs/LC_MESSAGES/sphinx.po index ee322c991..1efe6f2d8 100644 --- a/sphinx/locale/cs/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/cs/LC_MESSAGES/sphinx.po @@ -9,61 +9,42 @@ msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Czech (http://www.transifex.com/sphinx-doc/sphinx-1/language/cs/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: cs\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "Obr. %s" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "Tabulka %s" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "Výpis %s" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "Dokumentace pro %s %s" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "viz %s" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "viz také %s" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "Symboly" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python Enhancement Proposals; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "Vestavěné funkce" @@ -72,8 +53,11 @@ msgstr "Vestavěné funkce" msgid "Module level" msgstr "Úroveň modulu" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -84,18 +68,28 @@ msgstr "Obecný rejstřík" msgid "index" msgstr "rejstřík" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "další" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "předchozí" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "Dokumentace pro %s %s" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr " (v " +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "Autor sekce: " @@ -112,23 +106,23 @@ msgstr "Autor kódu:" msgid "Author: " msgstr "Autor: " -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Parametry" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "Vrací" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "Typ návratové hodnoty" @@ -157,12 +151,12 @@ msgstr "%s (C typ)" msgid "%s (C variable)" msgstr "%s (C proměnná)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "funkce" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "člen" @@ -170,7 +164,7 @@ msgstr "člen" msgid "macro" msgstr "makro" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "typ" @@ -178,63 +172,72 @@ msgstr "typ" msgid "variable" msgstr "proměnná" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "Vyvolá" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (C++ typ)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (C++ člen)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (C++ funkce)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (C++ třída)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "třída" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (vestavěná funkce)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (metoda %s)" @@ -249,7 +252,7 @@ msgstr "%s() (třída)" msgid "%s (global variable or constant)" msgstr "%s (globální proměnná nebo konstanta)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (atribut %s)" @@ -258,116 +261,116 @@ msgstr "%s (atribut %s)" msgid "Arguments" msgstr "Argumenty" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "data" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "atribut" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "Proměnné" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "Vyvolá" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (v modulu %s)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (vestavěná proměnná)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (v modulu %s)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (vestavěná třída)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (třída v %s)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (metoda %s.%s)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (statická metoda %s.%s)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (statická metoda %s)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "%s() (třídní metoda %s.%s)" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "%s() (třídní metoda %s)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (atribut %s.%s)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (modul)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "Rejstřík modulů Pythonu" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "moduly" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "Zastaralé" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "výjimka" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "metoda" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "třídní metoda" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "statická metoda" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "modul" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr " (zastaralé)" @@ -389,120 +392,147 @@ msgstr "direktiva" msgid "role" msgstr "role" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "proměnná prostředí; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%svolba příkazového řádku; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "termín v glosáři" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "token gramatiky" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "referenční návěstí" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "proměnná prostředí" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "volba programu" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "Rejstřík" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "Rejstřík modulů" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "Vyhledávací stránka" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" -msgstr " Nadtřídy: %s" +msgid "see %s" +msgstr "viz %s" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "viz také %s" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "Symboly" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "alias třídy :class:`%s`" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "[graf: %s]" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "[graf]" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "(v %s v%s)" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[zdroj]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "Todo" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "původní záznam" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[dokumentace]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "Kód modulu" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "<h1>Zdrojový kód pro %s</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "Přehled: kód modulu" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "<h1>Všechny moduly s dostupným kódem</h1>" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "Výstraha" @@ -583,7 +613,7 @@ msgstr "vestavěná funkce" msgid "Table Of Contents" msgstr "Obsah" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -641,15 +671,15 @@ msgstr "rychlý přístup ke všem modulům" msgid "all functions, classes, terms" msgstr "všechny funkce, třídy, termíny" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Rejstřík – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "Celý rejstřík na jedné stránce" @@ -665,35 +695,35 @@ msgstr "může být obrovský" msgid "Navigation" msgstr "Navigace" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "Prohledat %(docstitle)s" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "O těchto dokumentech" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "Veškerá práva vyhrazena" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Copyright %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Aktualizováno dne %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -742,13 +772,13 @@ msgstr "hledat" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "Výsledky vyhledávání" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -765,13 +795,13 @@ msgstr "Tato stránka" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "Změny ve verzi %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -790,12 +820,13 @@ msgstr "Změny API" msgid "Other changes" msgstr "Ostatní změny" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "Trvalý odkaz na tento nadpis" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "Trvalý odkaz na tuto definici" @@ -811,12 +842,12 @@ msgstr "Probíhá vyhledání" msgid "Preparing search..." msgstr "Vyhledávání se připravuje..." -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "Vyhledávání dokončeno, stránky odpovídající hledanému výrazu: %s." -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr ", v " @@ -833,48 +864,53 @@ msgstr "Sbalit boční lištu" msgid "Contents" msgstr "Obsah" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "Permalink k tomuto kódu" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "Permalink k tomuto obrázku" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "Permalink k této tabulce" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "Vydání" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "Poznámky pod čarou" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "pokračujte na předchozí stránce" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "Pokračujte na další stránce" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "[obrázek: %s]" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[obrázek]" diff --git a/sphinx/locale/cy/LC_MESSAGES/sphinx.js b/sphinx/locale/cy/LC_MESSAGES/sphinx.js index 334620e94..de417a299 100644 --- a/sphinx/locale/cy/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/cy/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "cy", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Hawlfraint</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Hawlfraint %(copyright)s.", ", in ": ", yn ", "About these documents": "Yngl\u0177n \u00e2'r dogfennau hyn", "Automatically generated list of changes in version %(version)s": "Rhestr o newidiadau yn fersiwn %(version)s wedi'i cynhyrchu'n awtomatig", "C API changes": "Newidiadau i'r C-API", "Changes in Version %(version)s — %(docstitle)s": "Newidiadau yn Fersiwn %(version)s — %(docstitle)s", "Collapse sidebar": "Cyfangu'r bar ochr", "Complete Table of Contents": "Tabl Cynnwys Llawn", "Contents": "Cynnwys", "Copyright": "Hawlfraint", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Cr\u8c37wyd gan ddefnyddio <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s", "Expand sidebar": "Ehangu'r bar ochr", "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.": "O'r fan hon gallwch chwilio'r dogfennau hyn. Rhowch eich geiriau chwilio yn y blwch isod a chliciwch \"chwilio\". Nodwch fod y ffwythiant chwilio yn chwilio am bob un o'r geiriau yn awtomatig. Ni fydd dudalennau sy'n cynnwys llai o eiriau yn ymddangos yn y rhestr canlyniadau.", "Full index on one page": "Indecs llawn ar un tudalen", "General Index": "Indecs cyffredinol", "Global Module Index": "Indecs Modiwl Byd-Eang", "Go": "Ewch", "Hide Search Matches": "Cuddio Canlyniadau Chwilio", "Index": "Indecs", "Index – %(key)s": "Indecs – %(key)s", "Index pages by letter": "Indecs tudalennau gan lythyren", "Indices and tables:": "Indecsau a tablau:", "Last updated on %(last_updated)s.": "Diweddarwyd yn ddiwethaf ar %(last_updated)s.", "Library changes": "Newidiadau i'r llyfrgell", "Navigation": "Llywio", "Next topic": "Pwnc nesaf", "Other changes": "Newidiadau arall", "Overview": "Trosolwg", "Permalink to this definition": "Permalink i'r diffiniad hwn", "Permalink to this headline": "Permalink i'r pennawd hwn", "Please activate JavaScript to enable the search\n functionality.": "Trwoch JavaScript ymlaen i alluogi'r chwilio.", "Preparing search...": "Paratoi chwilio...", "Previous topic": "Pwnc blaenorol", "Quick search": "Chwilio cyflym", "Search": "Chwilio", "Search Page": "Tudalen Chwilio", "Search Results": "Canlyniadau chwilio", "Search finished, found %s page(s) matching the search query.": "Chwiliad wedi gorffen, wedi ffeindio %s tudalen(nau) yn cyfateb a'r ymholiad chwilio.", "Search within %(docstitle)s": "Chwilio o fewn %(docstitle)s", "Searching": "Yn chwilio", "Show Source": "Dangos Ffynhonell", "Table Of Contents": "Tabl Cynnwys", "This Page": "Y Dudalen Hon", "Welcome! This is": "Croeso! Dyma", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Nid yw eich chwiliad yn cyfateb unrhyw ddogfennau. Gwnewch yn si\u0175r fod pob gair wedi'i sillafu'n gywir, ac eich bod wedi dewis digon o gategor\u00efau.", "all functions, classes, terms": "holl ffwythiannau, dosbarthau a thermau", "can be huge": "gall fod yn enfawr", "last updated": "diweddarwyd yn ddiwethaf", "lists all sections and subsections": "rhestru holl adrannau ac isadrannau", "next chapter": "pennod nesaf", "previous chapter": "pennod blaenorol", "quick access to all modules": "mynediad cloi i bob modiwl", "search": "chwilio", "search this documentation": "chwiliwch y ddogfennaeth", "the documentation for": "y dogfennaeth am"}, "plural_expr": "(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3"}); \ No newline at end of file +Documentation.addTranslations({"locale": "cy", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": ", yn ", "About these documents": "Yngl\u0177n \u00e2'r dogfennau hyn", "Automatically generated list of changes in version %(version)s": "Rhestr o newidiadau yn fersiwn %(version)s wedi'i cynhyrchu'n awtomatig", "C API changes": "Newidiadau i'r C-API", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "Cyfangu'r bar ochr", "Complete Table of Contents": "Tabl Cynnwys Llawn", "Contents": "Cynnwys", "Copyright": "Hawlfraint", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Cr\u8c37wyd gan ddefnyddio <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s", "Expand sidebar": "Ehangu'r bar ochr", "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.": "O'r fan hon gallwch chwilio'r dogfennau hyn. Rhowch eich geiriau chwilio yn y blwch isod a chliciwch \"chwilio\". Nodwch fod y ffwythiant chwilio yn chwilio am bob un o'r geiriau yn awtomatig. Ni fydd dudalennau sy'n cynnwys llai o eiriau yn ymddangos yn y rhestr canlyniadau.", "Full index on one page": "Indecs llawn ar un tudalen", "General Index": "Indecs cyffredinol", "Global Module Index": "Indecs Modiwl Byd-Eang", "Go": "Ewch", "Hide Search Matches": "Cuddio Canlyniadau Chwilio", "Index": "Indecs", "Index – %(key)s": "Indecs – %(key)s", "Index pages by letter": "Indecs tudalennau gan lythyren", "Indices and tables:": "Indecsau a tablau:", "Last updated on %(last_updated)s.": "Diweddarwyd yn ddiwethaf ar %(last_updated)s.", "Library changes": "Newidiadau i'r llyfrgell", "Navigation": "Llywio", "Next topic": "Pwnc nesaf", "Other changes": "Newidiadau arall", "Overview": "Trosolwg", "Permalink to this definition": "Permalink i'r diffiniad hwn", "Permalink to this headline": "Permalink i'r pennawd hwn", "Please activate JavaScript to enable the search\n functionality.": "Trwoch JavaScript ymlaen i alluogi'r chwilio.", "Preparing search...": "Paratoi chwilio...", "Previous topic": "Pwnc blaenorol", "Quick search": "Chwilio cyflym", "Search": "Chwilio", "Search Page": "Tudalen Chwilio", "Search Results": "Canlyniadau chwilio", "Search finished, found %s page(s) matching the search query.": "Chwiliad wedi gorffen, wedi ffeindio %s tudalen(nau) yn cyfateb a'r ymholiad chwilio.", "Search within %(docstitle)s": "Chwilio o fewn %(docstitle)s", "Searching": "Yn chwilio", "Show Source": "Dangos Ffynhonell", "Table Of Contents": "Tabl Cynnwys", "This Page": "Y Dudalen Hon", "Welcome! This is": "Croeso! Dyma", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Nid yw eich chwiliad yn cyfateb unrhyw ddogfennau. Gwnewch yn si\u0175r fod pob gair wedi'i sillafu'n gywir, ac eich bod wedi dewis digon o gategor\u00efau.", "all functions, classes, terms": "holl ffwythiannau, dosbarthau a thermau", "can be huge": "gall fod yn enfawr", "last updated": "diweddarwyd yn ddiwethaf", "lists all sections and subsections": "rhestru holl adrannau ac isadrannau", "next chapter": "pennod nesaf", "previous chapter": "pennod blaenorol", "quick access to all modules": "mynediad cloi i bob modiwl", "search": "chwilio", "search this documentation": "chwiliwch y ddogfennaeth", "the documentation for": "y dogfennaeth am"}, "plural_expr": "(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3"}); \ No newline at end of file diff --git a/sphinx/locale/cy/LC_MESSAGES/sphinx.mo b/sphinx/locale/cy/LC_MESSAGES/sphinx.mo index 6f88bd0abc9cd017608d654d239496b1f793568a..6fcda61b5c34db4d84c702392c20168b891b87bf 100644 GIT binary patch delta 3915 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 KBt2I5vG3nV7yJ1D delta 3586 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 diff --git a/sphinx/locale/cy/LC_MESSAGES/sphinx.po b/sphinx/locale/cy/LC_MESSAGES/sphinx.po index feebceb32..a959f209a 100644 --- a/sphinx/locale/cy/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/cy/LC_MESSAGES/sphinx.po @@ -9,61 +9,42 @@ msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Welsh (http://www.transifex.com/sphinx-doc/sphinx-1/language/cy/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: cy\n" "Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "Ffig. %s" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "Tabl %s" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "Listing %s" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "Dogfennaeth %s %s " - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "gweler %s" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "gweler hefyd %s" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "Symbolau" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python Enhancement Proposals; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "" @@ -72,8 +53,11 @@ msgstr "" msgid "Module level" msgstr "Lefel modiwl" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -84,18 +68,28 @@ msgstr "Indecs cyffredinol" msgid "index" msgstr "indecs" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "nesaf" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "blaenorol" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "Dogfennaeth %s %s " + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr " (yn " +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "Awdur yr adran:" @@ -112,23 +106,23 @@ msgstr "Awdur y cod:" msgid "Author: " msgstr "Awdur:" -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Paramedrau" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "" @@ -157,12 +151,12 @@ msgstr "" msgid "%s (C variable)" msgstr "" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "ffwythiant" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "aelod" @@ -170,7 +164,7 @@ msgstr "aelod" msgid "macro" msgstr "" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "" @@ -178,63 +172,72 @@ msgstr "" msgid "variable" msgstr "" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "" @@ -249,7 +252,7 @@ msgstr "" msgid "%s (global variable or constant)" msgstr "%s (newidyn byd-eang neu cysonyn)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "" @@ -258,116 +261,116 @@ msgstr "" msgid "Arguments" msgstr "" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "modiwl" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr "" @@ -389,120 +392,147 @@ msgstr "" msgid "role" msgstr "" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "Indecs" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "Indecs Modiwlau" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "Tudalen Chwilio" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" +msgid "see %s" +msgstr "gweler %s" + +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "gweler hefyd %s" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "Symbolau" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" msgstr "" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "[graff: %s]" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "[graff]" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "(yn %s v%s)" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[ffynhonnell]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "Todo" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "eitem wreiddiol" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[docs]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "Cod y modiwl" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "<h1>Cod ffynhonnell ar gyfer %s</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "Trosolwg: cod y modiwl" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "<h1>Holl fodiwlau lle mae'r cod ar gael</h1>" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "Sylw" @@ -583,7 +613,7 @@ msgstr "ffwythiant built-in" msgid "Table Of Contents" msgstr "Tabl Cynnwys" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -641,15 +671,15 @@ msgstr "mynediad cloi i bob modiwl" msgid "all functions, classes, terms" msgstr "holl ffwythiannau, dosbarthau a thermau" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Indecs – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "Indecs llawn ar un tudalen" @@ -665,35 +695,35 @@ msgstr "gall fod yn enfawr" msgid "Navigation" msgstr "Llywio" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "Chwilio o fewn %(docstitle)s" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "Ynglŷn â'r dogfennau hyn" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "Hawlfraint" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">Hawlfraint</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Hawlfraint %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Diweddarwyd yn ddiwethaf ar %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -742,13 +772,13 @@ msgstr "chwilio" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "Canlyniadau chwilio" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -765,13 +795,13 @@ msgstr "Y Dudalen Hon" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "Newidiadau yn Fersiwn %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -790,12 +820,13 @@ msgstr "Newidiadau i'r C-API" msgid "Other changes" msgstr "Newidiadau arall" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "Permalink i'r pennawd hwn" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "Permalink i'r diffiniad hwn" @@ -811,12 +842,12 @@ msgstr "Yn chwilio" msgid "Preparing search..." msgstr "Paratoi chwilio..." -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "Chwiliad wedi gorffen, wedi ffeindio %s tudalen(nau) yn cyfateb a'r ymholiad chwilio." -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr ", yn " @@ -833,48 +864,53 @@ msgstr "Cyfangu'r bar ochr" msgid "Contents" msgstr "Cynnwys" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "Permalink i'r cod hwn" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "Permalink i'r ddelwedd hon" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "Permalink i'r toctree hwn" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "Permalink i'r tabl hwn" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "Rhyddhad" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "Troednodiadau" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "wedi'i barhau o'r tudalen blaenorol" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "Yn parhau ar y tudalen nesaf" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "[delwedd: %s]" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[delwedd]" diff --git a/sphinx/locale/da/LC_MESSAGES/sphinx.js b/sphinx/locale/da/LC_MESSAGES/sphinx.js index 0fd225c60..5310acaad 100644 --- a/sphinx/locale/da/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/da/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "da", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Ophavsret</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Ophavsret %(copyright)s.", ", in ": ", i", "About these documents": "Om disse dokumenter", "Automatically generated list of changes in version %(version)s": "Automatisk oprettet liste af \u00e6ndringer i version %(version)s", "C API changes": "\u00c6ndringer i C-API", "Changes in Version %(version)s — %(docstitle)s": "\u00c6ndringer i version %(version)s — %(docstitle)s", "Collapse sidebar": "Sammenfold sidebj\u00e6lke", "Complete Table of Contents": "Fuldst\u00e6ndig indholdsfortegnelse", "Contents": "Indhold", "Copyright": "Ophavsret", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Bygget med <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Udfold sidebj\u00e6lke", "From here you can search these documents. Enter your search\n words into the box below and click \"search\". Note that the search\n function will automatically search for all of the words. Pages\n containing fewer words won't appear in the result list.": "Her fra kan du s\u00f8ge i disse dokumenter. Indtast dine s\u00f8geord\n i boksen nedenfor og klik p\u00e5 \"s\u00f8g\". Bem\u00e6rk at s\u00f8gefunktionen\n automatisk vil s\u00f8ge p\u00e5 alle ordene. Sider, der indeholder\n f\u00e6rre ord, vil ikke indg\u00e5 i resultaterne.", "Full index on one page": "Fuldt indeks p\u00e5 \u00e9n side", "General Index": "Generelt indeks", "Global Module Index": "Globalt modulindeks", "Go": "S\u00f8g", "Hide Search Matches": "Skjul s\u00f8geresultater", "Index": "Indeks", "Index – %(key)s": "Indeks – %(key)s", "Index pages by letter": "Indeks\u00e9r sider efter bogstav", "Indices and tables:": "Indeks og tabeller:", "Last updated on %(last_updated)s.": "Sidst opdateret %(last_updated)s.", "Library changes": "Biblioteks\u00e6ndringer", "Navigation": "Navigation", "Next topic": "N\u00e6ste emne", "Other changes": "Andre \u00e6ndringer", "Overview": "Oversigt", "Permalink to this definition": "Permalink til denne definition", "Permalink to this headline": "Permalink til denne overskrift", "Please activate JavaScript to enable the search\n functionality.": "Aktiv\u00e9r venligst JavaScript for at aktivere\n s\u00f8gefunktionalitet.", "Preparing search...": "Forbereder s\u00f8gning...", "Previous topic": "Forrige emne", "Quick search": "Hurtig s\u00f8gning", "Search": "S\u00f8g", "Search Page": "S\u00f8geside", "Search Results": "S\u00f8geresultater", "Search finished, found %s page(s) matching the search query.": "S\u00f8gning f\u00e6rdig, fandt %s sider der matcher s\u00f8geforesp\u00f8rgslen.", "Search within %(docstitle)s": "S\u00f8g i %(docstitle)s", "Searching": "S\u00f8ger", "Show Source": "Vis kilde", "Table Of Contents": "Indholdsfortegnelse", "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)"}); \ No newline at end of file +Documentation.addTranslations({"locale": "da", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": ", i", "About these documents": "Om disse dokumenter", "Automatically generated list of changes in version %(version)s": "Automatisk oprettet liste af \u00e6ndringer i version %(version)s", "C API changes": "\u00c6ndringer i C-API", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "Sammenfold sidebj\u00e6lke", "Complete Table of Contents": "Fuldst\u00e6ndig indholdsfortegnelse", "Contents": "Indhold", "Copyright": "Ophavsret", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Bygget med <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Udfold sidebj\u00e6lke", "From here you can search these documents. Enter your search\n words into the box below and click \"search\". Note that the search\n function will automatically search for all of the words. Pages\n containing fewer words won't appear in the result list.": "Her fra kan du s\u00f8ge i disse dokumenter. Indtast dine s\u00f8geord\n i boksen nedenfor og klik p\u00e5 \"s\u00f8g\". Bem\u00e6rk at s\u00f8gefunktionen\n automatisk vil s\u00f8ge p\u00e5 alle ordene. Sider, der indeholder\n f\u00e6rre ord, vil ikke indg\u00e5 i resultaterne.", "Full index on one page": "Fuldt indeks p\u00e5 \u00e9n side", "General Index": "Generelt indeks", "Global Module Index": "Globalt modulindeks", "Go": "S\u00f8g", "Hide Search Matches": "Skjul s\u00f8geresultater", "Index": "Indeks", "Index – %(key)s": "Indeks – %(key)s", "Index pages by letter": "Indeks\u00e9r sider efter bogstav", "Indices and tables:": "Indeks og tabeller:", "Last updated on %(last_updated)s.": "Sidst opdateret %(last_updated)s.", "Library changes": "Biblioteks\u00e6ndringer", "Navigation": "Navigation", "Next topic": "N\u00e6ste emne", "Other changes": "Andre \u00e6ndringer", "Overview": "Oversigt", "Permalink to this definition": "Permalink til denne definition", "Permalink to this headline": "Permalink til denne overskrift", "Please activate JavaScript to enable the search\n functionality.": "Aktiv\u00e9r venligst JavaScript for at aktivere\n s\u00f8gefunktionalitet.", "Preparing search...": "Forbereder s\u00f8gning...", "Previous topic": "Forrige emne", "Quick search": "Hurtig s\u00f8gning", "Search": "S\u00f8g", "Search Page": "S\u00f8geside", "Search Results": "S\u00f8geresultater", "Search finished, found %s page(s) matching the search query.": "S\u00f8gning f\u00e6rdig, fandt %s sider der matcher s\u00f8geforesp\u00f8rgslen.", "Search within %(docstitle)s": "S\u00f8g i %(docstitle)s", "Searching": "S\u00f8ger", "Show Source": "Vis kilde", "Table Of Contents": "Indholdsfortegnelse", "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)"}); \ No newline at end of file diff --git a/sphinx/locale/da/LC_MESSAGES/sphinx.mo b/sphinx/locale/da/LC_MESSAGES/sphinx.mo index 3667f7392d51a7adc71905865059bc67e1b35834..529a18c2f6bbdb40938a81c0d42e5df6ffe6084b 100644 GIT binary patch delta 4015 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 delta 3587 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 diff --git a/sphinx/locale/da/LC_MESSAGES/sphinx.po b/sphinx/locale/da/LC_MESSAGES/sphinx.po index 7c8dcaa08..c4c67fec0 100644 --- a/sphinx/locale/da/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/da/LC_MESSAGES/sphinx.po @@ -10,61 +10,42 @@ msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-13 09:55+0000\n" -"Last-Translator: Jakob Lykke Andersen <jakob@caput.dk>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Danish (http://www.transifex.com/sphinx-doc/sphinx-1/language/da/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "figur %s" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "tabel %s" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "Viser %s" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "%s %s dokumentation" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "se %s" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "se også %s" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "Symboler" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python Enhancement Proposals; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "Indbyggede" @@ -73,8 +54,11 @@ msgstr "Indbyggede" msgid "Module level" msgstr "Modulniveau" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -85,18 +69,28 @@ msgstr "Generelt indeks" msgid "index" msgstr "indeks" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "næste" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "forrige" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s dokumentation" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr " (i " +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "Afsnitsforfatter: " @@ -113,23 +107,23 @@ msgstr "Kodeforfatter: " msgid "Author: " msgstr "Forfatter: " -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Parametre" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "Returnerer" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "Returtype" @@ -158,12 +152,12 @@ msgstr "%s (C-type)" msgid "%s (C variable)" msgstr "%s (C-variabel)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "funktion" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "medlem" @@ -171,7 +165,7 @@ msgstr "medlem" msgid "macro" msgstr "makro" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "type" @@ -179,63 +173,72 @@ msgstr "type" msgid "variable" msgstr "variabel" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "Template-parametre" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "Kaster" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (C++-type)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (C++-medlem)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (C++-funktion)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (C++-klasse)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "%s (C++ optæl)" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "%s (C++-optælling)" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "klasse" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "optæl" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "optælling" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (indbygget funktion)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (metode i %s)" @@ -250,7 +253,7 @@ msgstr "%s() (klasse)" msgid "%s (global variable or constant)" msgstr "%s (global variabel eller konstant)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (attribut i %s)" @@ -259,116 +262,116 @@ msgstr "%s (attribut i %s)" msgid "Arguments" msgstr "Parametre" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "data" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "attribut" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "Variable" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "Rejser" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (i modulet %s)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (indbygget variabel)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (i modulet %s)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (indbygget klasse)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (klasse i %s)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (metode i %s.%s)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (statisk metode i %s.%s)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (statisk metode i %s)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "%s() (klassemetode i %s.%s)" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "%s() (klassemetode i %s)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (attribut i %s.%s)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (modul)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "Python-modulindeks" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "moduler" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "Forældet" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "undtagelse" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "metode" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "klassemetode" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "statisk metode" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "modul" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr " (forældet)" @@ -390,120 +393,147 @@ msgstr "direktiv" msgid "role" msgstr "rolle" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "miljøvariabel; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%skommandolinjetilvalg; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "begreb i ordliste" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "grammatisk element" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "referenceetiket" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "miljøvariabel" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "programtilvalg" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "Indeks" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "Modulindeks" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "Søgeside" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" -msgstr " Baser: %s" +msgid "see %s" +msgstr "se %s" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "se også %s" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "Symboler" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "alias for :class:`%s`" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "[graf: %s]" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "[graf]" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "(i %s v%s)" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[kilde]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "Todo" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" -msgstr "" +msgstr "<<oprindeligt punkt>>" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" -msgstr "" +msgstr "(Det <<oprindelige punkt>> befinder sig i %s, linje %d.)" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "oprindeligt punkt" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[dok]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "Modulkode" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "<h1>Kildekode for %s</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "Oversigt: modulkode" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "<h1>Alle moduler, der er kode tilgængelig for</h1>" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "Vær opmærksom" @@ -584,7 +614,7 @@ msgstr "indbygget funktion" msgid "Table Of Contents" msgstr "Indholdsfortegnelse" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -642,15 +672,15 @@ msgstr "hurtig adgang til alle moduler" msgid "all functions, classes, terms" msgstr "alle funktioner, klasser, begreber" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Indeks – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "Fuldt indeks på én side" @@ -666,35 +696,35 @@ msgstr "kan være enormt" msgid "Navigation" msgstr "Navigation" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "Søg i %(docstitle)s" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "Om disse dokumenter" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "Ophavsret" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">Ophavsret</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Ophavsret %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Sidst opdateret %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -743,13 +773,13 @@ msgstr "søg" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "Søgeresultater" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -766,13 +796,13 @@ msgstr "Denne side" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "Ændringer i version %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -791,12 +821,13 @@ msgstr "Ændringer i C-API" msgid "Other changes" msgstr "Andre ændringer" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "Permalink til denne overskrift" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "Permalink til denne definition" @@ -812,12 +843,12 @@ msgstr "Søger" msgid "Preparing search..." msgstr "Forbereder søgning..." -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "Søgning færdig, fandt %s sider der matcher søgeforespørgslen." -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr ", i" @@ -834,48 +865,53 @@ msgstr "Sammenfold sidebjælke" msgid "Contents" msgstr "Indhold" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "Permahenvisning til denne kode" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "Permahenvisning til dette billede" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "Permahenvisning til dette toctree" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "Permahenvisning til denne tabel" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "Udgave" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "side" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "Fodnoter" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "fortsat fra forrige side" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "Fortsættes på næste side" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "[billede: %s]" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[billede]" diff --git a/sphinx/locale/de/LC_MESSAGES/sphinx.js b/sphinx/locale/de/LC_MESSAGES/sphinx.js index 748aaf7d9..ddbeb95bc 100644 --- a/sphinx/locale/de/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/de/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "de", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", in ", "About these documents": "\u00dcber dieses Dokument", "Automatically generated list of changes in version %(version)s": "Automatisch generierte Liste der \u00c4nderungen in Version %(version)s", "C API changes": "C API-\u00c4nderungen", "Changes in Version %(version)s — %(docstitle)s": "\u00c4nderungen in Version %(version)s — %(docstitle)s", "Collapse sidebar": "Seitenleiste einklappen", "Complete Table of Contents": "Vollst\u00e4ndiges Inhaltsverzeichnis", "Contents": "Inhalt", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Mit <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s erstellt.", "Expand sidebar": "Seitenleiste ausklappen", "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.": "Von hier aus k\u00f6nnen Sie die Dokumentation durchsuchen. Geben Sie Ihre Suchbegriffe in das untenstehende Feld ein und klicken Sie auf \"Suchen\". Bitte beachten Sie, dass die Suchfunktion automatisch nach allen Worten sucht. Seiten, die nicht alle Worte enthalten, erscheinen nicht in der Ergebnisliste.", "Full index on one page": "Gesamtes Stichwortverzeichnis auf einer Seite", "General Index": "Stichwortverzeichnis", "Global Module Index": "Globaler Modulindex", "Go": "Los", "Hide Search Matches": "Suchergebnisse ausblenden", "Index": "Stichwortverzeichnis", "Index – %(key)s": "Stichwortverzeichnis – %(key)s", "Index pages by letter": "Stichwortverzeichnis nach Anfangsbuchstabe", "Indices and tables:": "Verzeichnisse und Tabellen:", "Last updated on %(last_updated)s.": "Zuletzt aktualisiert am %(last_updated)s.", "Library changes": "Bibliotheks-\u00c4nderungen", "Navigation": "Navigation", "Next topic": "N\u00e4chstes Thema", "Other changes": "Andere \u00c4nderungen", "Overview": "\u00dcbersicht", "Permalink to this definition": "Link zu dieser Definition", "Permalink to this headline": "Link zu dieser \u00dcberschrift", "Please activate JavaScript to enable the search\n functionality.": "Bitte aktivieren Sie JavaScript, wenn Sie die Suchfunktion nutzen wollen.", "Preparing search...": "Suche wird vorbereitet...", "Previous topic": "Vorheriges Thema", "Quick search": "Schnellsuche", "Search": "Suche", "Search Page": "Suche", "Search Results": "Suchergebnisse", "Search finished, found %s page(s) matching the search query.": "Die Suche ist fertig, es wurde(n) %s Seite(n) mit Treffern gefunden.", "Search within %(docstitle)s": "Suche in %(docstitle)s", "Searching": "Suchen", "Show Source": "Quellcode anzeigen", "Table Of Contents": "Inhalt", "This Page": "Diese Seite", "Welcome! This is": "Willkommen! Dies ist", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Ihre Suche ergab keine Treffer. Bitte stellen Sie sicher, dass alle W\u00f6rter richtig geschrieben sind und gen\u00fcgend Kategorien ausgew\u00e4hlt sind.", "all functions, classes, terms": "alle Funktionen, Klassen, Begriffe", "can be huge": "kann gro\u00df sein", "last updated": "zuletzt aktualisiert", "lists all sections and subsections": "Liste aller Kapitel und Unterkapitel", "next chapter": "n\u00e4chstes Kapitel", "previous chapter": "vorheriges Kapitel", "quick access to all modules": "schneller Zugriff auf alle Module", "search": "suchen", "search this documentation": "durchsuche diese Dokumentation", "the documentation for": "die Dokumentation f\u00fcr"}, "plural_expr": "(n != 1)"}); \ No newline at end of file +Documentation.addTranslations({"locale": "de", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": ", in ", "About these documents": "\u00dcber dieses Dokument", "Automatically generated list of changes in version %(version)s": "Automatisch generierte Liste der \u00c4nderungen in Version %(version)s", "C API changes": "C API-\u00c4nderungen", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "Seitenleiste einklappen", "Complete Table of Contents": "Vollst\u00e4ndiges Inhaltsverzeichnis", "Contents": "Inhalt", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Mit <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s erstellt.", "Expand sidebar": "Seitenleiste ausklappen", "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.": "Von hier aus k\u00f6nnen Sie die Dokumentation durchsuchen. Geben Sie Ihre Suchbegriffe in das untenstehende Feld ein und klicken Sie auf \"Suchen\". Bitte beachten Sie, dass die Suchfunktion automatisch nach allen Worten sucht. Seiten, die nicht alle Worte enthalten, erscheinen nicht in der Ergebnisliste.", "Full index on one page": "Gesamtes Stichwortverzeichnis auf einer Seite", "General Index": "Stichwortverzeichnis", "Global Module Index": "Globaler Modulindex", "Go": "Los", "Hide Search Matches": "Suchergebnisse ausblenden", "Index": "Stichwortverzeichnis", "Index – %(key)s": "Stichwortverzeichnis – %(key)s", "Index pages by letter": "Stichwortverzeichnis nach Anfangsbuchstabe", "Indices and tables:": "Verzeichnisse und Tabellen:", "Last updated on %(last_updated)s.": "Zuletzt aktualisiert am %(last_updated)s.", "Library changes": "Bibliotheks-\u00c4nderungen", "Navigation": "Navigation", "Next topic": "N\u00e4chstes Thema", "Other changes": "Andere \u00c4nderungen", "Overview": "\u00dcbersicht", "Permalink to this definition": "Link zu dieser Definition", "Permalink to this headline": "Link zu dieser \u00dcberschrift", "Please activate JavaScript to enable the search\n functionality.": "Bitte aktivieren Sie JavaScript, wenn Sie die Suchfunktion nutzen wollen.", "Preparing search...": "Suche wird vorbereitet...", "Previous topic": "Vorheriges Thema", "Quick search": "Schnellsuche", "Search": "Suche", "Search Page": "Suche", "Search Results": "Suchergebnisse", "Search finished, found %s page(s) matching the search query.": "Die Suche ist fertig, es wurde(n) %s Seite(n) mit Treffern gefunden.", "Search within %(docstitle)s": "Suche in %(docstitle)s", "Searching": "Suchen", "Show Source": "Quellcode anzeigen", "Table Of Contents": "Inhalt", "This Page": "Diese Seite", "Welcome! This is": "Willkommen! Dies ist", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Ihre Suche ergab keine Treffer. Bitte stellen Sie sicher, dass alle W\u00f6rter richtig geschrieben sind und gen\u00fcgend Kategorien ausgew\u00e4hlt sind.", "all functions, classes, terms": "alle Funktionen, Klassen, Begriffe", "can be huge": "kann gro\u00df sein", "last updated": "zuletzt aktualisiert", "lists all sections and subsections": "Liste aller Kapitel und Unterkapitel", "next chapter": "n\u00e4chstes Kapitel", "previous chapter": "vorheriges Kapitel", "quick access to all modules": "schneller Zugriff auf alle Module", "search": "suchen", "search this documentation": "durchsuche diese Dokumentation", "the documentation for": "die Dokumentation f\u00fcr"}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/locale/de/LC_MESSAGES/sphinx.mo b/sphinx/locale/de/LC_MESSAGES/sphinx.mo index 4af08fc5eb2b14705564bc5c7e9a4a7d54d1fe07..2f1ada753768f6af65342d366067c00f74faf2e7 100644 GIT binary patch delta 4036 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 E00&Jjx&QzG delta 3528 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 diff --git a/sphinx/locale/de/LC_MESSAGES/sphinx.po b/sphinx/locale/de/LC_MESSAGES/sphinx.po index be23ba72e..d6567fa33 100644 --- a/sphinx/locale/de/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/de/LC_MESSAGES/sphinx.po @@ -4,65 +4,47 @@ # # Translators: # Georg Brandl <g.brandl@gmx.net>, 2013-2015 +# Lukas Prokop <admin@lukas-prokop.at>, 2016 msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: German (http://www.transifex.com/sphinx-doc/sphinx-1/language/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "Abb. %s" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "Tab. %s" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "Quellcode %s" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "%s %s Dokumentation" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "siehe %s" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "siehe auch %s" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "Sonderzeichen" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python Enhancement Proposals; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "Builtins" @@ -71,8 +53,11 @@ msgstr "Builtins" msgid "Module level" msgstr "Modulebene" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -83,18 +68,28 @@ msgstr "Stichwortverzeichnis" msgid "index" msgstr "Index" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "weiter" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "zurück" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s Dokumentation" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr " (in " +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "Autor des Abschnitts: " @@ -111,23 +106,23 @@ msgstr "Autor des Quellcode: " msgid "Author: " msgstr "Autor: " -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s-%s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Parameter" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "Rückgabe" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "Rückgabetyp" @@ -156,12 +151,12 @@ msgstr "%s (C-Typ)" msgid "%s (C variable)" msgstr "%s (C-Variable)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "Funktion" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "Member" @@ -169,7 +164,7 @@ msgstr "Member" msgid "macro" msgstr "Makro" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "Typ" @@ -177,63 +172,72 @@ msgstr "Typ" msgid "variable" msgstr "Variable" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" -msgstr "" +msgstr "Template Parameter" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "Wirft" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (C++-Typ)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (C++-Member)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (C++-Funktion)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (C++-Klasse)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "%s (C++-Aufzählung)" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "%s (C++-Enumerator)" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "Klasse" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "Aufzählung" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "Enumerator" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (Standard-Funktion)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (Methode von %s)" @@ -248,7 +252,7 @@ msgstr "%s() (Klasse)" msgid "%s (global variable or constant)" msgstr "%s (globale Variable oder Konstante)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (Attribut von %s)" @@ -257,116 +261,116 @@ msgstr "%s (Attribut von %s)" msgid "Arguments" msgstr "Parameter" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "Wert" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "Attribut" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "Variablen" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "Verursacht" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (im Modul %s)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (Standard-Variable)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (in Modul %s)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (Builtin-Klasse)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (Klasse in %s)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (Methode von %s.%s)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (statische Methode von %s.%s)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (statische Methode von %s)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "%s() (Klassenmethode von %s.%s)" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "%s() (Klassenmethode von %s)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (Attribut von %s.%s)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (Modul)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "Python-Modulindex" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "Module" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "Veraltet" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "Exception" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "Methode" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "Klassenmethode" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "statische Methode" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "Modul" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr " (veraltet)" @@ -388,120 +392,147 @@ msgstr "Direktive" msgid "role" msgstr "Rolle" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "Umgebungsvariable; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%sKommandozeilenoption; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "Glossareintrag" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "Grammatik-Token" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "Referenz-Label" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "Umgebungsvariable" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "Programmoption" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "Stichwortverzeichnis" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "Modulindex" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "Suche" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" -msgstr " Basisklassen: %s" +msgid "see %s" +msgstr "siehe %s" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "siehe auch %s" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "Sonderzeichen" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "Alias von :class:`%s`" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "[Diagramm: %s]" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "[Diagramm]" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "(in %s v%s)" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[Quellcode]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "Zu tun" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" -msgstr "" +msgstr "<<ursprüngliche Eintrag>>" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" -msgstr "" +msgstr "(Der <<ursprüngliche Eintrag>> steht in %s, Zeile %d.)" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "ursprüngliche Eintrag" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[Doku]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "Modul-Quellcode" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "<h1>Quellcode für %s</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "Überblick: Modul-Quellcode" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "<h1>Alle Module, für die Quellcode verfügbar ist</h1>" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "Achtung" @@ -582,7 +613,7 @@ msgstr "Builtin-Funktion" msgid "Table Of Contents" msgstr "Inhalt" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -640,15 +671,15 @@ msgstr "schneller Zugriff auf alle Module" msgid "all functions, classes, terms" msgstr "alle Funktionen, Klassen, Begriffe" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Stichwortverzeichnis – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "Gesamtes Stichwortverzeichnis auf einer Seite" @@ -664,35 +695,35 @@ msgstr "kann groß sein" msgid "Navigation" msgstr "Navigation" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "Suche in %(docstitle)s" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "Über dieses Dokument" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "Copyright" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Copyright %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Zuletzt aktualisiert am %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -741,13 +772,13 @@ msgstr "suchen" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "Suchergebnisse" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -764,13 +795,13 @@ msgstr "Diese Seite" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "Änderungen in Version %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -789,12 +820,13 @@ msgstr "C API-Änderungen" msgid "Other changes" msgstr "Andere Änderungen" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "Link zu dieser Überschrift" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "Link zu dieser Definition" @@ -810,12 +842,12 @@ msgstr "Suchen" msgid "Preparing search..." msgstr "Suche wird vorbereitet..." -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "Die Suche ist fertig, es wurde(n) %s Seite(n) mit Treffern gefunden." -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr ", in " @@ -832,48 +864,53 @@ msgstr "Seitenleiste einklappen" msgid "Contents" msgstr "Inhalt" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "Link zu diesem Quellcode" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "Link zu diesem Bild" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" -msgstr "" +msgstr "Permanenter Link zu diesem Inhaltsverzeichnis" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "Link zu dieser Tabelle" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "Release" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" +msgstr "Seite" + +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "Fußnoten" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "Fortsetzung der vorherigen Seite" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "Fortsetzung auf der nächsten Seite" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "[Bild: %s]" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[Bild]" diff --git a/sphinx/locale/el/LC_MESSAGES/sphinx.js b/sphinx/locale/el/LC_MESSAGES/sphinx.js index f9dabdb84..4c8ffaa9f 100644 --- a/sphinx/locale/el/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/el/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "el", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\\\"%(path)s\\\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", \u03c3\u03c4\u03bf ", "About these documents": "\u03a3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac \u03bc\u03b5 \u03b1\u03c5\u03c4\u03ac \u03c4\u03b1 \u03ba\u03b5\u03af\u03bc\u03b5\u03bd\u03b1", "Automatically generated list of changes in version %(version)s": "\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b1 \u03c0\u03b1\u03c1\u03b1\u03b3\u03cc\u03bc\u03b5\u03bd\u03b7 \u03bb\u03af\u03c3\u03c4\u03b1 \u03b1\u03bb\u03bb\u03b1\u03b3\u03ce\u03bd \u03c3\u03c4\u03b7\u03bd \u03ad\u03ba\u03b4\u03bf\u03c3\u03b7 %(version)s", "C API changes": "\u0391\u03bb\u03bb\u03b1\u03b3\u03ad\u03c2 \u03c3\u03c4\u03bf API \u03c4\u03b7\u03c2 C", "Changes in Version %(version)s — %(docstitle)s": "\u0391\u03bb\u03bb\u03b1\u03b3\u03ad\u03c2 \u03c3\u03c4\u03b7\u03bd \u0388\u03ba\u03b4\u03bf\u03c3\u03b7 %(version)s — %(docstitle)s", "Collapse sidebar": "\u039a\u03bb\u03b5\u03af\u03c3\u03b9\u03bc\u03bf \u03c0\u03bb\u03b1\u03ca\u03bd\u03ae\u03c2 \u03bc\u03c0\u03ac\u03c1\u03b1\u03c2", "Complete Table of Contents": "\u03a0\u03bb\u03ae\u03c1\u03b7\u03c2 \u03a0\u03af\u03bd\u03b1\u03ba\u03b1\u03c2 \u03a0\u03b5\u03c1\u03b9\u03b5\u03c7\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd", "Contents": "\u03a0\u03b5\u03c1\u03b9\u03b5\u03c7\u03cc\u03bc\u03b5\u03bd\u03b1", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "\u0394\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03ae\u03b8\u03b7\u03ba\u03b5 \u03bc\u03b5 \u03c4\u03bf <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c0\u03bb\u03b1\u03ca\u03bd\u03ae\u03c2 \u03bc\u03c0\u03ac\u03c1\u03b1\u03c2", "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.": "\u0391\u03c0\u03cc \u03b5\u03b4\u03ce \u03bc\u03c0\u03bf\u03c1\u03b5\u03af\u03c4\u03b5 \u03bd\u03b1 \u03b1\u03bd\u03b1\u03b6\u03b7\u03c4\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03ac \u03c4\u03b1 \u03ba\u03b5\u03af\u03bc\u03b5\u03bd\u03b1. \u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03bb\u03ad\u03be\u03b5\u03b9\u03c2\n \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7\u03c2 \u03c3\u03c4\u03bf \u03c0\u03b1\u03c1\u03b1\u03ba\u03ac\u03c4\u03c9 \u03c0\u03bb\u03b1\u03af\u03c3\u03b9\u03bf \u03ba\u03b1\u03b9 \u03c0\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 \"\u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7\". \u03a3\u03b7\u03bc\u03b5\u03b9\u03ce\u03c3\u03c4\u03b5 \u03cc\u03c4\u03b9 \u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \n \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7\u03c2 \u03b8\u03b1 \u03b1\u03bd\u03b1\u03b6\u03b7\u03c4\u03ae\u03c3\u03b5\u03b9 \u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b1 \u03b3\u03b9\u03b1 \u03cc\u03bb\u03b5\u03c2 \u03c4\u03b9\u03c2 \u03bb\u03ad\u03be\u03b5\u03b9\u03c2. \u03a3\u03b5\u03bb\u03af\u03b4\u03b5\u03c2\n \u03c0\u03bf\u03c5 \u03c0\u03b5\u03c1\u03b9\u03ad\u03c7\u03bf\u03c5\u03bd \u03bb\u03b9\u03b3\u03cc\u03c4\u03b5\u03c1\u03b5\u03c2 \u03bb\u03ad\u03be\u03b5\u03b9\u03c2 \u03b4\u03b5 \u03b8\u03b1 \u03b5\u03bc\u03c6\u03b1\u03bd\u03b9\u03c3\u03c4\u03bf\u03cd\u03bd \u03c3\u03c4\u03b7 \u03bb\u03af\u03c3\u03c4\u03b1 \u03b1\u03c0\u03bf\u03c4\u03b5\u03bb\u03b5\u03c3\u03bc\u03ac\u03c4\u03c9\u03bd.", "Full index on one page": "\u03a0\u03bb\u03ae\u03c1\u03b5\u03c2 \u03b5\u03c5\u03c1\u03b5\u03c4\u03ae\u03c1\u03b9\u03bf \u03c3\u03b5 \u03bc\u03af\u03b1 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1", "General Index": "\u039a\u03b5\u03bd\u03c4\u03c1\u03b9\u03ba\u03cc \u0395\u03c5\u03c1\u03b5\u03c4\u03ae\u03c1\u03b9\u03bf\u03bf", "Global Module Index": "\u039a\u03b1\u03b8\u03bf\u03bb\u03b9\u03ba\u03cc \u0395\u03c5\u03c1\u03b5\u03c4\u03ae\u03c1\u03b9\u03bf \u039c\u03bf\u03bd\u03ac\u03b4\u03c9\u03bd", "Go": "\u03a0\u03ac\u03bc\u03b5", "Hide Search Matches": "\u0391\u03c0\u03cc\u03ba\u03c1\u03c5\u03c8\u03b7 \u0395\u03c5\u03c1\u03b5\u03b8\u03ad\u03bd\u03c4\u03c9\u03bd \u0391\u03bd\u03b1\u03b6\u03b7\u03c4\u03ae\u03c3\u03b5\u03c9\u03bd", "Index": "\u0395\u03c5\u03c1\u03b5\u03c4\u03ae\u03c1\u03b9\u03bf", "Index – %(key)s": "\u0395\u03c5\u03c1\u03b5\u03c4\u03ae\u03c1\u03b9\u03bf – %(key)s", "Index pages by letter": "\u03a3\u03b5\u03bb\u03af\u03b4\u03b5\u03c2 \u03b5\u03c5\u03c1\u03b5\u03c4\u03b7\u03c1\u03af\u03bf\u03c5 \u03b1\u03bd\u03ac \u03b3\u03c1\u03ac\u03bc\u03bc\u03b1", "Indices and tables:": "\u0395\u03c5\u03c1\u03b5\u03c4\u03ae\u03c1\u03b9\u03b1 \u03ba\u03b1\u03b9 \u03c0\u03af\u03bd\u03b1\u03ba\u03b5\u03c2:", "Last updated on %(last_updated)s.": "\u03a4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b1 \u03b5\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03c3\u03c4\u03b9\u03c2 %(last_updated)s.", "Library changes": "\u0391\u03bb\u03bb\u03b1\u03b3\u03ad\u03c2 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7\u03c2", "Navigation": "\u03a0\u03bb\u03bf\u03ae\u03b3\u03b7\u03c3\u03b7", "Next topic": "\u0395\u03c0\u03cc\u03bc\u03b5\u03bd\u03bf \u03b8\u03ad\u03bc\u03b1", "Other changes": "\u0386\u03bb\u03bb\u03b5\u03c2 \u03b1\u03bb\u03bb\u03b1\u03b3\u03ad\u03c2", "Overview": "\u0395\u03c0\u03b9\u03c3\u03ba\u03cc\u03c0\u03b7\u03c3\u03b7", "Permalink to this definition": "\u039c\u03cc\u03bd\u03b9\u03bc\u03bf\u03c2 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03cc\u03bd \u03c4\u03bf\u03bd \u03bf\u03c1\u03b9\u03c3\u03bc\u03cc", "Permalink to this headline": "\u039c\u03cc\u03bd\u03b9\u03bc\u03bf\u03c2 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03ae\u03bd \u03c4\u03b7\u03bd \u03ba\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1", "Please activate JavaScript to enable the search\n functionality.": "\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce, \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 \u03c4\u03b7 JavaScript \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1\n \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7\u03c2.", "Preparing search...": "\u03a0\u03c1\u03bf\u03b5\u03c4\u03bf\u03b9\u03bc\u03b1\u03c3\u03af\u03b1 \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7\u03c2...", "Previous topic": "\u03a0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf \u03b8\u03ad\u03bc\u03b1", "Quick search": "\u03a3\u03cd\u03bd\u03c4\u03bf\u03bc\u03b7 \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7", "Search": "\u0391\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7", "Search Page": "\u03a3\u03b5\u03bb\u03af\u03b4\u03b1 \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7\u03c2", "Search Results": "\u0391\u03c0\u03bf\u03c4\u03b5\u03bb\u03ad\u03c3\u03bc\u03b1\u03c4\u03b1 \u0391\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7\u03c2", "Search finished, found %s page(s) matching the search query.": "\u0397 \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7 \u03bf\u03bb\u03bf\u03ba\u03bb\u03b7\u03c1\u03ce\u03b8\u03b7\u03ba\u03b5, \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5/\u03b1\u03bd %s \u03c3\u03b5\u03bb\u03af\u03b4\u03b1/\u03b5\u03c2 \u03bc\u03b5 \u03b2\u03ac\u03c3\u03b7 \u03c4\u03bf\u03c5\u03c2 \u03cc\u03c1\u03bf\u03c5\u03c2 \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7\u03c2.", "Search within %(docstitle)s": "\u0391\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7 \u03c3\u03c4\u03bf %(docstitle)s", "Searching": "\u0395\u03ba\u03c4\u03b5\u03bb\u03b5\u03af\u03c4\u03b1\u03b9 \u03b7 \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7", "Show Source": "\u03a0\u03c1\u03bf\u03b2\u03bf\u03bb\u03ae \u03ba\u03ce\u03b4\u03b9\u03ba\u03b1", "Table Of Contents": "\u03a0\u03af\u03bd\u03b1\u03ba\u03b1\u03c2 \u03a0\u03b5\u03c1\u03b9\u03b5\u03c7\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd", "This Page": "\u0391\u03c5\u03c4\u03ae \u03b7 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1", "Welcome! This is": "\u039a\u03b1\u03bb\u03c9\u03c3\u03ae\u03c1\u03b8\u03b1\u03c4\u03b5! \u0391\u03c5\u03c4\u03ae \u03b5\u03af\u03bd\u03b1\u03b9", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "\u0397 \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03ae \u03c3\u03b1\u03c2 \u03b4\u03b5\u03bd \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03b9\u03ae\u03b8\u03b7\u03ba\u03b5 \u03bc\u03b5 \u03ba\u03b1\u03bd\u03ad\u03bd\u03b1 \u03ba\u03b5\u03af\u03bc\u03b5\u03bd\u03bf. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce, \u03b5\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03b9\u03ce\u03c3\u03c4\u03b5 \u03cc\u03c4\u03b9 \u03cc\u03bb\u03b5\u03c2 \u03bf\u03b9 \u03bb\u03ad\u03be\u03b5\u03b9\u03c2 \u03ad\u03c7\u03bf\u03c5\u03bd \u03c4\u03b7 \u03c3\u03c9\u03c3\u03c4\u03ae \u03bf\u03c1\u03b8\u03bf\u03b3\u03c1\u03b1\u03c6\u03af\u03b1 \u03ba\u03b1\u03b9 \u03cc\u03c4\u03b9 \u03ad\u03c7\u03b5\u03c4\u03b5 \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03b5\u03b9\u03c2 \u03b1\u03c1\u03ba\u03b5\u03c4\u03ad\u03c2 \u03ba\u03b1\u03c4\u03b7\u03b3\u03bf\u03c1\u03af\u03b5\u03c2.", "all functions, classes, terms": "\u03cc\u03bb\u03b5\u03c2 \u03bf\u03b9 \u03c3\u03c5\u03bd\u03b1\u03c1\u03c4\u03ae\u03c3\u03b5\u03b9\u03c2, \u03ba\u03bb\u03ac\u03c3\u03b5\u03b9\u03c2, \u03cc\u03c1\u03bf\u03b9", "can be huge": "\u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c4\u03b5\u03c1\u03ac\u03c3\u03c4\u03b9\u03bf", "last updated": "\u03c4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b1 \u03b5\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7", "lists all sections and subsections": "\u03b1\u03c0\u03b1\u03c1\u03b9\u03b8\u03bc\u03b5\u03af \u03cc\u03bb\u03b1 \u03c4\u03b1 \u03ba\u03b5\u03c6\u03ac\u03bb\u03b1\u03b9\u03b1 \u03ba\u03b1\u03b9 \u03c5\u03c0\u03bf\u03ba\u03b5\u03c6\u03ac\u03bb\u03b1\u03b9\u03b1", "next chapter": "\u03b5\u03c0\u03cc\u03bc\u03b5\u03bd\u03bf \u03ba\u03b5\u03c6\u03ac\u03bb\u03b1\u03b9\u03bf", "previous chapter": "\u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf \u03ba\u03b5\u03c6\u03ac\u03bb\u03b1\u03b9\u03bf", "quick access to all modules": "\u03b3\u03c1\u03ae\u03b3\u03bf\u03c1\u03b7 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03b5 \u03cc\u03bb\u03b5\u03c2 \u03c4\u03b9\u03c2 \u03bc\u03bf\u03bd\u03ac\u03b4\u03b5\u03c2", "search": "\u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7", "search this documentation": "\u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7 \u03b1\u03c5\u03c4\u03ae\u03c2 \u03c4\u03b7\u03c2 \u03c4\u03b5\u03ba\u03bc\u03b7\u03c1\u03af\u03c9\u03c3\u03b7\u03c2", "the documentation for": "\u03b7 \u03c4\u03b5\u03ba\u03bc\u03b7\u03c1\u03af\u03c9\u03c3\u03b7 \u03c4\u03bf\u03c5"}, "plural_expr": "(n != 1)"}); \ No newline at end of file +Documentation.addTranslations({"locale": "el", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": ", \u03c3\u03c4\u03bf ", "About these documents": "\u03a3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac \u03bc\u03b5 \u03b1\u03c5\u03c4\u03ac \u03c4\u03b1 \u03ba\u03b5\u03af\u03bc\u03b5\u03bd\u03b1", "Automatically generated list of changes in version %(version)s": "\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b1 \u03c0\u03b1\u03c1\u03b1\u03b3\u03cc\u03bc\u03b5\u03bd\u03b7 \u03bb\u03af\u03c3\u03c4\u03b1 \u03b1\u03bb\u03bb\u03b1\u03b3\u03ce\u03bd \u03c3\u03c4\u03b7\u03bd \u03ad\u03ba\u03b4\u03bf\u03c3\u03b7 %(version)s", "C API changes": "\u0391\u03bb\u03bb\u03b1\u03b3\u03ad\u03c2 \u03c3\u03c4\u03bf API \u03c4\u03b7\u03c2 C", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "\u039a\u03bb\u03b5\u03af\u03c3\u03b9\u03bc\u03bf \u03c0\u03bb\u03b1\u03ca\u03bd\u03ae\u03c2 \u03bc\u03c0\u03ac\u03c1\u03b1\u03c2", "Complete Table of Contents": "\u03a0\u03bb\u03ae\u03c1\u03b7\u03c2 \u03a0\u03af\u03bd\u03b1\u03ba\u03b1\u03c2 \u03a0\u03b5\u03c1\u03b9\u03b5\u03c7\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd", "Contents": "\u03a0\u03b5\u03c1\u03b9\u03b5\u03c7\u03cc\u03bc\u03b5\u03bd\u03b1", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "\u0394\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03ae\u03b8\u03b7\u03ba\u03b5 \u03bc\u03b5 \u03c4\u03bf <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c0\u03bb\u03b1\u03ca\u03bd\u03ae\u03c2 \u03bc\u03c0\u03ac\u03c1\u03b1\u03c2", "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.": "\u0391\u03c0\u03cc \u03b5\u03b4\u03ce \u03bc\u03c0\u03bf\u03c1\u03b5\u03af\u03c4\u03b5 \u03bd\u03b1 \u03b1\u03bd\u03b1\u03b6\u03b7\u03c4\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03ac \u03c4\u03b1 \u03ba\u03b5\u03af\u03bc\u03b5\u03bd\u03b1. \u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03bb\u03ad\u03be\u03b5\u03b9\u03c2\n \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7\u03c2 \u03c3\u03c4\u03bf \u03c0\u03b1\u03c1\u03b1\u03ba\u03ac\u03c4\u03c9 \u03c0\u03bb\u03b1\u03af\u03c3\u03b9\u03bf \u03ba\u03b1\u03b9 \u03c0\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 \"\u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7\". \u03a3\u03b7\u03bc\u03b5\u03b9\u03ce\u03c3\u03c4\u03b5 \u03cc\u03c4\u03b9 \u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \n \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7\u03c2 \u03b8\u03b1 \u03b1\u03bd\u03b1\u03b6\u03b7\u03c4\u03ae\u03c3\u03b5\u03b9 \u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b1 \u03b3\u03b9\u03b1 \u03cc\u03bb\u03b5\u03c2 \u03c4\u03b9\u03c2 \u03bb\u03ad\u03be\u03b5\u03b9\u03c2. \u03a3\u03b5\u03bb\u03af\u03b4\u03b5\u03c2\n \u03c0\u03bf\u03c5 \u03c0\u03b5\u03c1\u03b9\u03ad\u03c7\u03bf\u03c5\u03bd \u03bb\u03b9\u03b3\u03cc\u03c4\u03b5\u03c1\u03b5\u03c2 \u03bb\u03ad\u03be\u03b5\u03b9\u03c2 \u03b4\u03b5 \u03b8\u03b1 \u03b5\u03bc\u03c6\u03b1\u03bd\u03b9\u03c3\u03c4\u03bf\u03cd\u03bd \u03c3\u03c4\u03b7 \u03bb\u03af\u03c3\u03c4\u03b1 \u03b1\u03c0\u03bf\u03c4\u03b5\u03bb\u03b5\u03c3\u03bc\u03ac\u03c4\u03c9\u03bd.", "Full index on one page": "\u03a0\u03bb\u03ae\u03c1\u03b5\u03c2 \u03b5\u03c5\u03c1\u03b5\u03c4\u03ae\u03c1\u03b9\u03bf \u03c3\u03b5 \u03bc\u03af\u03b1 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1", "General Index": "\u039a\u03b5\u03bd\u03c4\u03c1\u03b9\u03ba\u03cc \u0395\u03c5\u03c1\u03b5\u03c4\u03ae\u03c1\u03b9\u03bf\u03bf", "Global Module Index": "\u039a\u03b1\u03b8\u03bf\u03bb\u03b9\u03ba\u03cc \u0395\u03c5\u03c1\u03b5\u03c4\u03ae\u03c1\u03b9\u03bf \u039c\u03bf\u03bd\u03ac\u03b4\u03c9\u03bd", "Go": "\u03a0\u03ac\u03bc\u03b5", "Hide Search Matches": "\u0391\u03c0\u03cc\u03ba\u03c1\u03c5\u03c8\u03b7 \u0395\u03c5\u03c1\u03b5\u03b8\u03ad\u03bd\u03c4\u03c9\u03bd \u0391\u03bd\u03b1\u03b6\u03b7\u03c4\u03ae\u03c3\u03b5\u03c9\u03bd", "Index": "\u0395\u03c5\u03c1\u03b5\u03c4\u03ae\u03c1\u03b9\u03bf", "Index – %(key)s": "\u0395\u03c5\u03c1\u03b5\u03c4\u03ae\u03c1\u03b9\u03bf – %(key)s", "Index pages by letter": "\u03a3\u03b5\u03bb\u03af\u03b4\u03b5\u03c2 \u03b5\u03c5\u03c1\u03b5\u03c4\u03b7\u03c1\u03af\u03bf\u03c5 \u03b1\u03bd\u03ac \u03b3\u03c1\u03ac\u03bc\u03bc\u03b1", "Indices and tables:": "\u0395\u03c5\u03c1\u03b5\u03c4\u03ae\u03c1\u03b9\u03b1 \u03ba\u03b1\u03b9 \u03c0\u03af\u03bd\u03b1\u03ba\u03b5\u03c2:", "Last updated on %(last_updated)s.": "\u03a4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b1 \u03b5\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03c3\u03c4\u03b9\u03c2 %(last_updated)s.", "Library changes": "\u0391\u03bb\u03bb\u03b1\u03b3\u03ad\u03c2 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7\u03c2", "Navigation": "\u03a0\u03bb\u03bf\u03ae\u03b3\u03b7\u03c3\u03b7", "Next topic": "\u0395\u03c0\u03cc\u03bc\u03b5\u03bd\u03bf \u03b8\u03ad\u03bc\u03b1", "Other changes": "\u0386\u03bb\u03bb\u03b5\u03c2 \u03b1\u03bb\u03bb\u03b1\u03b3\u03ad\u03c2", "Overview": "\u0395\u03c0\u03b9\u03c3\u03ba\u03cc\u03c0\u03b7\u03c3\u03b7", "Permalink to this definition": "\u039c\u03cc\u03bd\u03b9\u03bc\u03bf\u03c2 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03cc\u03bd \u03c4\u03bf\u03bd \u03bf\u03c1\u03b9\u03c3\u03bc\u03cc", "Permalink to this headline": "\u039c\u03cc\u03bd\u03b9\u03bc\u03bf\u03c2 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03ae\u03bd \u03c4\u03b7\u03bd \u03ba\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1", "Please activate JavaScript to enable the search\n functionality.": "\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce, \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 \u03c4\u03b7 JavaScript \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1\n \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7\u03c2.", "Preparing search...": "\u03a0\u03c1\u03bf\u03b5\u03c4\u03bf\u03b9\u03bc\u03b1\u03c3\u03af\u03b1 \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7\u03c2...", "Previous topic": "\u03a0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf \u03b8\u03ad\u03bc\u03b1", "Quick search": "\u03a3\u03cd\u03bd\u03c4\u03bf\u03bc\u03b7 \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7", "Search": "\u0391\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7", "Search Page": "\u03a3\u03b5\u03bb\u03af\u03b4\u03b1 \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7\u03c2", "Search Results": "\u0391\u03c0\u03bf\u03c4\u03b5\u03bb\u03ad\u03c3\u03bc\u03b1\u03c4\u03b1 \u0391\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7\u03c2", "Search finished, found %s page(s) matching the search query.": "\u0397 \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7 \u03bf\u03bb\u03bf\u03ba\u03bb\u03b7\u03c1\u03ce\u03b8\u03b7\u03ba\u03b5, \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5/\u03b1\u03bd %s \u03c3\u03b5\u03bb\u03af\u03b4\u03b1/\u03b5\u03c2 \u03bc\u03b5 \u03b2\u03ac\u03c3\u03b7 \u03c4\u03bf\u03c5\u03c2 \u03cc\u03c1\u03bf\u03c5\u03c2 \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7\u03c2.", "Search within %(docstitle)s": "\u0391\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7 \u03c3\u03c4\u03bf %(docstitle)s", "Searching": "\u0395\u03ba\u03c4\u03b5\u03bb\u03b5\u03af\u03c4\u03b1\u03b9 \u03b7 \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7", "Show Source": "\u03a0\u03c1\u03bf\u03b2\u03bf\u03bb\u03ae \u03ba\u03ce\u03b4\u03b9\u03ba\u03b1", "Table Of Contents": "\u03a0\u03af\u03bd\u03b1\u03ba\u03b1\u03c2 \u03a0\u03b5\u03c1\u03b9\u03b5\u03c7\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd", "This Page": "\u0391\u03c5\u03c4\u03ae \u03b7 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1", "Welcome! This is": "\u039a\u03b1\u03bb\u03c9\u03c3\u03ae\u03c1\u03b8\u03b1\u03c4\u03b5! \u0391\u03c5\u03c4\u03ae \u03b5\u03af\u03bd\u03b1\u03b9", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "\u0397 \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03ae \u03c3\u03b1\u03c2 \u03b4\u03b5\u03bd \u03c4\u03b1\u03c5\u03c4\u03bf\u03c0\u03bf\u03b9\u03ae\u03b8\u03b7\u03ba\u03b5 \u03bc\u03b5 \u03ba\u03b1\u03bd\u03ad\u03bd\u03b1 \u03ba\u03b5\u03af\u03bc\u03b5\u03bd\u03bf. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce, \u03b5\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03b9\u03ce\u03c3\u03c4\u03b5 \u03cc\u03c4\u03b9 \u03cc\u03bb\u03b5\u03c2 \u03bf\u03b9 \u03bb\u03ad\u03be\u03b5\u03b9\u03c2 \u03ad\u03c7\u03bf\u03c5\u03bd \u03c4\u03b7 \u03c3\u03c9\u03c3\u03c4\u03ae \u03bf\u03c1\u03b8\u03bf\u03b3\u03c1\u03b1\u03c6\u03af\u03b1 \u03ba\u03b1\u03b9 \u03cc\u03c4\u03b9 \u03ad\u03c7\u03b5\u03c4\u03b5 \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03b5\u03b9\u03c2 \u03b1\u03c1\u03ba\u03b5\u03c4\u03ad\u03c2 \u03ba\u03b1\u03c4\u03b7\u03b3\u03bf\u03c1\u03af\u03b5\u03c2.", "all functions, classes, terms": "\u03cc\u03bb\u03b5\u03c2 \u03bf\u03b9 \u03c3\u03c5\u03bd\u03b1\u03c1\u03c4\u03ae\u03c3\u03b5\u03b9\u03c2, \u03ba\u03bb\u03ac\u03c3\u03b5\u03b9\u03c2, \u03cc\u03c1\u03bf\u03b9", "can be huge": "\u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c4\u03b5\u03c1\u03ac\u03c3\u03c4\u03b9\u03bf", "last updated": "\u03c4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b1 \u03b5\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7", "lists all sections and subsections": "\u03b1\u03c0\u03b1\u03c1\u03b9\u03b8\u03bc\u03b5\u03af \u03cc\u03bb\u03b1 \u03c4\u03b1 \u03ba\u03b5\u03c6\u03ac\u03bb\u03b1\u03b9\u03b1 \u03ba\u03b1\u03b9 \u03c5\u03c0\u03bf\u03ba\u03b5\u03c6\u03ac\u03bb\u03b1\u03b9\u03b1", "next chapter": "\u03b5\u03c0\u03cc\u03bc\u03b5\u03bd\u03bf \u03ba\u03b5\u03c6\u03ac\u03bb\u03b1\u03b9\u03bf", "previous chapter": "\u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf \u03ba\u03b5\u03c6\u03ac\u03bb\u03b1\u03b9\u03bf", "quick access to all modules": "\u03b3\u03c1\u03ae\u03b3\u03bf\u03c1\u03b7 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03b5 \u03cc\u03bb\u03b5\u03c2 \u03c4\u03b9\u03c2 \u03bc\u03bf\u03bd\u03ac\u03b4\u03b5\u03c2", "search": "\u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7", "search this documentation": "\u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7 \u03b1\u03c5\u03c4\u03ae\u03c2 \u03c4\u03b7\u03c2 \u03c4\u03b5\u03ba\u03bc\u03b7\u03c1\u03af\u03c9\u03c3\u03b7\u03c2", "the documentation for": "\u03b7 \u03c4\u03b5\u03ba\u03bc\u03b7\u03c1\u03af\u03c9\u03c3\u03b7 \u03c4\u03bf\u03c5"}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/locale/el/LC_MESSAGES/sphinx.mo b/sphinx/locale/el/LC_MESSAGES/sphinx.mo index 6abb3cd8329e93b249e3d11bf1101d4cd068c50e..6045c5145feb7345af106cc221594394b92c4ded 100644 GIT binary patch delta 3932 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 J)q(fM{TqB{843UZ delta 3591 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 diff --git a/sphinx/locale/el/LC_MESSAGES/sphinx.po b/sphinx/locale/el/LC_MESSAGES/sphinx.po index 53fa6543b..79aef2816 100644 --- a/sphinx/locale/el/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/el/LC_MESSAGES/sphinx.po @@ -8,61 +8,42 @@ msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Greek (http://www.transifex.com/sphinx-doc/sphinx-1/language/el/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: el\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "Σχήμα %s" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "Πίνακας %s" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "Λίστα %s" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "Τεκμηρίωση του %s - %s" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "δείτε %s" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "δείτε επίσης %s" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "Σύμβολα" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python Enhancement Proposals; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "Ενσωματωμένες λειτουργίες" @@ -71,8 +52,11 @@ msgstr "Ενσωματωμένες λειτουργίες" msgid "Module level" msgstr "Επίπεδο μονάδας λειτουργίας" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -83,18 +67,28 @@ msgstr "Κεντρικό Ευρετήριοο" msgid "index" msgstr "ευρετήριο" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "επόμενο" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "προηγούμενο" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "Τεκμηρίωση του %s - %s" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr " (σε " +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "Συντάκτης τμήματος: " @@ -111,23 +105,23 @@ msgstr "Συντάκτης κώδικα: " msgid "Author: " msgstr "Συντάκτης: " -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Παράμετροι" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "Επιστρέφει" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "Επιστρεφόμενος τύπος" @@ -156,12 +150,12 @@ msgstr "%s (τύπος C)" msgid "%s (C variable)" msgstr "%s (μεταβλητή C)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "συνάρτηση" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "μέλος" @@ -169,7 +163,7 @@ msgstr "μέλος" msgid "macro" msgstr "μακροεντολή" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "τύπος" @@ -177,63 +171,72 @@ msgstr "τύπος" msgid "variable" msgstr "μεταβλητή" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "Προκαλεί" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (τύπος C++)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (μέλος C++)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (συνάρτηση C++)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (κλάση C++)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "%s (enum της C++)" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "%s (enumarator της C++)" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "κλάση" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "enum" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "enumerator" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (ενσωματωμένη συνάρτηση)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (μέθοδος της %s)" @@ -248,7 +251,7 @@ msgstr "%s() (κλάση)" msgid "%s (global variable or constant)" msgstr "%s (καθολική μεταβλητή ή σταθερά)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (ιδιότητα της %s)" @@ -257,116 +260,116 @@ msgstr "%s (ιδιότητα της %s)" msgid "Arguments" msgstr "Παράμετροι" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "δεδομένα" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "ιδιότητα" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "Μεταβλητές" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "Προκαλεί" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (στη μονάδα %s)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (ενσωματωμένη μεταβλητή)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (στη μονάδα %s)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (ενσωματωμένη κλάση)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (κλάση σε %s)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (μέθοδος %s.%s)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (στατική μέθοδος %s.%s)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (στατική μέθοδος της %s)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "%s() (μέθοδος κλάσης %s.%s)" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "%s() (μέθοδος κλάσης της %s)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (ιδιότητα της %s.%s)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (μονάδα)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "Ευρετήριο Μονάδων της Python" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "μονάδες" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "Αποσύρθηκε" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "εξαίρεση" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "μέθοδος" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "μέθοδος της κλάσης" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "στατική μέθοδος" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "μονάδα" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr " (αποσύρθηκε)" @@ -388,120 +391,147 @@ msgstr "οδηγία" msgid "role" msgstr "ρόλος" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "μεταβλητή περιβάλλοντος; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%sπαράμετρος γραμμής εντολών; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "γλωσσάρι" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "γραμματική ένδειξη" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "ετικέτα αναφοράς" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "μεταβλητή περιβάλλοντος" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "επιλογή προγράμματος" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "Ευρετήριο" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "Ευρετήριο μονάδων" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "Σελίδα αναζήτησης" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" -msgstr " Βασικές κλάσεις: %s" +msgid "see %s" +msgstr "δείτε %s" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "δείτε επίσης %s" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "Σύμβολα" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "ψευδώνυμο της :κλάσης:`%s`" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "[γράφημα: %s]" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "[γράφημα]" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "(στη %s έκδοση %s)" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[πηγή]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "Εκκρεμότητα" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "αρχική εγγραφή" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[τεκμηρίωση]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "Κώδικας μονάδας" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "<h1>Πηγαίος κώδικας για το %s</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "Επισκόπηση: κώδικας της μονάδας" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "<h1>Όλες οι μονάδες για τις οποίες υπάρχει διαθέσιμος κώδικας</h1>" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "Προσοχή" @@ -582,7 +612,7 @@ msgstr "ενσωματωμένη συνάρτηση" msgid "Table Of Contents" msgstr "Πίνακας Περιεχομένων" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -640,15 +670,15 @@ msgstr "γρήγορη πρόσβαση σε όλες τις μονάδες" msgid "all functions, classes, terms" msgstr "όλες οι συναρτήσεις, κλάσεις, όροι" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Ευρετήριο – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "Πλήρες ευρετήριο σε μία σελίδα" @@ -664,35 +694,35 @@ msgstr "μπορεί να είναι τεράστιο" msgid "Navigation" msgstr "Πλοήγηση" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "Αναζήτηση στο %(docstitle)s" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "Σχετικά με αυτά τα κείμενα" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "Copyright" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\\\"%(path)s\\\">Copyright</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Copyright %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Τελευταία ενημέρωση στις %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -741,13 +771,13 @@ msgstr "αναζήτηση" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "Αποτελέσματα Αναζήτησης" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -764,13 +794,13 @@ msgstr "Αυτή η σελίδα" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "Αλλαγές στην Έκδοση %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -789,12 +819,13 @@ msgstr "Αλλαγές στο API της C" msgid "Other changes" msgstr "Άλλες αλλαγές" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "Μόνιμος σύνδεσμος σε αυτήν την κεφαλίδα" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "Μόνιμος σύνδεσμος σε αυτόν τον ορισμό" @@ -810,12 +841,12 @@ msgstr "Εκτελείται η αναζήτηση" msgid "Preparing search..." msgstr "Προετοιμασία αναζήτησης..." -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "Η αναζήτηση ολοκληρώθηκε, βρέθηκε/αν %s σελίδα/ες με βάση τους όρους αναζήτησης." -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr ", στο " @@ -832,48 +863,53 @@ msgstr "Κλείσιμο πλαϊνής μπάρας" msgid "Contents" msgstr "Περιεχόμενα" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "Απευθείας σύνδεσμος σε αυτόν τον κώδικα" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "Απευθείας σύνδεσμος σε αυτήν την εικόνα" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "Απευθείας σύνδεσμος σε αυτόν τον πίνακα περιεχομένων" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "Απευθείας σύνδεσμος σε αυτόν τον πίνακα" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "Δημοσίευση" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "Σημειώσεις υποσέλιδου" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "συνεχίζεται από την προηγούμενη σελίδα" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "Συνεχίζεται στην επόμενη σελίδα" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "[εικόνα: %s]" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[εικόνα]" diff --git a/sphinx/locale/eo/LC_MESSAGES/sphinx.js b/sphinx/locale/eo/LC_MESSAGES/sphinx.js index ad495b790..30f857ba0 100644 --- a/sphinx/locale/eo/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/eo/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "eo", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">A\u016dtora rajto</a> %(copyright)s.", "© Copyright %(copyright)s.": "© A\u016dtora rajto %(copyright)s.", ", in ": "", "About these documents": "", "Automatically generated list of changes in version %(version)s": "", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "", "Contents": "", "Copyright": "A\u016dtora rajto", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand 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.": "", "Full index on one page": "", "General Index": "Indico universala", "Global Module Index": "Universala modjulindico", "Go": "", "Hide Search Matches": "", "Index": "", "Index – %(key)s": "Indico – %(key)s", "Index pages by letter": "", "Indices and tables:": "", "Last updated on %(last_updated)s.": "", "Library changes": "", "Navigation": "", "Next topic": "Sekva temo", "Other changes": "", "Overview": "", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "", "Previous topic": "Anta\u016da temo", "Quick search": "", "Search": "", "Search Page": "", "Search Results": "", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "", "Show Source": "", "Table Of Contents": "", "This Page": "", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "", "can be huge": "", "last updated": "", "lists all sections and subsections": "", "next chapter": "sekvo \u0109apitro", "previous chapter": "anta\u016da \u0109apitro", "quick access to all modules": "", "search": "ser\u0109u", "search this documentation": "", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file +Documentation.addTranslations({"locale": "eo", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "", "Automatically generated list of changes in version %(version)s": "", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "", "Contents": "", "Copyright": "A\u016dtora rajto", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand 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.": "", "Full index on one page": "", "General Index": "Indico universala", "Global Module Index": "Universala modjulindico", "Go": "", "Hide Search Matches": "", "Index": "", "Index – %(key)s": "Indico – %(key)s", "Index pages by letter": "", "Indices and tables:": "", "Last updated on %(last_updated)s.": "", "Library changes": "", "Navigation": "", "Next topic": "Sekva temo", "Other changes": "", "Overview": "", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "", "Previous topic": "Anta\u016da temo", "Quick search": "", "Search": "", "Search Page": "", "Search Results": "", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "", "Show Source": "", "Table Of Contents": "", "This Page": "", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "", "can be huge": "", "last updated": "", "lists all sections and subsections": "", "next chapter": "sekvo \u0109apitro", "previous chapter": "anta\u016da \u0109apitro", "quick access to all modules": "", "search": "ser\u0109u", "search this documentation": "", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/locale/eo/LC_MESSAGES/sphinx.mo b/sphinx/locale/eo/LC_MESSAGES/sphinx.mo index 45745548867a624e2f91d5497bb0b8d0404b28af..580c6289869fafbdc6ba16fa731bfee276e9c89c 100644 GIT binary patch literal 11147 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 Q7Bw#7&LL_!)4g-}Zy<@6GXMYp delta 3582 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 F>rbCgs;dA1 diff --git a/sphinx/locale/eo/LC_MESSAGES/sphinx.po b/sphinx/locale/eo/LC_MESSAGES/sphinx.po index 087dead17..b21efb7ad 100644 --- a/sphinx/locale/eo/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/eo/LC_MESSAGES/sphinx.po @@ -8,61 +8,42 @@ msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Esperanto (http://www.transifex.com/sphinx-doc/sphinx-1/language/eo/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: eo\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "%s %s dokumentaro" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "vidu %s" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "vidu ankaŭ %s" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "Simboloj" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python Enhancement Proposals; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "" @@ -71,8 +52,11 @@ msgstr "" msgid "Module level" msgstr "" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -83,18 +67,28 @@ msgstr "Indico universala" msgid "index" msgstr "indico" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "sekva" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "antaŭa" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s dokumentaro" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr "" +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "" @@ -111,23 +105,23 @@ msgstr "" msgid "Author: " msgstr "Aŭtoro:" -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Parametroj" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "" @@ -156,12 +150,12 @@ msgstr "" msgid "%s (C variable)" msgstr "" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "funkcio" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "membro" @@ -169,7 +163,7 @@ msgstr "membro" msgid "macro" msgstr "nomaĵo" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "tipo" @@ -177,63 +171,72 @@ msgstr "tipo" msgid "variable" msgstr "" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "klaso" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "" @@ -248,7 +251,7 @@ msgstr "%s() (klaso)" msgid "%s (global variable or constant)" msgstr "" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "" @@ -257,116 +260,116 @@ msgstr "" msgid "Arguments" msgstr "" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "datenoj" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "atributo" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "escepto" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr "" @@ -388,120 +391,147 @@ msgstr "" msgid "role" msgstr "" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" +msgid "see %s" +msgstr "vidu %s" + +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "vidu ankaŭ %s" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "Simboloj" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" msgstr "" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "" @@ -582,7 +612,7 @@ msgstr "" msgid "Table Of Contents" msgstr "" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -640,15 +670,15 @@ msgstr "" msgid "all functions, classes, terms" msgstr "" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Indico – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "" @@ -664,35 +694,35 @@ msgstr "" msgid "Navigation" msgstr "" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "Aŭtora rajto" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">Aŭtora rajto</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Aŭtora rajto %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "" -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -741,13 +771,13 @@ msgstr "serĉu" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -764,13 +794,13 @@ msgstr "" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -789,12 +819,13 @@ msgstr "" msgid "Other changes" msgstr "" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "" @@ -810,12 +841,12 @@ msgstr "" msgid "Preparing search..." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr "" @@ -832,48 +863,53 @@ msgstr "" msgid "Contents" msgstr "" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "" diff --git a/sphinx/locale/es/LC_MESSAGES/sphinx.js b/sphinx/locale/es/LC_MESSAGES/sphinx.js index ae2d64259..31f16923e 100644 --- a/sphinx/locale/es/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/es/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "es", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\\\"%(path)s\\\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", en ", "About these documents": "Sobre este documento", "Automatically generated list of changes in version %(version)s": "Lista de cambios generada autom\u00e1ticamente en la versi\u00f3n %(version)s", "C API changes": "Cambios en la API C", "Changes in Version %(version)s — %(docstitle)s": "Cambios en la versi\u00f3n %(version)s — %(docstitle)s", "Collapse sidebar": "Contraer barra lateral", "Complete Table of Contents": "\u00cdndice de contenidos completo", "Contents": "Contenidos", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Creado con <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Expandir barra lateral", "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.": "Este es el di\u00e1logo de b\u00fasqueda. Introduce los t\u00e9rminos en el\n di\u00e1logo siguiente y pulsa \"buscar\". Note que el asistente buscar\u00e1 \n autom\u00e1ticamente todas las palabras. Las p\u00e1ginas que contengan \n menos palabras no aparecer\u00e1n en la lista de resultados.", "Full index on one page": "\u00cdndice completo en una p\u00e1gina", "General Index": "\u00cdndice General", "Global Module Index": "\u00cdndice Global de M\u00f3dulos", "Go": "Ir a", "Hide Search Matches": "Ocultar coincidencias de la b\u00fasqueda", "Index": "\u00cdndice", "Index – %(key)s": "\u00cdndice – %(key)s", "Index pages by letter": "\u00cdndice alfab\u00e9tico de p\u00e1ginas", "Indices and tables:": "\u00cdndices y tablas:", "Last updated on %(last_updated)s.": "Actualizado por \u00faltima vez en %(last_updated)s.", "Library changes": "Cambios en la biblioteca", "Navigation": "Navegaci\u00f3n", "Next topic": "Pr\u00f3ximo tema", "Other changes": "Otros cambios", "Overview": "Resumen", "Permalink to this definition": "Enlazar permanentemente con esta definici\u00f3n", "Permalink to this headline": "Enlazar permanentemente con este t\u00edtulo", "Please activate JavaScript to enable the search\n functionality.": "Por favor, active JavaScript para habilitar la funcionalidad\n de b\u00fasqueda.", "Preparing search...": "Preparando b\u00fasqueda...", "Previous topic": "Tema anterior", "Quick search": "B\u00fasqueda r\u00e1pida", "Search": "B\u00fasqueda", "Search Page": "P\u00e1gina de B\u00fasqueda", "Search Results": "Resultados de la b\u00fasqueda", "Search finished, found %s page(s) matching the search query.": "B\u00fasqueda finalizada, encontr\u00f3 %s p\u00e1gina(s) acorde con la consulta de b\u00fasqueda.", "Search within %(docstitle)s": "Buscar en %(docstitle)s", "Searching": "Buscando", "Show Source": "Mostrar el c\u00f3digo", "Table Of Contents": "Tabla de Contenidos", "This Page": "Esta p\u00e1gina", "Welcome! This is": "\u00a1Bienvenido! Este es", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Su b\u00fasqueda no coincide con ning\u00fan documentos. Por favor, aseg\u00farese de que todas las palabras est\u00e9n correctamente escritas y que usted all\u00e1 seleccionado las suficientes categor\u00edas.", "all functions, classes, terms": "todas las funciones, clases, t\u00e9rminos", "can be huge": "puede ser muy grande", "last updated": "actualizado por \u00faltima vez el", "lists all sections and subsections": "muestra todas las secciones y subsecciones", "next chapter": "pr\u00f3ximo cap\u00edtulo", "previous chapter": "cap\u00edtulo anterior", "quick access to all modules": "acceso r\u00e1pido a todos los m\u00f3dulos", "search": "buscar", "search this documentation": "buscar en esta documentaci\u00f3n", "the documentation for": "la documentaci\u00f3n para"}, "plural_expr": "(n != 1)"}); \ No newline at end of file +Documentation.addTranslations({"locale": "es", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Derechos de autor</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Derechos de autor %(copyright)s.", ", in ": ", en ", "About these documents": "Sobre este documento", "Automatically generated list of changes in version %(version)s": "Lista de cambios generada autom\u00e1ticamente en la versi\u00f3n %(version)s", "C API changes": "Cambios en la API C", "Changes in Version %(version)s — %(docstitle)s": "Cambios en la versi\u00f3n %(version)s — %(docstitle)s", "Collapse sidebar": "Contraer barra lateral", "Complete Table of Contents": "\u00cdndice de contenidos completo", "Contents": "Contenidos", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Creado con <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Expandir barra lateral", "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.": "Este es el di\u00e1logo de b\u00fasqueda. Introduce los t\u00e9rminos en el\n di\u00e1logo siguiente y pulsa \"buscar\". Note que el asistente buscar\u00e1 \n autom\u00e1ticamente todas las palabras. Las p\u00e1ginas que contengan \n menos palabras no aparecer\u00e1n en la lista de resultados.", "Full index on one page": "\u00cdndice completo en una p\u00e1gina", "General Index": "\u00cdndice General", "Global Module Index": "\u00cdndice Global de M\u00f3dulos", "Go": "Ir a", "Hide Search Matches": "Ocultar coincidencias de la b\u00fasqueda", "Index": "\u00cdndice", "Index – %(key)s": "\u00cdndice – %(key)s", "Index pages by letter": "\u00cdndice alfab\u00e9tico de p\u00e1ginas", "Indices and tables:": "\u00cdndices y tablas:", "Last updated on %(last_updated)s.": "Actualizado por \u00faltima vez en %(last_updated)s.", "Library changes": "Cambios en la biblioteca", "Navigation": "Navegaci\u00f3n", "Next topic": "Pr\u00f3ximo tema", "Other changes": "Otros cambios", "Overview": "Resumen", "Permalink to this definition": "Enlazar permanentemente con esta definici\u00f3n", "Permalink to this headline": "Enlazar permanentemente con este t\u00edtulo", "Please activate JavaScript to enable the search\n functionality.": "Por favor, active JavaScript para habilitar la funcionalidad\n de b\u00fasqueda.", "Preparing search...": "Preparando b\u00fasqueda...", "Previous topic": "Tema anterior", "Quick search": "B\u00fasqueda r\u00e1pida", "Search": "B\u00fasqueda", "Search Page": "P\u00e1gina de B\u00fasqueda", "Search Results": "Resultados de la b\u00fasqueda", "Search finished, found %s page(s) matching the search query.": "B\u00fasqueda finalizada, encontr\u00f3 %s p\u00e1gina(s) acorde con la consulta de b\u00fasqueda.", "Search within %(docstitle)s": "Buscar en %(docstitle)s", "Searching": "Buscando", "Show Source": "Mostrar el c\u00f3digo", "Table Of Contents": "Tabla de Contenidos", "This Page": "Esta p\u00e1gina", "Welcome! This is": "\u00a1Bienvenido! Este es", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Su b\u00fasqueda no coincide con ning\u00fan documentos. Por favor, aseg\u00farese de que todas las palabras est\u00e9n correctamente escritas y que usted all\u00e1 seleccionado las suficientes categor\u00edas.", "all functions, classes, terms": "todas las funciones, clases, t\u00e9rminos", "can be huge": "puede ser muy grande", "last updated": "actualizado por \u00faltima vez el", "lists all sections and subsections": "muestra todas las secciones y subsecciones", "next chapter": "pr\u00f3ximo cap\u00edtulo", "previous chapter": "cap\u00edtulo anterior", "quick access to all modules": "acceso r\u00e1pido a todos los m\u00f3dulos", "search": "buscar", "search this documentation": "buscar en esta documentaci\u00f3n", "the documentation for": "la documentaci\u00f3n para"}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/locale/es/LC_MESSAGES/sphinx.mo b/sphinx/locale/es/LC_MESSAGES/sphinx.mo index a302dd1be5b1aef2f62490e7d0ca137f0f7e1735..25695ace2f5d93e9d331537c7dd28bb90091e618 100644 GIT binary patch delta 4037 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 delta 3546 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 O<Nlgg7+#WJ9PuaobD)?2 diff --git a/sphinx/locale/es/LC_MESSAGES/sphinx.po b/sphinx/locale/es/LC_MESSAGES/sphinx.po index 61baf6eb5..5a299a813 100644 --- a/sphinx/locale/es/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/es/LC_MESSAGES/sphinx.po @@ -5,65 +5,47 @@ # Translators: # Guillem Borrell <guillem@torroja.dmt.upm.es>, 2011 # Leonardo J. Caballero G. <leonardocaballero@gmail.com>, 2013-2016 +# Takeshi KOMIYA <i.tkomiya@gmail.com>, 2016 msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-14 14:54+0000\n" -"Last-Translator: Leonardo J. Caballero G. <leonardocaballero@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-12-03 05:17+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Spanish (http://www.transifex.com/sphinx-doc/sphinx-1/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "Sección %s" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "Figura %s" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "Tabla %s" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "Lista %s" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "documentación de %s - %s" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "ver %s" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "ver también %s" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "Símbolos" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python Enhancement Proposals; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "MMMM dd, YYYY" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "Funciones incorporadas" @@ -72,9 +54,12 @@ msgstr "Funciones incorporadas" msgid "Module level" msgstr "Nivel de módulo" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" -msgstr "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" +msgstr "%d de %B de %Y" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 msgid "General Index" @@ -84,18 +69,28 @@ msgstr "Índice General" msgid "index" msgstr "índice" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "siguiente" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "anterior" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "documentación de %s - %s" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr " (en " +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "Subtítulo inválido: %s" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "Autor de la sección: " @@ -112,23 +107,23 @@ msgstr "Código del autor: " msgid "Author: " msgstr "Autor: " -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Parámetros" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "Devuelve" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "Tipo del valor devuelto" @@ -157,12 +152,12 @@ msgstr "%s (tipo C)" msgid "%s (C variable)" msgstr "%s (variable C)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "función" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "miembro" @@ -170,7 +165,7 @@ msgstr "miembro" msgid "macro" msgstr "macro" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "tipo" @@ -178,63 +173,72 @@ msgstr "tipo" msgid "variable" msgstr "variable" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "Parametros de Plantilla" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "Lanzamientos" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (tipo C++)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "%s (concepto C++)" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (miembro C++)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (función C++)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (clase C++)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "%s (enum de C++)" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "%s (enumeración de C++)" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "clase" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "concepto" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "enum" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "enumeración" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (función incorporada)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (método de %s)" @@ -249,7 +253,7 @@ msgstr "%s() (clase)" msgid "%s (global variable or constant)" msgstr "%s (variable global o constante)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (atributo de %s)" @@ -258,116 +262,116 @@ msgstr "%s (atributo de %s)" msgid "Arguments" msgstr "Argumentos" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "dato" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "atributo" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "Variables" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "Muestra" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (en el módulo %s)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (variable incorporada)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (en el módulo %s)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (clase incorporada)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (clase en %s)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (método de %s.%s)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (método estático de %s.%s)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (método estático de %s)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "%s() (método de clase de %s.%s)" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "%s() (método de clase de %s)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (atributo de %s.%s)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (módulo)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "Índice de Módulos Python" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "módulos" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "Obsoleto" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "excepción" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "método" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "método de la clase" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "método estático" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "módulo" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr " (obsoleto)" @@ -389,120 +393,147 @@ msgstr "directiva" msgid "role" msgstr "rol" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "variables de entorno; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%sopción en línea de comandos; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "termino de glosario" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "gramática simbólica" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "etiqueta de referencia" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "variables de entorno" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "opción de programa" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "Índice" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "Índice de Módulos" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "Página de Búsqueda" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" -msgstr " Clases base: %s" +msgid "see %s" +msgstr "ver %s" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "ver también %s" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "Símbolos" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "Bases: %s" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "alias de :class:`%s`" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "[gráfica: %s]" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "[gráfica]" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "Enlace permanente a esta ecuación" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "(en %s versión %s)" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[fuente]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "etiqueta duplicada de la ecuación %s, otra instancia en %s" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "Por hacer" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "<<entrada original>>" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "(La <<entrada original>> se encuentra en %s, línea %d.)" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "entrada original" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[documentos]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "Código de módulo" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "<h1>Código fuente para %s</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "Resumen: código de modulo" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "<h1>Todos los módulos para los cuales disponen código</h1>" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "Argumentos de palabras clave" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "Atención" @@ -583,7 +614,7 @@ msgstr "función incorporada" msgid "Table Of Contents" msgstr "Tabla de Contenidos" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -641,15 +672,15 @@ msgstr "acceso rápido a todos los módulos" msgid "all functions, classes, terms" msgstr "todas las funciones, clases, términos" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Índice – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "Índice completo en una página" @@ -665,35 +696,35 @@ msgstr "puede ser muy grande" msgid "Navigation" msgstr "Navegación" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "Buscar en %(docstitle)s" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "Sobre este documento" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "Copyright" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\\\"%(path)s\\\">Copyright</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "© <a href=\"%(path)s\">Derechos de autor</a> %(copyright)s." -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Copyright %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "© Derechos de autor %(copyright)s." -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Actualizado por última vez en %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -742,13 +773,13 @@ msgstr "buscar" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "Resultados de la búsqueda" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -765,13 +796,13 @@ msgstr "Esta página" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "Cambios en la versión %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "Cambios en la versión %(version)s — %(docstitle)s" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "%(filename)s — %(docstitle)s" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -790,12 +821,13 @@ msgstr "Cambios en la API C" msgid "Other changes" msgstr "Otros cambios" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "Enlazar permanentemente con este título" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "Enlazar permanentemente con esta definición" @@ -811,12 +843,12 @@ msgstr "Buscando" msgid "Preparing search..." msgstr "Preparando búsqueda..." -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "Búsqueda finalizada, encontró %s página(s) acorde con la consulta de búsqueda." -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr ", en " @@ -833,48 +865,53 @@ msgstr "Contraer barra lateral" msgid "Contents" msgstr "Contenidos" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "Enlace permanente a este código fuente" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "Enlace permanente a esta imagen" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "Enlace permanente a la tabla de contenidos" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "Enlace permanente a esta tabla" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" -msgstr "Publicación" +msgstr "Versión" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "página" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "Clave de configuración desconocida: latex_elements[%r] se ignoran." + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "Notas a pie de página" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "proviene de la página anterior" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "Continúa en la página siguiente" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "[imagen: %s]" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[imagen]" diff --git a/sphinx/locale/et/LC_MESSAGES/sphinx.js b/sphinx/locale/et/LC_MESSAGES/sphinx.js index a5dd685dc..fb677939f 100644 --- a/sphinx/locale/et/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/et/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "et", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Autori\u00f5igus</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Autori\u00f5igused %(copyright)s.", ", in ": "", "About these documents": "Info selle dokumentatsiooni kohta", "Automatically generated list of changes in version %(version)s": "Automaatselt genereeritud nimekiri versiooni %(version)s muutustest", "C API changes": "C API muutused", "Changes in Version %(version)s — %(docstitle)s": "Muutused versioonis %(version)s — %(docstitle)s", "Collapse sidebar": "Varja k\u00fclgriba", "Complete Table of Contents": "T\u00e4ielik sisukord", "Contents": "Sisukord", "Copyright": "Autori\u00f5igus", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Loodud <a href=\"http://sphinx-doc.org/\">Sphinxiga</a> (versioon: %(sphinx_version)s).", "Expand sidebar": "N\u00e4ita k\u00fclgriba", "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.": "Selle vormi abil saab otsida k\u00e4esolevast dokumentatsioonist. Sisesta allolevasse lahtrisse otsis\u00f5nad ning kl\u00f5psa \"Otsi\". Tasub t\u00e4hele panna, et otsingu tulemuses kuvatakse k\u00f5iki otsis\u00f5nasid sisaldavaid lehti.", "Full index on one page": "T\u00e4isindeks \u00fchel lehel", "General Index": "\u00dcldindeks", "Global Module Index": "Globaalne moodulite indeks", "Go": "Otsi", "Hide Search Matches": "Varja otsingu tulemused", "Index": "Indeks", "Index – %(key)s": "Indeks – %(key)s", "Index pages by letter": "Indeksi lehek\u00fcljed algust\u00e4he kaupa", "Indices and tables:": "Indeksid ja tabelid", "Last updated on %(last_updated)s.": "Viimati uuendatud %(last_updated)s.", "Library changes": "Teegi muutused", "Navigation": "Navigatsioon", "Next topic": "J\u00e4rgmine teema", "Other changes": "\u00dclej\u00e4\u00e4nud muutused", "Overview": "\u00dclevaade", "Permalink to this definition": "P\u00fcsiviit sellele definitsioonile", "Permalink to this headline": "P\u00fcsiviit sellele pealkirjale", "Please activate JavaScript to enable the search\n functionality.": "Otsingu v\u00f5imaldamiseks tuleb aktiveerida JavaScript.", "Preparing search...": "Otsingu ettevalmistamine...", "Previous topic": "Eelmine teema", "Quick search": "Kiirotsing", "Search": "Otsing", "Search Page": "Otsinguleht", "Search Results": "Otsingu tulemused", "Search finished, found %s page(s) matching the search query.": "Otsingu tulemusena leiti %s leht(e).", "Search within %(docstitle)s": "Otsi %(docstitle)s piires", "Searching": "Otsimine", "Show Source": "N\u00e4ita l\u00e4htekoodi", "Table Of Contents": "Sisukord", "This Page": "K\u00e4esolev leht", "Welcome! This is": "Tervitused! See on", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Sinu otsingule ei vastanud \u00fckski dokument. Palun veendu, et k\u00f5ik sisestatud s\u00f5nad on \u00f5igesti kirjutatud ja sa oled valikud piisaval hulgal kategooriaid.", "all functions, classes, terms": "k\u00f5ik funktsioonid, klassid ja terminid", "can be huge": "v\u00f5ib olla v\u00e4ga suur", "last updated": "viimati uuendatud", "lists all sections and subsections": "toob v\u00e4lja k\u00f5ik sektsioonid ja alamsektsioonid", "next chapter": "j\u00e4rgmine jaotis", "previous chapter": "eelmine jaotis", "quick access to all modules": "kiire ligip\u00e4\u00e4s k\u00f5igile moodulitele", "search": "otsi", "search this documentation": "otsi sellest dokumentatsioonist", "the documentation for": "dokumentatsioon projektile"}, "plural_expr": "(n != 1)"}); \ No newline at end of file +Documentation.addTranslations({"locale": "et", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "Info selle dokumentatsiooni kohta", "Automatically generated list of changes in version %(version)s": "Automaatselt genereeritud nimekiri versiooni %(version)s muutustest", "C API changes": "C API muutused", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "Varja k\u00fclgriba", "Complete Table of Contents": "T\u00e4ielik sisukord", "Contents": "Sisukord", "Copyright": "Autori\u00f5igus", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Loodud <a href=\"http://sphinx-doc.org/\">Sphinxiga</a> (versioon: %(sphinx_version)s).", "Expand sidebar": "N\u00e4ita k\u00fclgriba", "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.": "Selle vormi abil saab otsida k\u00e4esolevast dokumentatsioonist. Sisesta allolevasse lahtrisse otsis\u00f5nad ning kl\u00f5psa \"Otsi\". Tasub t\u00e4hele panna, et otsingu tulemuses kuvatakse k\u00f5iki otsis\u00f5nasid sisaldavaid lehti.", "Full index on one page": "T\u00e4isindeks \u00fchel lehel", "General Index": "\u00dcldindeks", "Global Module Index": "Globaalne moodulite indeks", "Go": "Otsi", "Hide Search Matches": "Varja otsingu tulemused", "Index": "Indeks", "Index – %(key)s": "Indeks – %(key)s", "Index pages by letter": "Indeksi lehek\u00fcljed algust\u00e4he kaupa", "Indices and tables:": "Indeksid ja tabelid", "Last updated on %(last_updated)s.": "Viimati uuendatud %(last_updated)s.", "Library changes": "Teegi muutused", "Navigation": "Navigatsioon", "Next topic": "J\u00e4rgmine teema", "Other changes": "\u00dclej\u00e4\u00e4nud muutused", "Overview": "\u00dclevaade", "Permalink to this definition": "P\u00fcsiviit sellele definitsioonile", "Permalink to this headline": "P\u00fcsiviit sellele pealkirjale", "Please activate JavaScript to enable the search\n functionality.": "Otsingu v\u00f5imaldamiseks tuleb aktiveerida JavaScript.", "Preparing search...": "Otsingu ettevalmistamine...", "Previous topic": "Eelmine teema", "Quick search": "Kiirotsing", "Search": "Otsing", "Search Page": "Otsinguleht", "Search Results": "Otsingu tulemused", "Search finished, found %s page(s) matching the search query.": "Otsingu tulemusena leiti %s leht(e).", "Search within %(docstitle)s": "Otsi %(docstitle)s piires", "Searching": "Otsimine", "Show Source": "N\u00e4ita l\u00e4htekoodi", "Table Of Contents": "Sisukord", "This Page": "K\u00e4esolev leht", "Welcome! This is": "Tervitused! See on", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Sinu otsingule ei vastanud \u00fckski dokument. Palun veendu, et k\u00f5ik sisestatud s\u00f5nad on \u00f5igesti kirjutatud ja sa oled valikud piisaval hulgal kategooriaid.", "all functions, classes, terms": "k\u00f5ik funktsioonid, klassid ja terminid", "can be huge": "v\u00f5ib olla v\u00e4ga suur", "last updated": "viimati uuendatud", "lists all sections and subsections": "toob v\u00e4lja k\u00f5ik sektsioonid ja alamsektsioonid", "next chapter": "j\u00e4rgmine jaotis", "previous chapter": "eelmine jaotis", "quick access to all modules": "kiire ligip\u00e4\u00e4s k\u00f5igile moodulitele", "search": "otsi", "search this documentation": "otsi sellest dokumentatsioonist", "the documentation for": "dokumentatsioon projektile"}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/locale/et/LC_MESSAGES/sphinx.mo b/sphinx/locale/et/LC_MESSAGES/sphinx.mo index b6bb3aef2e406f851f50b4fb89127ce9e2131aef..a51fd68728d165ec70f6a1006d474146f3fe8b51 100644 GIT binary patch delta 4012 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 delta 3631 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 diff --git a/sphinx/locale/et/LC_MESSAGES/sphinx.po b/sphinx/locale/et/LC_MESSAGES/sphinx.po index 58273dca9..808050486 100644 --- a/sphinx/locale/et/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/et/LC_MESSAGES/sphinx.po @@ -5,67 +5,48 @@ # Translators: # Aivar Annamaa <aivar.annamaa@gmail.com>, 2011 # Ivar Smolin <okul at linux ee>, 2012 -# Ivar Smolin <okul@linux.ee>, 2013-2015 +# Ivar Smolin <okul@linux.ee>, 2013-2016 # Luc Saffre <luc.saffre@gmail.com>, 2015 msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Estonian (http://www.transifex.com/sphinx-doc/sphinx-1/language/et/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: et\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "Joonis %s" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "Tabel %s" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "Nimekiri %s" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "%s %s dokumentatsioon" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "vaata %s" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "vaata ka %s" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "Sümbolid" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Pythoni täiustusettepanekud; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "Sisseehitatud" @@ -74,8 +55,11 @@ msgstr "Sisseehitatud" msgid "Module level" msgstr "Mooduli tase" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -86,18 +70,28 @@ msgstr "Üldindeks" msgid "index" msgstr "indeks" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "järgmine" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "eelmine" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s dokumentatsioon" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr " (pealkirjas " +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "Sektsiooni autor:" @@ -114,23 +108,23 @@ msgstr "Koodi autor:" msgid "Author: " msgstr "Autor: " -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Parameetrid" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "Tagastab" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "Tagastustüüp" @@ -159,12 +153,12 @@ msgstr "%s (C tüüp)" msgid "%s (C variable)" msgstr "%s (C muutuja)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "funktsioon" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "liige" @@ -172,7 +166,7 @@ msgstr "liige" msgid "macro" msgstr "makro" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "tüüp" @@ -180,63 +174,72 @@ msgstr "tüüp" msgid "variable" msgstr "muutuja" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" -msgstr "" +msgstr "Malli parameetrid" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (C++ tüüp)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (C++ liige)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (C++ funktsioon)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (C++ klass)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "klass" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (sisseehitatud funktsioon)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (%s meetod)" @@ -251,7 +254,7 @@ msgstr "%s() (klass)" msgid "%s (global variable or constant)" msgstr "%s (globaalmuutuja või konstant)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (%s atribuut)" @@ -260,116 +263,116 @@ msgstr "%s (%s atribuut)" msgid "Arguments" msgstr "Argumendid" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "andmed" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "atribuut" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "Muutujad" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (moodulis %s)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (sisseehitatud muutuja)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (moodulis %s)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (sisseehitatud klass)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (klass moodulis %s)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (%s.%s meetod)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (%s.%s staatiline meetod)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (%s staatiline meetod)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "%s() (klassi %s.%s meetod)" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "%s() (klassi %s meetod)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (%s.%s atribuut)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (moodul)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "Pythoni moodulite indeks" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "moodulid" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "Iganenud" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "erind" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "meetod" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "klassi meetod" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "staatiline meetod" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "moodul" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr " (iganenud)" @@ -391,120 +394,147 @@ msgstr "direktiiv" msgid "role" msgstr "roll" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "keskkonnamuutuja; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%s käsurea valik; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "sõnastiku termin" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "grammatika märk" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "viite pealkiri" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "keskkonnamuutuja" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "programmi valik" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "Indeks" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "Mooduli indeks" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "Otsinguleht" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" -msgstr " Pärineb: %s" +msgid "see %s" +msgstr "vaata %s" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "vaata ka %s" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "Sümbolid" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "klassi :class:`%s` sünonüüm" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "[joonis: %s]" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "[joonis]" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[lähtekood]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "Teha" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" -msgstr "" +msgstr "<<algne kirje>>" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" -msgstr "" +msgstr "(<<algne kirje>> asub %s, real %d.)" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "algne kirje" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[dokumentatsioon]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "Mooduli kood" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "<h1>%s lähtekood</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "Ülevaade: mooduli kood" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "<h1>Kõik lähtekoodiga moodulid</h1>" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "Tähelepanu" @@ -585,7 +615,7 @@ msgstr "sisseehitatud funktsioon" msgid "Table Of Contents" msgstr "Sisukord" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -643,15 +673,15 @@ msgstr "kiire ligipääs kõigile moodulitele" msgid "all functions, classes, terms" msgstr "kõik funktsioonid, klassid ja terminid" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Indeks – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "Täisindeks ühel lehel" @@ -667,35 +697,35 @@ msgstr "võib olla väga suur" msgid "Navigation" msgstr "Navigatsioon" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "Otsi %(docstitle)s piires" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "Info selle dokumentatsiooni kohta" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "Autoriõigus" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">Autoriõigus</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Autoriõigused %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Viimati uuendatud %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -744,13 +774,13 @@ msgstr "otsi" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "Otsingu tulemused" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -767,13 +797,13 @@ msgstr "Käesolev leht" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "Muutused versioonis %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -792,12 +822,13 @@ msgstr "C API muutused" msgid "Other changes" msgstr "Ülejäänud muutused" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "Püsiviit sellele pealkirjale" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "Püsiviit sellele definitsioonile" @@ -813,12 +844,12 @@ msgstr "Otsimine" msgid "Preparing search..." msgstr "Otsingu ettevalmistamine..." -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "Otsingu tulemusena leiti %s leht(e)." -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr "" @@ -835,48 +866,53 @@ msgstr "Varja külgriba" msgid "Contents" msgstr "Sisukord" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "Püsiviit sellele programmikoodile" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "Püsiviit sellele pildile" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "Püsiviit sellele tabelile" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "Redaktsioon" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" +msgstr "lehekülg" + +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "Joonealused märkused" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "jätk eelmisele leheküljele" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "Jätkub järgmisel lehel" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "[pilt: %s]" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[pilt]" diff --git a/sphinx/locale/eu/LC_MESSAGES/sphinx.js b/sphinx/locale/eu/LC_MESSAGES/sphinx.js index 0e5944082..1b09f2fc4 100644 --- a/sphinx/locale/eu/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/eu/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "eu", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": "", "About these documents": "Dokumentu hauen inguruan", "Automatically generated list of changes in version %(version)s": "Automatikoki sortutako %(version)s bertsioaren aldaketen zerrenda", "C API changes": "C API aldaketak", "Changes in Version %(version)s — %(docstitle)s": "%(version)s bertsioko aldaketak — %(docstitle)s", "Collapse sidebar": "Alboko barra tolestu", "Complete Table of Contents": "Eduki taula osoa", "Contents": "Edukiak", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "<a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s erabiliz sortutakoa.", "Expand sidebar": "Alboko barra luzatu", "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.": "Honekin dokumentu hauetan bilatu dezakezu. Sartu zure bilaketa hitzak\nondoko kutxan eta \"bilatu\" sakatu. Kontutan eduki bilaketa funtzioak\nhitz guztiak bilatuko dituela. Hitz gutxiago dituzten orriak ez dira \nemaitzen zerrendan agertuko.", "Full index on one page": "Indize guztia orri batean", "General Index": "Indize orokorra", "Global Module Index": "Modulu indize globala", "Go": "Joan", "Hide Search Matches": "Bilaketa bat-etortzeak ezkutatu", "Index": "Indizea", "Index – %(key)s": "Indizea – %(key)s", "Index pages by letter": "Indize orriak hizkika", "Indices and tables:": "Indizeak eta taulak:", "Last updated on %(last_updated)s.": "Azken aldaketa: %(last_updated)s.", "Library changes": "Liburutegi aldaketak", "Navigation": "Nabigazioa", "Next topic": "Hurrengo gaia", "Other changes": "Beste aldaketak", "Overview": "Gainbegirada", "Permalink to this definition": "Definizio honetarako esteka iraunkorra", "Permalink to this headline": "Goiburu honetarako esteka iraunkorra", "Please activate JavaScript to enable the search\n functionality.": "Mesedez, gaitu JavaScript-a bilaketa erabili ahal izateko.", "Preparing search...": "", "Previous topic": "Aurreko gaia", "Quick search": "Bilaketa azkarra", "Search": "Bilatu", "Search Page": "Bilaketa orria", "Search Results": "Bilaketa emaitzak", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "Bilatu %(docstitle)s(e)n", "Searching": "", "Show Source": "Iturburua ikusi", "Table Of Contents": "Eduki taula", "This Page": "Orri hau", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "funtzio, klase, termino guztiak", "can be huge": "handia izan daiteke", "last updated": "", "lists all sections and subsections": "atal eta azpiatal guztiak zerrendatu", "next chapter": "hurrengo kapitulua", "previous chapter": "aurreko kapitulua", "quick access to all modules": "modulu guztietara atzipen azkarra", "search": "bilatu", "search this documentation": "dokumentazio honetan bilatu", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file +Documentation.addTranslations({"locale": "eu", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "Dokumentu hauen inguruan", "Automatically generated list of changes in version %(version)s": "Automatikoki sortutako %(version)s bertsioaren aldaketen zerrenda", "C API changes": "C API aldaketak", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "Alboko barra tolestu", "Complete Table of Contents": "Eduki taula osoa", "Contents": "Edukiak", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "<a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s erabiliz sortutakoa.", "Expand sidebar": "Alboko barra luzatu", "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.": "Honekin dokumentu hauetan bilatu dezakezu. Sartu zure bilaketa hitzak\nondoko kutxan eta \"bilatu\" sakatu. Kontutan eduki bilaketa funtzioak\nhitz guztiak bilatuko dituela. Hitz gutxiago dituzten orriak ez dira \nemaitzen zerrendan agertuko.", "Full index on one page": "Indize guztia orri batean", "General Index": "Indize orokorra", "Global Module Index": "Modulu indize globala", "Go": "Joan", "Hide Search Matches": "Bilaketa bat-etortzeak ezkutatu", "Index": "Indizea", "Index – %(key)s": "Indizea – %(key)s", "Index pages by letter": "Indize orriak hizkika", "Indices and tables:": "Indizeak eta taulak:", "Last updated on %(last_updated)s.": "Azken aldaketa: %(last_updated)s.", "Library changes": "Liburutegi aldaketak", "Navigation": "Nabigazioa", "Next topic": "Hurrengo gaia", "Other changes": "Beste aldaketak", "Overview": "Gainbegirada", "Permalink to this definition": "Definizio honetarako esteka iraunkorra", "Permalink to this headline": "Goiburu honetarako esteka iraunkorra", "Please activate JavaScript to enable the search\n functionality.": "Mesedez, gaitu JavaScript-a bilaketa erabili ahal izateko.", "Preparing search...": "", "Previous topic": "Aurreko gaia", "Quick search": "Bilaketa azkarra", "Search": "Bilatu", "Search Page": "Bilaketa orria", "Search Results": "Bilaketa emaitzak", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "Bilatu %(docstitle)s(e)n", "Searching": "", "Show Source": "Iturburua ikusi", "Table Of Contents": "Eduki taula", "This Page": "Orri hau", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "funtzio, klase, termino guztiak", "can be huge": "handia izan daiteke", "last updated": "", "lists all sections and subsections": "atal eta azpiatal guztiak zerrendatu", "next chapter": "hurrengo kapitulua", "previous chapter": "aurreko kapitulua", "quick access to all modules": "modulu guztietara atzipen azkarra", "search": "bilatu", "search this documentation": "dokumentazio honetan bilatu", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/locale/eu/LC_MESSAGES/sphinx.mo b/sphinx/locale/eu/LC_MESSAGES/sphinx.mo index 54d6bc63aebe91a7bc8629367bcd52bc0a0f7e50..e9a9602099b94e4920607abf0d32a536e7f95f9b 100644 GIT binary patch delta 3908 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 HCTIN*98me^ delta 3522 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 diff --git a/sphinx/locale/eu/LC_MESSAGES/sphinx.po b/sphinx/locale/eu/LC_MESSAGES/sphinx.po index c1c1fb187..c7842d173 100644 --- a/sphinx/locale/eu/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/eu/LC_MESSAGES/sphinx.po @@ -8,61 +8,42 @@ msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Basque (http://www.transifex.com/sphinx-doc/sphinx-1/language/eu/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: eu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "%s %s dokumentazioa" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "%s ikusi" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "ikusi %s baita ere" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python Hobekuntza Proposamena; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "" @@ -71,8 +52,11 @@ msgstr "" msgid "Module level" msgstr "Modulu maila" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -83,18 +67,28 @@ msgstr "Indize orokorra" msgid "index" msgstr "indizea" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "hurrengoa" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "aurrekoa" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s dokumentazioa" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr " (hemen: " +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "Atalaren egilea: " @@ -111,23 +105,23 @@ msgstr "Kodearen egilea: " msgid "Author: " msgstr "Egilea:" -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Parametroak" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "Itzultzen du" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "Itzulketa mota" @@ -156,12 +150,12 @@ msgstr "%s (C mota)" msgid "%s (C variable)" msgstr "%s (C aldagaia)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "funtzioa" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "partaidea" @@ -169,7 +163,7 @@ msgstr "partaidea" msgid "macro" msgstr "makroa" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "mota" @@ -177,63 +171,72 @@ msgstr "mota" msgid "variable" msgstr "aldagaia" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "Jaurtitzen du" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (C++ mota)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (C++ partaidea)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (C++ funtzioa)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (C++ klasea)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "klasea" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (%s metodoa)" @@ -248,7 +251,7 @@ msgstr "%s() (klasea)" msgid "%s (global variable or constant)" msgstr "%s (aldagai globala edo konstantea)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (%s atributua)" @@ -257,116 +260,116 @@ msgstr "%s (%s atributua)" msgid "Arguments" msgstr "Argumentuak" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "datuak" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "atributua" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "Aldagaiak" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "Goratzen du" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (%s moduluan)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (%s moduluan)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (klasea %s-(e)n)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (%s.%s metodoa)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (%s.%s metodo estatikoa)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (%s metodo estatikoa)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "%s() (%s.%s klaseko metodoa)" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "%s() (%s klaseko metodoa)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (%s.%s atributua)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (modulua)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "Python moduluen indizea" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "moduluak" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "Zaharkitua" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "salbuespena" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "metodoa" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "klaseko metodoa" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "metodo estatikoa" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "modulua" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr " (zaharkitua)" @@ -388,120 +391,147 @@ msgstr "" msgid "role" msgstr "rola" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "inguruneko aldagaia; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%skomando lerroko aukera; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "glosarioko terminoa" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "gramatikako token-a" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "erreferentzia etiketa" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "inguruneko aldagaia" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "programako aukera" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "Indizea" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "Moduluen indizea" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "Bilaketa orria" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" +msgid "see %s" +msgstr "%s ikusi" + +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "ikusi %s baita ere" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" msgstr "" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[iturburua]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "Egitekoa" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "jatorrizko sarrera" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[dokumentazioa]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "Moduluko kodea" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "<h1>%s(r)en iturburu kodea</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "Gainbegirada: moduluko kodea" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "<h1>Kodea eskuragarri duten modulu guztiak</h1>" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "Adi" @@ -582,7 +612,7 @@ msgstr "" msgid "Table Of Contents" msgstr "Eduki taula" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -640,15 +670,15 @@ msgstr "modulu guztietara atzipen azkarra" msgid "all functions, classes, terms" msgstr "funtzio, klase, termino guztiak" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Indizea – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "Indize guztia orri batean" @@ -664,35 +694,35 @@ msgstr "handia izan daiteke" msgid "Navigation" msgstr "Nabigazioa" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "Bilatu %(docstitle)s(e)n" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "Dokumentu hauen inguruan" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "Copyright" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Copyright %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Azken aldaketa: %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -741,13 +771,13 @@ msgstr "bilatu" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "Bilaketa emaitzak" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -764,13 +794,13 @@ msgstr "Orri hau" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "%(version)s bertsioko aldaketak — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -789,12 +819,13 @@ msgstr "C API aldaketak" msgid "Other changes" msgstr "Beste aldaketak" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "Goiburu honetarako esteka iraunkorra" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "Definizio honetarako esteka iraunkorra" @@ -810,12 +841,12 @@ msgstr "" msgid "Preparing search..." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr "" @@ -832,48 +863,53 @@ msgstr "Alboko barra tolestu" msgid "Contents" msgstr "Edukiak" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "Argitalpena" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "Oin-oharrak" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "aurreko orritik jarraitzen du" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "Hurrengo orrian jarraitzen du" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[irudia]" diff --git a/sphinx/locale/fa/LC_MESSAGES/sphinx.js b/sphinx/locale/fa/LC_MESSAGES/sphinx.js index 7ac8d7cdf..e9cc917b8 100644 --- a/sphinx/locale/fa/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/fa/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "fa", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "\u062f\u0631\u0628\u0627\u0631\u0647 \u0627\u06cc\u0646 \u0645\u0633\u062a\u0646\u062f\u0627\u062a", "Automatically generated list of changes in version %(version)s": "\u0644\u06cc\u0633\u062a \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0627\u0632 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u062f\u0631 \u0646\u0633\u062e\u0647 %(version)s", "C API changes": "C API \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a", "Changes in Version %(version)s — %(docstitle)s": "\u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u062f\u0631 \u0646\u0633\u062e\u0647 %(version)s — %(docstitle)s", "Collapse sidebar": "", "Complete Table of Contents": "\u0641\u0647\u0631\u0633\u062a \u06a9\u0627\u0645\u0644 \u0645\u0637\u0627\u0644\u0628", "Contents": "", "Copyright": "\u06a9\u067e\u06cc \u0631\u0627\u06cc\u062a", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": ". <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0628\u0627", "Expand 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.": "", "Full index on one page": "\u0641\u0647\u0631\u0633\u062a \u06a9\u0627\u0645\u0644 \u062f\u0631 \u06cc\u06a9 \u0635\u0641\u062d\u0647", "General Index": "\u0641\u0647\u0631\u0633\u062a \u06a9\u0644\u06cc", "Global Module Index": "\u0641\u0647\u0631\u0633\u062a \u06a9\u0644\u06cc \u0645\u0627\u0698\u0648\u0644 \u0647\u0627", "Go": "\u0628\u0631\u0648", "Hide Search Matches": "\u0639\u062f\u0645 \u0646\u0645\u0627\u06cc\u0634 \u0646\u062a\u0627\u06cc\u062c \u06cc\u0627\u0641\u062a \u0634\u062f\u0647", "Index": "\u0641\u0647\u0631\u0633\u062a", "Index – %(key)s": "\u0641\u0647\u0631\u0633\u062a – %(key)s", "Index pages by letter": "\u0641\u0647\u0631\u0633\u062a \u0635\u0641\u062d\u0627\u062a \u0628\u0631 \u0627\u0633\u0627\u0633 \u062d\u0631\u0648\u0641", "Indices and tables:": "\u0627\u06cc\u0646\u062f\u06a9\u0633 \u0647\u0627 \u0648 \u062c\u062f\u0627\u0648\u0644:", "Last updated on %(last_updated)s.": ". %(last_updated)s \u0622\u062e\u0631\u06cc\u0646 \u0628\u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u062f\u0631", "Library changes": "\u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0627\u06cc\u06cc", "Navigation": "\u0646\u0627\u0648\u0628\u0631\u06cc", "Next topic": "\u0645\u0648\u0636\u0648\u0639 \u0628\u0639\u062f\u06cc", "Other changes": "\u062f\u06af\u0631 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a", "Overview": "\u0628\u0631\u0631\u0633\u06cc \u0627\u062c\u0645\u0627\u0644\u06cc", "Permalink to this definition": "\u0644\u06cc\u0646\u06a9 \u062b\u0627\u0628\u062a \u0628\u0647 \u0627\u06cc\u0646 \u062a\u0639\u0631\u06cc\u0641", "Permalink to this headline": "\u0644\u06cc\u0646\u06a9 \u062b\u0627\u0628\u062a \u0628\u0647 \u0627\u06cc\u0646 \u0633\u0631 \u0645\u0642\u0627\u0644\u0647", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "", "Previous topic": "\u0645\u0648\u0636\u0648\u0639 \u0642\u0628\u0644\u06cc", "Quick search": "\u062c\u0633\u062a\u062c\u0648 \u0633\u0631\u06cc\u0639", "Search": "\u062c\u0633\u062a\u062c\u0648", "Search Page": "\u0635\u0641\u062d\u0647 \u062c\u0633\u062a\u062c\u0648", "Search Results": "\u0646\u062a\u0627\u06cc\u062c \u062c\u0633\u062a\u062c\u0648", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "\u062c\u0633\u062a\u062c\u0648 \u062f\u0631 %(docstitle)s", "Searching": "", "Show Source": "\u0646\u0645\u0627\u06cc\u0634 \u0633\u0648\u0631\u0633", "Table Of Contents": "\u0641\u0647\u0631\u0633\u062a \u0639\u0646\u0627\u0648\u06cc\u0646", "This Page": "\u0635\u0641\u062d\u0647 \u0641\u0639\u0644\u06cc", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "\u062a\u0645\u0627\u0645\u06cc \u062a\u0648\u0627\u0628\u0639 \u060c \u06a9\u0644\u0627\u0633 \u0647\u0627 \u060c \u0627\u0635\u0637\u0644\u0627\u062d\u0627\u062a", "can be huge": "", "last updated": "", "lists all sections and subsections": "\u0641\u0647\u0631\u0633\u062a \u062a\u0645\u0627\u0645\u06cc \u0628\u062e\u0634 \u0647\u0627 \u0648 \u0632\u06cc\u0631 \u0645\u062c\u0645\u0648\u0639\u0647 \u0647\u0627", "next chapter": "\u0641\u0635\u0644 \u0628\u0639\u062f\u06cc", "previous chapter": "\u0641\u0635\u0644 \u0642\u0628\u0644\u06cc", "quick access to all modules": "\u062f\u0633\u062a\u0631\u0633\u06cc \u0633\u0631\u06cc\u0639 \u0628\u0647 \u062a\u0645\u0627\u0645\u06cc \u0645\u062a\u062f\u0647\u0627", "search": "\u062c\u0633\u062a\u062c\u0648", "search this documentation": "\u062c\u0633\u062a\u062c\u0648 \u062f\u0631 \u0627\u06cc\u0646 \u0627\u0633\u0646\u0627\u062f", "the documentation for": ""}, "plural_expr": "0"}); \ No newline at end of file +Documentation.addTranslations({"locale": "fa", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "\u062f\u0631\u0628\u0627\u0631\u0647 \u0627\u06cc\u0646 \u0645\u0633\u062a\u0646\u062f\u0627\u062a", "Automatically generated list of changes in version %(version)s": "\u0644\u06cc\u0633\u062a \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0627\u0632 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u062f\u0631 \u0646\u0633\u062e\u0647 %(version)s", "C API changes": "C API \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "\u0641\u0647\u0631\u0633\u062a \u06a9\u0627\u0645\u0644 \u0645\u0637\u0627\u0644\u0628", "Contents": "", "Copyright": "\u06a9\u067e\u06cc \u0631\u0627\u06cc\u062a", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": ". <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0628\u0627", "Expand 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.": "", "Full index on one page": "\u0641\u0647\u0631\u0633\u062a \u06a9\u0627\u0645\u0644 \u062f\u0631 \u06cc\u06a9 \u0635\u0641\u062d\u0647", "General Index": "\u0641\u0647\u0631\u0633\u062a \u06a9\u0644\u06cc", "Global Module Index": "\u0641\u0647\u0631\u0633\u062a \u06a9\u0644\u06cc \u0645\u0627\u0698\u0648\u0644 \u0647\u0627", "Go": "\u0628\u0631\u0648", "Hide Search Matches": "\u0639\u062f\u0645 \u0646\u0645\u0627\u06cc\u0634 \u0646\u062a\u0627\u06cc\u062c \u06cc\u0627\u0641\u062a \u0634\u062f\u0647", "Index": "\u0641\u0647\u0631\u0633\u062a", "Index – %(key)s": "\u0641\u0647\u0631\u0633\u062a – %(key)s", "Index pages by letter": "\u0641\u0647\u0631\u0633\u062a \u0635\u0641\u062d\u0627\u062a \u0628\u0631 \u0627\u0633\u0627\u0633 \u062d\u0631\u0648\u0641", "Indices and tables:": "\u0627\u06cc\u0646\u062f\u06a9\u0633 \u0647\u0627 \u0648 \u062c\u062f\u0627\u0648\u0644:", "Last updated on %(last_updated)s.": ". %(last_updated)s \u0622\u062e\u0631\u06cc\u0646 \u0628\u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u062f\u0631", "Library changes": "\u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0627\u06cc\u06cc", "Navigation": "\u0646\u0627\u0648\u0628\u0631\u06cc", "Next topic": "\u0645\u0648\u0636\u0648\u0639 \u0628\u0639\u062f\u06cc", "Other changes": "\u062f\u06af\u0631 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a", "Overview": "\u0628\u0631\u0631\u0633\u06cc \u0627\u062c\u0645\u0627\u0644\u06cc", "Permalink to this definition": "\u0644\u06cc\u0646\u06a9 \u062b\u0627\u0628\u062a \u0628\u0647 \u0627\u06cc\u0646 \u062a\u0639\u0631\u06cc\u0641", "Permalink to this headline": "\u0644\u06cc\u0646\u06a9 \u062b\u0627\u0628\u062a \u0628\u0647 \u0627\u06cc\u0646 \u0633\u0631 \u0645\u0642\u0627\u0644\u0647", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "", "Previous topic": "\u0645\u0648\u0636\u0648\u0639 \u0642\u0628\u0644\u06cc", "Quick search": "\u062c\u0633\u062a\u062c\u0648 \u0633\u0631\u06cc\u0639", "Search": "\u062c\u0633\u062a\u062c\u0648", "Search Page": "\u0635\u0641\u062d\u0647 \u062c\u0633\u062a\u062c\u0648", "Search Results": "\u0646\u062a\u0627\u06cc\u062c \u062c\u0633\u062a\u062c\u0648", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "\u062c\u0633\u062a\u062c\u0648 \u062f\u0631 %(docstitle)s", "Searching": "", "Show Source": "\u0646\u0645\u0627\u06cc\u0634 \u0633\u0648\u0631\u0633", "Table Of Contents": "\u0641\u0647\u0631\u0633\u062a \u0639\u0646\u0627\u0648\u06cc\u0646", "This Page": "\u0635\u0641\u062d\u0647 \u0641\u0639\u0644\u06cc", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "\u062a\u0645\u0627\u0645\u06cc \u062a\u0648\u0627\u0628\u0639 \u060c \u06a9\u0644\u0627\u0633 \u0647\u0627 \u060c \u0627\u0635\u0637\u0644\u0627\u062d\u0627\u062a", "can be huge": "", "last updated": "", "lists all sections and subsections": "\u0641\u0647\u0631\u0633\u062a \u062a\u0645\u0627\u0645\u06cc \u0628\u062e\u0634 \u0647\u0627 \u0648 \u0632\u06cc\u0631 \u0645\u062c\u0645\u0648\u0639\u0647 \u0647\u0627", "next chapter": "\u0641\u0635\u0644 \u0628\u0639\u062f\u06cc", "previous chapter": "\u0641\u0635\u0644 \u0642\u0628\u0644\u06cc", "quick access to all modules": "\u062f\u0633\u062a\u0631\u0633\u06cc \u0633\u0631\u06cc\u0639 \u0628\u0647 \u062a\u0645\u0627\u0645\u06cc \u0645\u062a\u062f\u0647\u0627", "search": "\u062c\u0633\u062a\u062c\u0648", "search this documentation": "\u062c\u0633\u062a\u062c\u0648 \u062f\u0631 \u0627\u06cc\u0646 \u0627\u0633\u0646\u0627\u062f", "the documentation for": ""}, "plural_expr": "0"}); \ No newline at end of file diff --git a/sphinx/locale/fa/LC_MESSAGES/sphinx.mo b/sphinx/locale/fa/LC_MESSAGES/sphinx.mo index 529fbde077406c4e7a087bb74e206ec659ce9ebb..04aa8bcb8b13e19bde5f8e03d1369b31b7dfee7e 100644 GIT binary patch delta 3926 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 Uck+KcnS+(v{@;^XSG^?TEA$ZoR{#J2 delta 3511 zcma*odu+{T9LMpe7gUwf)}`9Rud3A>de*L}%eG_5+}Z^d1j`PssawsdJ2}HhP@{e( z*p_UXnUGE9$j0WjVHmTlB6cx0voIB7$-0{*dw+VK*yXP^$9esp-}8IE&-eL0&+oW9 zar^k-m4xUQ4Sz@Zm&(7S=4$=@7Z+y?AJdwz*4P=FVHS47Uba0F6KRjdb~po*a2dwq zCgfvw@TE9=v6V4FbC?S~a0c7p7xsahsDO>AfU%6ybE&8Rd3>qA7&~Aow#5omocZYB zD%AL$$b{wqw!{<If%(mOE;R6a?1+t+jBSXb39_&=4!}-07RkxXvHi<X&(~rR?!m5j z4GS=mtTk~Fs&YO|z#*8={AL0dDOiK;aThAXBi7RxL%SXa;a9fZnXJjxq+<*8qQ>{b zLVVKpKaYIOCcd<gI#j$P7*y#_aiIyXU<uwt9fKn37K;N>2@XN6pd4A8nU0!x5o-K$ zG!e$EL&dFOnM$w@Rmrz85>MLp=>+N@&5g_4P=Iey6EvV!a?jd=(F)+<D-FF!5zJ^* zf>TgiG8;AF65C#bdTtA93wGN3`%vSKCQ^ST{jt4q8I{ltRG{0aQvHrfD2gMkfyt;9 zc1OK6{ZXYIhdM(6>pIlgs6!tfMnW|OQw5WPMD5N+I;vv`Y9$j<TTqEA@f_3&7TWgn zw!a36X<XaC3l(@j4#4B6ty8wDa4NF9CKI)=U>`0N_)*kEBWy<*sxp&MiB+KjtVAWY z9;0wGs$yGh|0}3CZ=fdHi)-;1YTR(jqxnW5&jrm>_Qurk4Ko*&*<#enR-y;Dq7rxq zmDn*<pnBAqxq_<Pb<~#JLnYRRcUI#PQEd-u3%g;G-v6Fl@G(BV^xy<k0u`t;Fx$Em zHPKqs3OAxA+=}`oeBJh+My>R`^`iAMYTS3IL>e$o@Bdx<z@Mmzqd76!!`7$=Q&IQR zP$kW={rypUI}CNor=p&pk4j((@-ZuH`(;$c>QD>ai$SgMAQzkya|#vUYt)3-@FU*m z2GmOTF`J%0imJpXsFh!^?MBpDxsSZLrY-xRxap__`=PdOC@Ri`RO+vbO53pjwemIg zfvu>3J8l1as6gjz|7E0T<`(Mpi{hYY!Y-&dh3Md5<T#je)cB>S3e<S0KL^un;f6~4 zCU(Um$fC^^R06-ERvOnOe7Jg}Dl!7~+<0^_fJL|&73VA#U<0c3UAd{s<)SL&4RVps z#p6iT%skXYwWtjDqxSL$D)W;#1}~x#%XPwU$s?$Q$}kuGI0)CHDtr#Lz%P+pOap3* zgR%Ucssf3q336~O7NaKKgxa%hsKoZz`{z+5zKA;2*HH=IM*Sbqh?!je!XS<Bk{<r) z&PT-^g?W1a$8(`fR@;sZsP}UVYENH79yEv0!5^>>#&!=+;6puMiK;*~YQ@V@<2Rsk z+Kt+RbEpM>j&XYbf8;`YcpvqH(;*|AP%i2)6`~H$Fx#Gt+Pj6QK<h9IcVJIEi+cVy zYdgxI_}S>g!KkfUEt%hJ=YqM-TejnZ^#*F9KTs=c(<3}E1y%CisFn9Yy#+p0;0dV2 zt8f6WLe8)G5Vb|$*!C?965GU(z6SQj7C0DVa5!ouWvKp{sJ(m+o8u;o!ELBY>_AO$ z5S7?*)S)|%Yw;>--1O}5Ry><c{Wak-dt()<U5hce4YegZuo&OPmiQBDh4)c=nvfHI zt-7Ep)gAdsFkXztQq;K7wmk`BX;03f{+eJGHym7nI@NWk1ooj0)BDyl7)$#Ssv_4= z6E@;NjN;vEhL53E`h>L<HEs;*EqfXje@@WeScDp|2KC@ZR3a~-R<Ij2U@t1b0o#8X z_4{$j-jB%(Ki>%z$AdckS*ZBKuoaH9{oYAjXob^IC7q9&um&|@EgHvheEvX1pxDU> zxJ%>GlV+9s1Jn9D8Cm63Qv%hM)iW!y1McCtSKWF~Y3NYv*%8rGs^%<md&L(tU4$y) z3nSdRwq?zl2D*3BdWUk`y%6bMO&pY5QsR`C=Q-o~GbQ{zXt^m#*Fv4zpNMd8bf^l| zbQ~MuUd+u74NcCBY?WWoGr!1r$XonyUw3he#}{sU3ySl-x%vFXj_?PndzQ`h&koG= zS69s~cFO!S{EOzzsB}h8tDIH2c-{>E0>3jL@SsumSxQ7ZZ!d4`|6Xl3x36bSsNVDQ ze^%>O#DCx(cecCFq)m1U)3RDPnN7<M-AOBrawlg@@BGhI{(H@#vl#;;+^d;g>wG;T Y-IDB2L!)w*G_Bhmnw$|Dm)9xsFH>@v2><{9 diff --git a/sphinx/locale/fa/LC_MESSAGES/sphinx.po b/sphinx/locale/fa/LC_MESSAGES/sphinx.po index ee58d3503..bcecb922c 100644 --- a/sphinx/locale/fa/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/fa/LC_MESSAGES/sphinx.po @@ -7,61 +7,42 @@ msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Persian (http://www.transifex.com/sphinx-doc/sphinx-1/language/fa/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python Enhancement Proposals; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "درونی سازی" @@ -70,8 +51,11 @@ msgstr "درونی سازی" msgid "Module level" msgstr "در سطح ماژول" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -82,18 +66,28 @@ msgstr "فهرست کلی" msgid "index" msgstr "فهرست" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "بعدی" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "قبلی" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr "" +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr ":نویسنده این بخش" @@ -110,23 +104,23 @@ msgstr "" msgid "Author: " msgstr ":نویسنده" -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "پارامترها" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "نوع برگشتی" @@ -155,12 +149,12 @@ msgstr "%s (C نوع)" msgid "%s (C variable)" msgstr "%s (C متغیر)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "" @@ -168,7 +162,7 @@ msgstr "" msgid "macro" msgstr "" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "" @@ -176,63 +170,72 @@ msgstr "" msgid "variable" msgstr "" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (توابع درونی)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (%s متد)" @@ -247,7 +250,7 @@ msgstr "" msgid "%s (global variable or constant)" msgstr "" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (%s مشخصه)" @@ -256,116 +259,116 @@ msgstr "%s (%s مشخصه)" msgid "Arguments" msgstr "" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "برانگیختن" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (در ماژول %s)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (متغیر درونی)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (در ماژول %s)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (کلاس درونی)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (کلاس در %s)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (%s.%s متد)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (%s.%s متد استاتیک)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (%s متد استاتیک)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (%s.%s مشخصه)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (ماژول)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "ماژول ها" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "منسوخ شده" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "استثناء" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "ماژول" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr "" @@ -387,120 +390,147 @@ msgstr "" msgid "role" msgstr "" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "%s متغیرهای عمومی؛" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%sگزینه خط فرمان; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "فهرست" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "فهرست ماژول ها" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "صفحه جستجو" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" +msgid "see %s" msgstr "" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "در دست انجام" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "دقت" @@ -581,7 +611,7 @@ msgstr "توابع درونی" msgid "Table Of Contents" msgstr "فهرست عناوین" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -639,15 +669,15 @@ msgstr "دسترسی سریع به تمامی متدها" msgid "all functions, classes, terms" msgstr "تمامی توابع ، کلاس ها ، اصطلاحات" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "فهرست – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "فهرست کامل در یک صفحه" @@ -663,35 +693,35 @@ msgstr "" msgid "Navigation" msgstr "ناوبری" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "جستجو در %(docstitle)s" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "درباره این مستندات" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "کپی رایت" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." +msgid "© Copyright %(copyright)s." msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr ". %(last_updated)s آخرین بروز رسانی در" -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -740,13 +770,13 @@ msgstr "جستجو" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "نتایج جستجو" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -763,12 +793,12 @@ msgstr "صفحه فعلی" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "تغییرات در نسخه %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 @@ -788,12 +818,13 @@ msgstr "C API تغییرات" msgid "Other changes" msgstr "دگر تغییرات" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "لینک ثابت به این سر مقاله" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "لینک ثابت به این تعریف" @@ -809,12 +840,12 @@ msgstr "" msgid "Preparing search..." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr "" @@ -831,48 +862,53 @@ msgstr "" msgid "Contents" msgstr "" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "انتشار" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "" diff --git a/sphinx/locale/fi/LC_MESSAGES/sphinx.js b/sphinx/locale/fi/LC_MESSAGES/sphinx.js index f16521607..e065ce05b 100644 --- a/sphinx/locale/fi/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/fi/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "fi", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "Tietoja t\u00e4st\u00e4 documentist\u00e4", "Automatically generated list of changes in version %(version)s": "Automaattisesti luotu muutoshistoria alkaen versiosta %(version)s", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "Muutos versiosta %(version)s — %(docstitle)s", "Collapse sidebar": "", "Complete Table of Contents": "", "Contents": "", "Copyright": "", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand 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.": "Anna hakusanat kokonaan, osasanoilla ei haeta.", "Full index on one page": "Hakemisto yhten\u00e4 luettelona", "General Index": "Yleinen sis\u00e4llysluettelo", "Global Module Index": "Yleinen moduulien sis\u00e4llysluettelo", "Go": "Siirry", "Hide Search Matches": "Piilota l\u00f6ydetyt", "Index": "Sis\u00e4llysluettelo", "Index – %(key)s": "", "Index pages by letter": "Hakemisto aakkostus sivuttain", "Indices and tables:": "", "Last updated on %(last_updated)s.": "", "Library changes": "", "Navigation": "Navikointi", "Next topic": ">>", "Other changes": "", "Overview": "Yhteenveto", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "Javascript pit\u00e4\u00e4 olla sallittu, jotta etsint\u00e4 toimii.", "Preparing search...": "", "Previous topic": "<<", "Quick search": "Pikahaku", "Search": "Etsi", "Search Page": "Etsi sivu", "Search Results": "Etsinn\u00e4n tulos", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "", "Show Source": "N\u00e4yt\u00e4 l\u00e4hdekoodina", "Table Of Contents": "Sis\u00e4llysluettelo", "This Page": "T\u00e4m\u00e4 sivu", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "", "can be huge": "voi olla iso", "last updated": "", "lists all sections and subsections": "", "next chapter": ">>", "previous chapter": "<<", "quick access to all modules": "", "search": "etsi", "search this documentation": "", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file +Documentation.addTranslations({"locale": "fi", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "Tietoja t\u00e4st\u00e4 documentist\u00e4", "Automatically generated list of changes in version %(version)s": "Automaattisesti luotu muutoshistoria alkaen versiosta %(version)s", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "", "Contents": "", "Copyright": "", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand 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.": "Anna hakusanat kokonaan, osasanoilla ei haeta.", "Full index on one page": "Hakemisto yhten\u00e4 luettelona", "General Index": "Yleinen sis\u00e4llysluettelo", "Global Module Index": "Yleinen moduulien sis\u00e4llysluettelo", "Go": "Siirry", "Hide Search Matches": "Piilota l\u00f6ydetyt", "Index": "Sis\u00e4llysluettelo", "Index – %(key)s": "", "Index pages by letter": "Hakemisto aakkostus sivuttain", "Indices and tables:": "", "Last updated on %(last_updated)s.": "", "Library changes": "", "Navigation": "Navikointi", "Next topic": ">>", "Other changes": "", "Overview": "Yhteenveto", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "Javascript pit\u00e4\u00e4 olla sallittu, jotta etsint\u00e4 toimii.", "Preparing search...": "", "Previous topic": "<<", "Quick search": "Pikahaku", "Search": "Etsi", "Search Page": "Etsi sivu", "Search Results": "Etsinn\u00e4n tulos", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "", "Show Source": "N\u00e4yt\u00e4 l\u00e4hdekoodina", "Table Of Contents": "Sis\u00e4llysluettelo", "This Page": "T\u00e4m\u00e4 sivu", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "", "can be huge": "voi olla iso", "last updated": "", "lists all sections and subsections": "", "next chapter": ">>", "previous chapter": "<<", "quick access to all modules": "", "search": "etsi", "search this documentation": "", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/locale/fi/LC_MESSAGES/sphinx.mo b/sphinx/locale/fi/LC_MESSAGES/sphinx.mo index 339d23dc23c0f3c08416f31f994107bf378fe0ae..f1c7a21976c150221dc74ba8504244e10cdfddc9 100644 GIT binary patch delta 3927 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 I_D?)t0m!NR$p8QV delta 3531 zcmajg3rv+|9LMqJAcP?(D&hr@S5O3R<A{>sC1tK*ie=&mt+o^3B;+y<VBU6SUYcS} ze7l&7N||Q0c{}B@LS1T@n=UPDrdgUMMVfBqv}x=6<2<v~);c?$&-1*`?f?9r=fyL# zZp{ds>k<Bv;j^EAiTsPZN438{(b2~6H8K3eU_Xq&bWFh!wmt)UQZK~rSdMYH6uaSi z<ZCwbqj`2<7h?jZg@QVKhF$Tr?a+pr@CItaC`PGYB5HzR{HQ$#<8eC1Vkv5#dUS9l zYW!AYLGuCLi-$0t_04e#8h8nN;|=VKU71A-q+>rEhkdXRiOE#k_NA!)jhKz^VlrO9 zEDR%REu4+YTrT#&Jj`T$GlxO~uEk!s4He-&>k;fs{UlDnGq&E3sEO62VkCM|<L}2& z_^@qXfqcz+ezcKh)O`CepwzWe(1PbMAKOsZAe+2J;doSld8i$fAe%E!qZVF>8ovyU z$Cw7xyldH}0>Qau<f-VOu}agZzi{;4BX`!FkjI?Wmnxw?;Br6D0970KG^O%uG~( z#i%2xL@l`3)>otYy^K17t@inD)VTdU$-ja=Y9E|M1#}rT(J!b}{ecRo6IWUT`=WL@ z5cSrKMWyyJ)E)9$8&G$n8FR4(nW|$lWiT$ltOF^eq8jp0J9!*+1ZAicSEF|DjIFP* z?Q4-ajcePtp(cJ0$KgTL(J5MGI1xErlZM(@;64hPcp_?{X||yNm6<0{fmNX<SdI$p zdF+HQqB6F@wl|^Xc?-4B4qSr=P~)bO9<BE%(l211v=8Qn9+(<bWQ$NcTaHP%0TsX= zRA2{C6P-lenRBSjT|^zpbyQ$od1p1QC#s%=I>Ho;)B8W10$-EMk2=ml1yG8*1C`b# zsD;*`cDN3;;0DxR!Y#J_2x_Ott*5MKQR99<1=5budjGH44tG!shjU|ehB2s)iKyoT zP$?Z^+sC5L_94_QpNr~Wj|yNh@-@%e`fI3+HKR7V0|VOOUJBe3(~6qlThxLV@EGrN zJ8GwUSxtV5%ET9_ou9V#+o-z|M*ej~@u(wAM+G<@H9jA;?(9VJuZZT^4z;MAudp3l z)P$Q*6TXj{sMWTAZQCy)_siTuWhj;lqj?6PgPExDGf)8(qcTvPME*5!5f3!55xF;J zGqP#(Au50`QSWyfa!RIC|IkE<sP+t0|M8fOg_w*lU>0siZS(>vb61hSZRWQCg-i;O z^d@^|46=qPKt))CI+7)}z6>W(Z$KT<F;ptQvh|Coqr8G6v6B;O&qi%<GHN5UP~!vD z6qJF5s0G(yK5j%s+J<_56&2V`)bn`$4lBips9QZ0)h`Q2;CSRT%zRX4R%0qQqb_GF zawGwBoPs9&9u?7#p$79SY9}6Um=^AhO7&=@$xK1rg>uyUycl)1t56wnQ44QEZSW)P z_<LbJhf#X}f2N?z@jHfLBw;GTDAYvVQ41ua0vclL6HyaSMeXz{RB8jLJG9Zd8x_b= z9D^588%Y|-daQ4}6!@A^{HUP_m5B;eAoZveFGcNOrL8w&IQ3Uiui5LUBM720(}Lsh z80v0C4GOiVq1MU7fF_(wK|6Z{wa{Et0F|iBEI<udjq2Zo3hZr+z@4bewFebID{A}+ z`}`Z!{{ijTv7xlkJWJEazZP6=A2g!sO{fXBpmw$$bq5Zj7C4UztQ~dccQ68@28Zgg zs3S?jaLhrCd%)JGppJC<VDhg8ig=*+y3%%h4i!Kn>JDtQZnN!sFp}p7Pyrl4u8%o| z3gjl<gMV5h(nI~DQS-*32a^I6bm@{&15&UvW}sfLk*FO^LJfEj)j!X+Peq;WY}A?8 zqx!G1HlQxwI@J8{ppI}CDkI(&3ff^S>JFSjP0)^=@fsS(adLhBQh$y!$nP$RPK~Q5 z@%iVCbq1xER2BPc%WCJBX87Hf=r@CvF&}%vi>s;^x+A(}brgc7-9~xb=GcOWjzPiO zu`OZlcReTc&ChpAN`^T_d`v!{yEQi<?n1CnuR|X9a(q>AZSO*ldn`S}9hy-Q+|zfj zr%Ptm@XTyyq&H{u7<W-ZQf{d3&C1F24$b5fHO=R*9bQo5tMt$J)mGKyI0e3P-@>}` zGH2$zvWl`rb>+SVK4+Z&ZY6jkA=1;`JHi|F&#j(KO!?2Px|K1XyG{MC{A;&|lgDbe z@vbu<IW@nouC~hW)R)%y%c}gfJ`xrxS7!K~w2pkZw_`sErlt5i|C5uSQm?yxdd&>x Y4Vvb0-$;8UIDc?aM_z(MGj@9Z0(5$w?*IS* diff --git a/sphinx/locale/fi/LC_MESSAGES/sphinx.po b/sphinx/locale/fi/LC_MESSAGES/sphinx.po index b55921fba..402bb07cb 100644 --- a/sphinx/locale/fi/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/fi/LC_MESSAGES/sphinx.po @@ -8,61 +8,42 @@ msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Finnish (http://www.transifex.com/sphinx-doc/sphinx-1/language/fi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: fi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python Enhancement Proposals; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "" @@ -71,8 +52,11 @@ msgstr "" msgid "Module level" msgstr "Moduulitaso" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -83,18 +67,28 @@ msgstr "Yleinen sisällysluettelo" msgid "index" msgstr "hakemisto" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr ">" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "<" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr "" +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "Luvun kirjoittaja: " @@ -111,23 +105,23 @@ msgstr "" msgid "Author: " msgstr "Tekijä: " -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "" @@ -156,12 +150,12 @@ msgstr "" msgid "%s (C variable)" msgstr "" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "" @@ -169,7 +163,7 @@ msgstr "" msgid "macro" msgstr "" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "" @@ -177,63 +171,72 @@ msgstr "" msgid "variable" msgstr "" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "" @@ -248,7 +251,7 @@ msgstr "" msgid "%s (global variable or constant)" msgstr "" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "" @@ -257,116 +260,116 @@ msgstr "" msgid "Arguments" msgstr "" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (moduuli)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "moduulit" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "Poistettu" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "moduuli" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr " (poistettu)" @@ -388,120 +391,147 @@ msgstr "" msgid "role" msgstr "" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "Sisällysluettelo" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "Moduuli sisällysluettelo" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "Etsi sivu" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" +msgid "see %s" msgstr "" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "Tehtävä vielä" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "Huom" @@ -582,7 +612,7 @@ msgstr "" msgid "Table Of Contents" msgstr "Sisällysluettelo" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -640,15 +670,15 @@ msgstr "" msgid "all functions, classes, terms" msgstr "" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "Hakemisto yhtenä luettelona" @@ -664,35 +694,35 @@ msgstr "voi olla iso" msgid "Navigation" msgstr "Navikointi" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "Tietoja tästä documentistä" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." +msgid "© Copyright %(copyright)s." msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "" -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -741,13 +771,13 @@ msgstr "etsi" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "Etsinnän tulos" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -764,12 +794,12 @@ msgstr "Tämä sivu" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "Muutos versiosta %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 @@ -789,12 +819,13 @@ msgstr "" msgid "Other changes" msgstr "" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "" @@ -810,12 +841,12 @@ msgstr "" msgid "Preparing search..." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr "" @@ -832,48 +863,53 @@ msgstr "" msgid "Contents" msgstr "" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "" diff --git a/sphinx/locale/fr/LC_MESSAGES/sphinx.js b/sphinx/locale/fr/LC_MESSAGES/sphinx.js index 3e55761a9..a6a171181 100644 --- a/sphinx/locale/fr/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/fr/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "fr", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", dans", "About these documents": "\u00c0 propos de ces documents", "Automatically generated list of changes in version %(version)s": "Liste auto-g\u00e9n\u00e9r\u00e9e des modifications dans la version %(version)s", "C API changes": "Modifications de l'API C", "Changes in Version %(version)s — %(docstitle)s": "Modifications dans la version %(version)s — %(docstitle)s", "Collapse sidebar": "R\u00e9duire la barre lat\u00e9rale", "Complete Table of Contents": "Table des mati\u00e8res compl\u00e8te", "Contents": "Contenu", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Cr\u00e9\u00e9 avec <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Agrandir la barre lat\u00e9rale", "From here you can search these documents. Enter your search\n words into the box below and click \"search\". Note that the search\n function will automatically search for all of the words. Pages\n containing fewer words won't appear in the result list.": "Vous pouvez effectuer une recherche au sein des documents. Saisissez les termes\nde votre recherche dans le champs ci-dessous et cliquez sur \"rechercher\". Notez que la fonctionnalit\u00e9 de recherche\nva automatiquement chercher l'ensemble des mots. Les pages\ncontenant moins de mots n'appara\u00eetront pas dans la liste des r\u00e9sultats.", "Full index on one page": "Index complet sur une seule page", "General Index": "Index g\u00e9n\u00e9ral", "Global Module Index": "Index g\u00e9n\u00e9ral des modules", "Go": "Go", "Hide Search Matches": "Cacher les r\u00e9sultats de la recherche", "Index": "Index", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "Indexer les pages par lettre", "Indices and tables:": "Indices et Tables :", "Last updated on %(last_updated)s.": "Mis \u00e0 jour le %(last_updated)s.", "Library changes": "Modifications de la biblioth\u00e8que", "Navigation": "Navigation", "Next topic": "Sujet suivant", "Other changes": "Autres modifications", "Overview": "R\u00e9sum\u00e9", "Permalink to this definition": "Lien permanent vers cette d\u00e9finition", "Permalink to this headline": "Lien permanent vers ce titre", "Please activate JavaScript to enable the search\n functionality.": "Veuillez activer le JavaScript pour que la recherche fonctionne.", "Preparing search...": "Pr\u00e9paration de la recherche...", "Previous topic": "Sujet pr\u00e9c\u00e9dent", "Quick search": "Recherche rapide", "Search": "Recherche", "Search Page": "Page de recherche", "Search Results": "R\u00e9sultats de la recherche", "Search finished, found %s page(s) matching the search query.": "La recherche est finie, %s page(s) trouv\u00e9e(s) qui corresponde(nt) \u00e0 la recherche.", "Search within %(docstitle)s": "Recherchez dans %(docstitle)s", "Searching": "Recherche en cours", "Show Source": "Montrer le code source", "Table Of Contents": "Table des Mati\u00e8res", "This Page": "Cette page", "Welcome! This is": "Bienvenue ! Ceci est", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Votre recherche ne correspond \u00e0 aucun document. Veuillez v\u00e9rifier que les mots sont correctement orthographi\u00e9s et que vous avez s\u00e9lectionn\u00e9 assez de cat\u00e9gories.", "all functions, classes, terms": "toutes les fonctions, classes, termes", "can be huge": "peut \u00eatre \u00e9norme", "last updated": "derni\u00e8re modification", "lists all sections and subsections": "lister l'ensemble des sections et sous-sections", "next chapter": "Chapitre suivant", "previous chapter": "Chapitre pr\u00e9c\u00e9dent", "quick access to all modules": "acc\u00e8s rapide \u00e0 l'ensemble des modules", "search": "rechercher", "search this documentation": "rechercher dans cette documentation", "the documentation for": "la documentation pour"}, "plural_expr": "(n > 1)"}); \ No newline at end of file +Documentation.addTranslations({"locale": "fr", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": ", dans", "About these documents": "\u00c0 propos de ces documents", "Automatically generated list of changes in version %(version)s": "Liste auto-g\u00e9n\u00e9r\u00e9e des modifications dans la version %(version)s", "C API changes": "Modifications de l'API C", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "R\u00e9duire la barre lat\u00e9rale", "Complete Table of Contents": "Table des mati\u00e8res compl\u00e8te", "Contents": "Contenu", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Cr\u00e9\u00e9 avec <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Agrandir la barre lat\u00e9rale", "From here you can search these documents. Enter your search\n words into the box below and click \"search\". Note that the search\n function will automatically search for all of the words. Pages\n containing fewer words won't appear in the result list.": "Vous pouvez effectuer une recherche au sein des documents. Saisissez les termes\nde votre recherche dans le champs ci-dessous et cliquez sur \"rechercher\". Notez que la fonctionnalit\u00e9 de recherche\nva automatiquement chercher l'ensemble des mots. Les pages\ncontenant moins de mots n'appara\u00eetront pas dans la liste des r\u00e9sultats.", "Full index on one page": "Index complet sur une seule page", "General Index": "Index g\u00e9n\u00e9ral", "Global Module Index": "Index g\u00e9n\u00e9ral des modules", "Go": "Go", "Hide Search Matches": "Cacher les r\u00e9sultats de la recherche", "Index": "Index", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "Indexer les pages par lettre", "Indices and tables:": "Indices et Tables :", "Last updated on %(last_updated)s.": "Mis \u00e0 jour le %(last_updated)s.", "Library changes": "Modifications de la biblioth\u00e8que", "Navigation": "Navigation", "Next topic": "Sujet suivant", "Other changes": "Autres modifications", "Overview": "R\u00e9sum\u00e9", "Permalink to this definition": "Lien permanent vers cette d\u00e9finition", "Permalink to this headline": "Lien permanent vers ce titre", "Please activate JavaScript to enable the search\n functionality.": "Veuillez activer le JavaScript pour que la recherche fonctionne.", "Preparing search...": "Pr\u00e9paration de la recherche...", "Previous topic": "Sujet pr\u00e9c\u00e9dent", "Quick search": "Recherche rapide", "Search": "Recherche", "Search Page": "Page de recherche", "Search Results": "R\u00e9sultats de la recherche", "Search finished, found %s page(s) matching the search query.": "La recherche est finie, %s page(s) trouv\u00e9e(s) qui corresponde(nt) \u00e0 la recherche.", "Search within %(docstitle)s": "Recherchez dans %(docstitle)s", "Searching": "Recherche en cours", "Show Source": "Montrer le code source", "Table Of Contents": "Table des Mati\u00e8res", "This Page": "Cette page", "Welcome! This is": "Bienvenue ! Ceci est", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Votre recherche ne correspond \u00e0 aucun document. Veuillez v\u00e9rifier que les mots sont correctement orthographi\u00e9s et que vous avez s\u00e9lectionn\u00e9 assez de cat\u00e9gories.", "all functions, classes, terms": "toutes les fonctions, classes, termes", "can be huge": "peut \u00eatre \u00e9norme", "last updated": "derni\u00e8re modification", "lists all sections and subsections": "lister l'ensemble des sections et sous-sections", "next chapter": "Chapitre suivant", "previous chapter": "Chapitre pr\u00e9c\u00e9dent", "quick access to all modules": "acc\u00e8s rapide \u00e0 l'ensemble des modules", "search": "rechercher", "search this documentation": "rechercher dans cette documentation", "the documentation for": "la documentation pour"}, "plural_expr": "(n > 1)"}); \ No newline at end of file diff --git a/sphinx/locale/fr/LC_MESSAGES/sphinx.mo b/sphinx/locale/fr/LC_MESSAGES/sphinx.mo index d3c3535c9ead32c4df2be1f46ca940f81aec13ce..26baed6742774bb2b448306579972553fa17c638 100644 GIT binary patch delta 4022 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 I!Rm~E1J<}FQvd(} delta 3561 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 diff --git a/sphinx/locale/fr/LC_MESSAGES/sphinx.po b/sphinx/locale/fr/LC_MESSAGES/sphinx.po index 2778dffec..a73068897 100644 --- a/sphinx/locale/fr/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/fr/LC_MESSAGES/sphinx.po @@ -6,70 +6,54 @@ # Christophe CHAUVET <christophe.chauvet@gmail.com>, 2013,2015 # Larlet David <david@larlet.fr>, 2008 # fgallaire <fgallaire@gmail.com>, 2010 +# François Poirotte <clicky@erebot.net>, 2016 # Georg Brandl <g.brandl@gmx.net>, 2014 # Jean-Daniel Browne <jeandaniel.browne@gmail.com>, 2010 # Lilian Besson <naereen@crans.org>, 2013-2014 # Nikolaj van Omme <nikolaj.van.omme@gmail.com>, 2014-2015 +# Pierre Grépon <pgrepon@yahoo.fr>, 2016 # Sebastien Douche <sdouche@gmail.com>, 2008 +# Takeshi KOMIYA <i.tkomiya@gmail.com>, 2016 msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-24 12:26+0000\n" +"Last-Translator: Pierre Grépon <pgrepon@yahoo.fr>\n" "Language-Team: French (http://www.transifex.com/sphinx-doc/sphinx-1/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "Section %s" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "Fig. %s" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "Tableau %s" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "Code source %s" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "documentation %s %s" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "voir %s" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "voir aussi %s" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "Symboles" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python Enhancement Proposals; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "Fonctions de base" @@ -78,9 +62,12 @@ msgstr "Fonctions de base" msgid "Module level" msgstr "Module" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" -msgstr "" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" +msgstr "%b %d, %Y" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 msgid "General Index" @@ -90,18 +77,28 @@ msgstr "Index général" msgid "index" msgstr "index" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "suivant" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "précédent" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "documentation %s %s" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr "(dans" +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "Légende invalide: %s" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "Auteur de la section : " @@ -118,23 +115,23 @@ msgstr "Auteur du code : " msgid "Author: " msgstr "Auteur : " -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Paramètres" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "Retourne" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "Type retourné" @@ -163,12 +160,12 @@ msgstr "%s (type C)" msgid "%s (C variable)" msgstr "%s (variable C)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "fonction" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "membre" @@ -176,7 +173,7 @@ msgstr "membre" msgid "macro" msgstr "macro" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "type" @@ -184,63 +181,72 @@ msgstr "type" msgid "variable" msgstr "variable" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" -msgstr "" +msgstr "Paramètres du modèle" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "Déclenche" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (type C++)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "%s (concept C++)" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (membre C++)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (fonction C++)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (classe C++)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "%s (énumération C++)" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "%s (énumérateur C++)" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "classe" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "énumération" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "énumérateur" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (fonction de base)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (méthode %s)" @@ -255,7 +261,7 @@ msgstr "%s() (classe)" msgid "%s (global variable or constant)" msgstr "%s (variable globale ou constante)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (attribut %s)" @@ -264,116 +270,116 @@ msgstr "%s (attribut %s)" msgid "Arguments" msgstr "Arguments" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "données" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "attribut" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "Variables" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "Lève" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (dans le module %s)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (variable de base)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (dans le module %s)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (classe de base)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (classe dans %s)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (méthode %s.%s)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (méthode statique %s.%s)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (méthode statique %s)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "%s() (méthode de la classe %s.%s)" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "%s() (méthode de la classe %s)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (attribut %s.%s)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (module)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "Index des modules Python" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "modules" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "Obsolète" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "exception" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "méthode" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "méthode de classe" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "méthode statique" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "module" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr " (obsolète)" @@ -395,120 +401,147 @@ msgstr "directive" msgid "role" msgstr "role" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "variable d'environnement; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%s option de ligne de commande; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "terme du glossaire" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "élément de grammaire" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "étiquette de référence" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "variable d'environnement" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "option du programme" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "Index" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "Index du module" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "Page de recherche" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" -msgstr " Bases: %s" +msgid "see %s" +msgstr "voir %s" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "voir aussi %s" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "Symboles" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "alias de :class:`%s`" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "[graphe: %s]" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "[graphe]" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "(disponible dans %s v%s)" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[source]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "À faire" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" -msgstr "" +msgstr "<<entrée originale>>" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" -msgstr "" +msgstr "(l'<<entrée originale>> se trouve dans %s, à la ligne %d)" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "entrée originale" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[docs]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "Code du module" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "<h1>Code source de %s</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "Vue d'ensemble : code du module" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "<h1>Modules pour lesquels le code est disponible</h1>" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "Attention" @@ -589,7 +622,7 @@ msgstr "fonction de base" msgid "Table Of Contents" msgstr "Table des Matières" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -647,15 +680,15 @@ msgstr "accès rapide à l'ensemble des modules" msgid "all functions, classes, terms" msgstr "toutes les fonctions, classes, termes" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Index – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "Index complet sur une seule page" @@ -671,35 +704,35 @@ msgstr "peut être énorme" msgid "Navigation" msgstr "Navigation" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "Recherchez dans %(docstitle)s" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "À propos de ces documents" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "Copyright" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Copyright %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Mis à jour le %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -748,13 +781,13 @@ msgstr "rechercher" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "Résultats de la recherche" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -771,13 +804,13 @@ msgstr "Cette page" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "Modifications dans la version %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -796,12 +829,13 @@ msgstr "Modifications de l'API C" msgid "Other changes" msgstr "Autres modifications" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "Lien permanent vers ce titre" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "Lien permanent vers cette définition" @@ -817,12 +851,12 @@ msgstr "Recherche en cours" msgid "Preparing search..." msgstr "Préparation de la recherche..." -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "La recherche est finie, %s page(s) trouvée(s) qui corresponde(nt) à la recherche." -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr ", dans" @@ -839,48 +873,53 @@ msgstr "Réduire la barre latérale" msgid "Contents" msgstr "Contenu" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "Lien permanent vers ce code" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "Lien permanent vers cette image" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "Lien permanent vers cette table des matières" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "Lien permanent vers ce tableau" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "Version" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" +msgstr "page" + +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "Notes de bas de page" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "Suite de la page précédente" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "Suite sur la page suivante" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "[image: %s]" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[image]" diff --git a/sphinx/locale/he/LC_MESSAGES/sphinx.js b/sphinx/locale/he/LC_MESSAGES/sphinx.js index 11f64cc02..71d528e6a 100644 --- a/sphinx/locale/he/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/he/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "he", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">\u05d6\u05db\u05d5\u05d9\u05d5\u05ea \u05e9\u05de\u05d5\u05e8\u05d5\u05ea</a> %(copyright)s.", "© Copyright %(copyright)s.": "© \u05d6\u05db\u05d5\u05d9\u05d5\u05ea \u05e9\u05de\u05d5\u05e8\u05d5\u05ea %(copyright)s.", ", in ": "", "About these documents": "\u05e2\u05dc \u05de\u05e1\u05de\u05db\u05d9\u05dd \u05d0\u05dc\u05d5", "Automatically generated list of changes in version %(version)s": "\u05d9\u05e6\u05e8 \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9\u05ea \u05e8\u05e9\u05d9\u05de\u05d4 \u05e9\u05dc \u05e9\u05d9\u05e0\u05d5\u05d9\u05d9\u05dd \u05d1\u05d2\u05e8\u05e1\u05d4 %(version)s", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "\u05e9\u05d9\u05e0\u05d5\u05d9\u05d9\u05dd \u05d1\u05d2\u05e8\u05e1\u05d4 %(version)s — %(docstitle)s", "Collapse sidebar": "\u05db\u05d5\u05d5\u05e5 \u05e1\u05e8\u05d2\u05dc \u05e6\u05d3", "Complete Table of Contents": "\u05ea\u05d5\u05db\u05df \u05e2\u05e0\u05d9\u05d9\u05e0\u05d9\u05dd \u05de\u05dc\u05d0", "Contents": "\u05ea\u05d5\u05db\u05df", "Copyright": "\u05d6\u05db\u05d5\u05d9\u05d5\u05ea \u05e9\u05de\u05d5\u05e8\u05d5\u05ea", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand sidebar": "\u05d4\u05e8\u05d7\u05d1 \u05e1\u05e8\u05d2\u05dc \u05e6\u05d3", "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.": "", "Full index on one page": "\u05d0\u05d9\u05e0\u05d3\u05e7\u05e1 \u05de\u05dc\u05d0 \u05d1\u05e2\u05de\u05d5\u05d3 \u05d0\u05d7\u05d3", "General Index": "", "Global Module Index": "\u05d0\u05d9\u05e0\u05d3\u05e7\u05e1 \u05de\u05d5\u05d3\u05d5\u05dc\u05d9\u05dd \u05d2\u05dc\u05d5\u05d1\u05dc\u05d9", "Go": "\u05dc\u05da", "Hide Search Matches": "\u05d4\u05e1\u05ea\u05e8 \u05ea\u05d5\u05e6\u05d0\u05d5\u05ea \u05d7\u05d9\u05e4\u05d5\u05e9", "Index": "\u05d0\u05d9\u05e0\u05d3\u05e7\u05e1", "Index – %(key)s": "", "Index pages by letter": "\u05e2\u05de\u05d5\u05d3\u05d9 \u05d0\u05d9\u05e0\u05d3\u05e7\u05e1 \u05dc\u05e4\u05d9 \u05d0\u05d5\u05ea\u05d9\u05d5\u05ea", "Indices and tables:": "", "Last updated on %(last_updated)s.": "\u05e2\u05d5\u05d3\u05db\u05df \u05dc\u05d0\u05d7\u05e8\u05d5\u05e0\u05d4 \u05d1 %(last_updated)s.", "Library changes": "", "Navigation": "\u05e0\u05d9\u05d5\u05d5\u05d8", "Next topic": "\u05e0\u05d5\u05e9\u05d0 \u05d4\u05d1\u05d0", "Other changes": "\u05e9\u05d9\u05e0\u05d5\u05d9\u05d9\u05dd \u05d0\u05d7\u05e8\u05d9\u05dd", "Overview": "\u05e1\u05e7\u05d9\u05e8\u05d4 \u05db\u05dc\u05dc\u05d9\u05ea", "Permalink to this definition": "\u05e7\u05d9\u05e9\u05d5\u05e8 \u05e7\u05d1\u05d5\u05e2 \u05dc\u05d4\u05d2\u05d3\u05e8\u05d4 \u05d6\u05d5", "Permalink to this headline": "\u05e7\u05d9\u05e9\u05d5\u05e8 \u05e7\u05d1\u05d5\u05e2 \u05dc\u05db\u05d5\u05ea\u05e8\u05ea \u05d6\u05d5", "Please activate JavaScript to enable the search\n functionality.": "\u05d0\u05e0\u05d0 \u05d4\u05e4\u05e2\u05dc \u05d2'\u05d0\u05d5\u05d0\u05e1\u05e7\u05e8\u05d9\u05e4\u05d8 \u05e2\"\u05de \u05dc\u05d0\u05e4\u05e9\u05e8 \u05d0\u05ea\n \u05d4\u05d7\u05d9\u05e4\u05d5\u05e9.", "Preparing search...": "", "Previous topic": "\u05e0\u05d5\u05e9\u05d0 \u05e7\u05d5\u05d3\u05dd", "Quick search": "\u05d7\u05d9\u05e4\u05d5\u05e9 \u05de\u05d4\u05d9\u05e8", "Search": "\u05d7\u05d9\u05e4\u05d5\u05e9", "Search Page": "\u05d3\u05e3 \u05d7\u05d9\u05e4\u05d5\u05e9", "Search Results": "\u05ea\u05d5\u05e6\u05d0\u05d5\u05ea \u05d4\u05d7\u05d9\u05e4\u05d5\u05e9", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "\u05d7\u05e4\u05e9 \u05d1\u05ea\u05d5\u05da %(docstitle)s", "Searching": "", "Show Source": "\u05d4\u05e6\u05d2 \u05de\u05e7\u05d5\u05e8", "Table Of Contents": "\u05ea\u05d5\u05db\u05df \u05e2\u05e0\u05d9\u05d9\u05e0\u05d9\u05dd", "This Page": "\u05e2\u05de\u05d5\u05d3 \u05d6\u05d4", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "\u05db\u05dc \u05d4\u05e4\u05d5\u05e0\u05e7\u05e6\u05d9\u05d5\u05ea, \u05d4\u05de\u05d7\u05dc\u05e7\u05d5\u05ea, \u05d4\u05de\u05d5\u05e9\u05d2\u05d9\u05dd", "can be huge": "\u05e2\u05e9\u05d5\u05d9 \u05dc\u05d4\u05d9\u05d5\u05ea \u05e2\u05e6\u05d5\u05dd", "last updated": "", "lists all sections and subsections": "", "next chapter": "\u05e4\u05e8\u05e7 \u05d4\u05d1\u05d0", "previous chapter": "\u05e4\u05e8\u05e7 \u05e7\u05d5\u05d3\u05dd", "quick access to all modules": "\u05d2\u05d9\u05e9\u05d4 \u05de\u05d4\u05d9\u05e8\u05d4 \u05dc\u05db\u05dc \u05d4\u05de\u05d5\u05d3\u05d5\u05dc\u05d9\u05dd", "search": "\u05d7\u05d9\u05e4\u05d5\u05e9", "search this documentation": "\u05d7\u05e4\u05e9 \u05d1\u05ea\u05d9\u05e2\u05d5\u05d3 \u05d6\u05d4", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file +Documentation.addTranslations({"locale": "he", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "\u05e2\u05dc \u05de\u05e1\u05de\u05db\u05d9\u05dd \u05d0\u05dc\u05d5", "Automatically generated list of changes in version %(version)s": "\u05d9\u05e6\u05e8 \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9\u05ea \u05e8\u05e9\u05d9\u05de\u05d4 \u05e9\u05dc \u05e9\u05d9\u05e0\u05d5\u05d9\u05d9\u05dd \u05d1\u05d2\u05e8\u05e1\u05d4 %(version)s", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "\u05db\u05d5\u05d5\u05e5 \u05e1\u05e8\u05d2\u05dc \u05e6\u05d3", "Complete Table of Contents": "\u05ea\u05d5\u05db\u05df \u05e2\u05e0\u05d9\u05d9\u05e0\u05d9\u05dd \u05de\u05dc\u05d0", "Contents": "\u05ea\u05d5\u05db\u05df", "Copyright": "\u05d6\u05db\u05d5\u05d9\u05d5\u05ea \u05e9\u05de\u05d5\u05e8\u05d5\u05ea", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand sidebar": "\u05d4\u05e8\u05d7\u05d1 \u05e1\u05e8\u05d2\u05dc \u05e6\u05d3", "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.": "", "Full index on one page": "\u05d0\u05d9\u05e0\u05d3\u05e7\u05e1 \u05de\u05dc\u05d0 \u05d1\u05e2\u05de\u05d5\u05d3 \u05d0\u05d7\u05d3", "General Index": "", "Global Module Index": "\u05d0\u05d9\u05e0\u05d3\u05e7\u05e1 \u05de\u05d5\u05d3\u05d5\u05dc\u05d9\u05dd \u05d2\u05dc\u05d5\u05d1\u05dc\u05d9", "Go": "\u05dc\u05da", "Hide Search Matches": "\u05d4\u05e1\u05ea\u05e8 \u05ea\u05d5\u05e6\u05d0\u05d5\u05ea \u05d7\u05d9\u05e4\u05d5\u05e9", "Index": "\u05d0\u05d9\u05e0\u05d3\u05e7\u05e1", "Index – %(key)s": "", "Index pages by letter": "\u05e2\u05de\u05d5\u05d3\u05d9 \u05d0\u05d9\u05e0\u05d3\u05e7\u05e1 \u05dc\u05e4\u05d9 \u05d0\u05d5\u05ea\u05d9\u05d5\u05ea", "Indices and tables:": "", "Last updated on %(last_updated)s.": "\u05e2\u05d5\u05d3\u05db\u05df \u05dc\u05d0\u05d7\u05e8\u05d5\u05e0\u05d4 \u05d1 %(last_updated)s.", "Library changes": "", "Navigation": "\u05e0\u05d9\u05d5\u05d5\u05d8", "Next topic": "\u05e0\u05d5\u05e9\u05d0 \u05d4\u05d1\u05d0", "Other changes": "\u05e9\u05d9\u05e0\u05d5\u05d9\u05d9\u05dd \u05d0\u05d7\u05e8\u05d9\u05dd", "Overview": "\u05e1\u05e7\u05d9\u05e8\u05d4 \u05db\u05dc\u05dc\u05d9\u05ea", "Permalink to this definition": "\u05e7\u05d9\u05e9\u05d5\u05e8 \u05e7\u05d1\u05d5\u05e2 \u05dc\u05d4\u05d2\u05d3\u05e8\u05d4 \u05d6\u05d5", "Permalink to this headline": "\u05e7\u05d9\u05e9\u05d5\u05e8 \u05e7\u05d1\u05d5\u05e2 \u05dc\u05db\u05d5\u05ea\u05e8\u05ea \u05d6\u05d5", "Please activate JavaScript to enable the search\n functionality.": "\u05d0\u05e0\u05d0 \u05d4\u05e4\u05e2\u05dc \u05d2'\u05d0\u05d5\u05d0\u05e1\u05e7\u05e8\u05d9\u05e4\u05d8 \u05e2\"\u05de \u05dc\u05d0\u05e4\u05e9\u05e8 \u05d0\u05ea\n \u05d4\u05d7\u05d9\u05e4\u05d5\u05e9.", "Preparing search...": "", "Previous topic": "\u05e0\u05d5\u05e9\u05d0 \u05e7\u05d5\u05d3\u05dd", "Quick search": "\u05d7\u05d9\u05e4\u05d5\u05e9 \u05de\u05d4\u05d9\u05e8", "Search": "\u05d7\u05d9\u05e4\u05d5\u05e9", "Search Page": "\u05d3\u05e3 \u05d7\u05d9\u05e4\u05d5\u05e9", "Search Results": "\u05ea\u05d5\u05e6\u05d0\u05d5\u05ea \u05d4\u05d7\u05d9\u05e4\u05d5\u05e9", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "\u05d7\u05e4\u05e9 \u05d1\u05ea\u05d5\u05da %(docstitle)s", "Searching": "", "Show Source": "\u05d4\u05e6\u05d2 \u05de\u05e7\u05d5\u05e8", "Table Of Contents": "\u05ea\u05d5\u05db\u05df \u05e2\u05e0\u05d9\u05d9\u05e0\u05d9\u05dd", "This Page": "\u05e2\u05de\u05d5\u05d3 \u05d6\u05d4", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "\u05db\u05dc \u05d4\u05e4\u05d5\u05e0\u05e7\u05e6\u05d9\u05d5\u05ea, \u05d4\u05de\u05d7\u05dc\u05e7\u05d5\u05ea, \u05d4\u05de\u05d5\u05e9\u05d2\u05d9\u05dd", "can be huge": "\u05e2\u05e9\u05d5\u05d9 \u05dc\u05d4\u05d9\u05d5\u05ea \u05e2\u05e6\u05d5\u05dd", "last updated": "", "lists all sections and subsections": "", "next chapter": "\u05e4\u05e8\u05e7 \u05d4\u05d1\u05d0", "previous chapter": "\u05e4\u05e8\u05e7 \u05e7\u05d5\u05d3\u05dd", "quick access to all modules": "\u05d2\u05d9\u05e9\u05d4 \u05de\u05d4\u05d9\u05e8\u05d4 \u05dc\u05db\u05dc \u05d4\u05de\u05d5\u05d3\u05d5\u05dc\u05d9\u05dd", "search": "\u05d7\u05d9\u05e4\u05d5\u05e9", "search this documentation": "\u05d7\u05e4\u05e9 \u05d1\u05ea\u05d9\u05e2\u05d5\u05d3 \u05d6\u05d4", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/locale/he/LC_MESSAGES/sphinx.mo b/sphinx/locale/he/LC_MESSAGES/sphinx.mo index 831e3d3e5370fa5652f49d05c34cf25a476da915..0a4fab10d1faf8ec4632f91d2e66b76d5483c9d1 100644 GIT binary patch delta 3916 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 U-0iuv5%*Bl_dJTBs)=b|0r61&TL1t6 delta 3545 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 LI40s24vYB<yqls( diff --git a/sphinx/locale/he/LC_MESSAGES/sphinx.po b/sphinx/locale/he/LC_MESSAGES/sphinx.po index 3f1141ec1..070a79c68 100644 --- a/sphinx/locale/he/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/he/LC_MESSAGES/sphinx.po @@ -8,61 +8,42 @@ msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Hebrew (http://www.transifex.com/sphinx-doc/sphinx-1/language/he/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: he\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "תיעוד %s %s" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "ראה %s" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "ראה גם %s" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "" @@ -71,8 +52,11 @@ msgstr "" msgid "Module level" msgstr "רמת המודול" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -83,18 +67,28 @@ msgstr "" msgid "index" msgstr "אינדקס" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "הבא" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "הקודם" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "תיעוד %s %s" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr "(בתוך" +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "מחבר הקטע:" @@ -111,23 +105,23 @@ msgstr "מחבר הקוד:" msgid "Author: " msgstr "מחבר:" -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "פרמטרים" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "" @@ -156,12 +150,12 @@ msgstr "" msgid "%s (C variable)" msgstr "" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "פונקציה" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "" @@ -169,7 +163,7 @@ msgstr "" msgid "macro" msgstr "מאקרו" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "" @@ -177,63 +171,72 @@ msgstr "" msgid "variable" msgstr "משתנה" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (פונקציית C++)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (מחלקת C++)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "מחלקה" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "" @@ -248,7 +251,7 @@ msgstr "" msgid "%s (global variable or constant)" msgstr "" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "" @@ -257,116 +260,116 @@ msgstr "" msgid "Arguments" msgstr "" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "משתנים" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "מודול" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr "" @@ -388,120 +391,147 @@ msgstr "" msgid "role" msgstr "" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "משתנה סביבה; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%sאופציית שורת הפקודה ; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "משתנה סביבה" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "אינדקס" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "מודול אינדקס" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "דף חיפוש" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" +msgid "see %s" +msgstr "ראה %s" + +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "ראה גם %s" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" msgstr "" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[מקור]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "לעשות" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "הטקסט המקורי" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[תיעוד]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "<h1>הראה קוד מקור ל %s</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "<h1>כל המודולים שיש להם קוד זמין</h1>" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "תשומת לב" @@ -582,7 +612,7 @@ msgstr "" msgid "Table Of Contents" msgstr "תוכן עניינים" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -640,15 +670,15 @@ msgstr "גישה מהירה לכל המודולים" msgid "all functions, classes, terms" msgstr "כל הפונקציות, המחלקות, המושגים" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "אינדקס מלא בעמוד אחד" @@ -664,35 +694,35 @@ msgstr "עשוי להיות עצום" msgid "Navigation" msgstr "ניווט" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "חפש בתוך %(docstitle)s" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "על מסמכים אלו" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "זכויות שמורות" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">זכויות שמורות</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© זכויות שמורות %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "עודכן לאחרונה ב %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -741,13 +771,13 @@ msgstr "חיפוש" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "תוצאות החיפוש" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -764,12 +794,12 @@ msgstr "עמוד זה" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "שינויים בגרסה %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 @@ -789,12 +819,13 @@ msgstr "" msgid "Other changes" msgstr "שינויים אחרים" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "קישור קבוע לכותרת זו" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "קישור קבוע להגדרה זו" @@ -810,12 +841,12 @@ msgstr "" msgid "Preparing search..." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr "" @@ -832,48 +863,53 @@ msgstr "כווץ סרגל צד" msgid "Contents" msgstr "תוכן" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "מהדורה" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "הערות שוליים" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "המשך מעמוד קודם" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "המשך בעמוד הבא" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[תמונה]" diff --git a/sphinx/locale/hi/LC_MESSAGES/sphinx.js b/sphinx/locale/hi/LC_MESSAGES/sphinx.js index c433cb64b..5d9197c5c 100644 --- a/sphinx/locale/hi/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/hi/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "hi", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "", "Automatically generated list of changes in version %(version)s": "", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "", "Contents": "", "Copyright": "", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand 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.": "", "Full index on one page": "", "General Index": "", "Global Module Index": "", "Go": "", "Hide Search Matches": "", "Index": "\u0905\u0928\u0941\u0915\u094d\u0930\u092e\u0923\u093f\u0915\u093e", "Index – %(key)s": "", "Index pages by letter": "", "Indices and tables:": "", "Last updated on %(last_updated)s.": "", "Library changes": "", "Navigation": "", "Next topic": "", "Other changes": "", "Overview": "", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "", "Previous topic": "", "Quick search": "", "Search": "", "Search Page": "\u0916\u094b\u091c \u092a\u0943\u0937\u094d\u0920", "Search Results": "", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "", "Show Source": "", "Table Of Contents": "", "This Page": "", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "", "can be huge": "", "last updated": "", "lists all sections and subsections": "", "next chapter": "", "previous chapter": "", "quick access to all modules": "", "search": "", "search this documentation": "", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file +Documentation.addTranslations({"locale": "hi", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "", "Automatically generated list of changes in version %(version)s": "", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "", "Contents": "", "Copyright": "", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "<a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s \u0938\u0947 \u092c\u0928\u093e\u092f\u093e \u0917\u092f\u093e\u0964 ", "Expand 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.": "", "Full index on one page": "", "General Index": "", "Global Module Index": "", "Go": "", "Hide Search Matches": "", "Index": "\u0905\u0928\u0941\u0915\u094d\u0930\u092e\u0923\u093f\u0915\u093e", "Index – %(key)s": "", "Index pages by letter": "", "Indices and tables:": "", "Last updated on %(last_updated)s.": "", "Library changes": "", "Navigation": "", "Next topic": "", "Other changes": "", "Overview": "", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "\u0916\u094b\u091c \u0928\u0947 \u0915\u0947 \u0932\u093f\u090f JavaScript \u0915\u093e \u0939\u094b\u0928\u093e \u0906\u0935\u0936\u094d\u092f\u0915 \u0939\u0948. \u0915\u0943\u092a\u092f\u093e JavaScript \u0915\u094b \u0936\u0936\u0915\u094d\u0924 \u0915\u0940\u091c\u093f\u092f\u0947 ", "Preparing search...": "", "Previous topic": "", "Quick search": "", "Search": "", "Search Page": "\u0916\u094b\u091c \u092a\u0943\u0937\u094d\u0920", "Search Results": "\u0916\u094b\u091c \u092a\u0930\u0940\u0923\u093e\u092e ", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "", "Show Source": "", "Table Of Contents": "", "This Page": "\u092f\u0939 \u092a\u0943\u0937\u094d\u0920 ", "Welcome! This is": "\u0928\u092e\u0936\u094d\u0915\u093e\u0930\u0964 \u092f\u0939 \u0939\u0948 ", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "", "can be huge": "", "last updated": "", "lists all sections and subsections": "", "next chapter": "", "previous chapter": "", "quick access to all modules": "", "search": "", "search this documentation": "", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/locale/hi/LC_MESSAGES/sphinx.mo b/sphinx/locale/hi/LC_MESSAGES/sphinx.mo index e036b1709889df1edc3bff373e6900bc90c9e6ca..ee436826d961a61a532467f880c1631c55fc3230 100644 GIT binary patch literal 11591 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 delta 3547 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 O0S*7EkH0AGH`iZhlAz%L diff --git a/sphinx/locale/hi/LC_MESSAGES/sphinx.po b/sphinx/locale/hi/LC_MESSAGES/sphinx.po index 937e97f81..2e88893ac 100644 --- a/sphinx/locale/hi/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/hi/LC_MESSAGES/sphinx.po @@ -3,66 +3,47 @@ # This file is distributed under the same license as the Sphinx project. # # Translators: -# Purnank H. Ghumalia <me@purnank.in>, 2015 +# Purnank H. Ghumalia <me@purnank.in>, 2015-2016 msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Hindi (http://www.transifex.com/sphinx-doc/sphinx-1/language/hi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: hi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "चित्र %s" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "%s देखिए" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python सुधार का सुझाव; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "" @@ -71,8 +52,11 @@ msgstr "" msgid "Module level" msgstr "" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -83,18 +67,28 @@ msgstr "" msgid "index" msgstr "अनुक्रमणिका" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr "" +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "" @@ -109,25 +103,25 @@ msgstr "" #: sphinx/directives/other.py:155 msgid "Author: " -msgstr "" +msgstr "लेखक:" -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "" @@ -156,12 +150,12 @@ msgstr "" msgid "%s (C variable)" msgstr "" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "" @@ -169,7 +163,7 @@ msgstr "" msgid "macro" msgstr "" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "" @@ -177,63 +171,72 @@ msgstr "" msgid "variable" msgstr "" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "" @@ -248,7 +251,7 @@ msgstr "" msgid "%s (global variable or constant)" msgstr "" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "" @@ -257,116 +260,116 @@ msgstr "" msgid "Arguments" msgstr "" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr "" @@ -388,135 +391,162 @@ msgstr "" msgid "role" msgstr "" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "अनुक्रमणिका" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "खोज पृष्ठ" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" +msgid "see %s" +msgstr "%s देखिए" + +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" msgstr "" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "मूल entry" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "<h1>%s का स्रोत code</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" -msgstr "" +msgstr "सावधान" #: sphinx/locale/__init__.py:160 msgid "Caution" -msgstr "" +msgstr "चेतावनी" #: sphinx/locale/__init__.py:161 msgid "Danger" -msgstr "" +msgstr "खतरा" #: sphinx/locale/__init__.py:162 msgid "Error" -msgstr "" +msgstr "गलती" #: sphinx/locale/__init__.py:163 msgid "Hint" @@ -524,7 +554,7 @@ msgstr "" #: sphinx/locale/__init__.py:164 msgid "Important" -msgstr "" +msgstr "महत्त्वपूर्ण" #: sphinx/locale/__init__.py:165 msgid "Note" @@ -545,17 +575,17 @@ msgstr "" #: sphinx/locale/__init__.py:172 #, python-format msgid "New in version %s" -msgstr "" +msgstr "संस्करण %s से नया " #: sphinx/locale/__init__.py:173 #, python-format msgid "Changed in version %s" -msgstr "" +msgstr "संस्करण %s से अलग " #: sphinx/locale/__init__.py:174 #, python-format msgid "Deprecated since version %s" -msgstr "" +msgstr "संस्करण %s से प्रतिबंधित " #: sphinx/locale/__init__.py:180 msgid "keyword" @@ -582,7 +612,7 @@ msgstr "" msgid "Table Of Contents" msgstr "" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -602,7 +632,7 @@ msgstr "" #: sphinx/themes/basic/defindex.html:15 msgid "Welcome! This is" -msgstr "" +msgstr "नमश्कार। यह है " #: sphinx/themes/basic/defindex.html:16 msgid "the documentation for" @@ -640,15 +670,15 @@ msgstr "" msgid "all functions, classes, terms" msgstr "" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "" @@ -664,45 +694,45 @@ msgstr "" msgid "Navigation" msgstr "" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." +msgid "© Copyright %(copyright)s." msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "" -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " "%(sphinx_version)s." -msgstr "" +msgstr "<a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s से बनाया गया। " #: sphinx/themes/basic/opensearch.xml:4 #, python-format msgid "Search %(docstitle)s" -msgstr "" +msgstr " %(docstitle)s में खोजिए " #: sphinx/themes/basic/relations.html:11 msgid "Previous topic" @@ -724,7 +754,7 @@ msgstr "" msgid "" "Please activate JavaScript to enable the search\n" " functionality." -msgstr "" +msgstr "खोज ने के लिए JavaScript का होना आवश्यक है. कृपया JavaScript को शशक्त कीजिये " #: sphinx/themes/basic/search.html:32 msgid "" @@ -741,13 +771,13 @@ msgstr "" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" -msgstr "" +msgstr "खोज परीणाम " #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -759,17 +789,17 @@ msgstr "" #: sphinx/themes/basic/sourcelink.html:12 msgid "This Page" -msgstr "" +msgstr "यह पृष्ठ " #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 @@ -789,12 +819,13 @@ msgstr "" msgid "Other changes" msgstr "" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "" @@ -810,12 +841,12 @@ msgstr "" msgid "Preparing search..." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr "" @@ -832,48 +863,53 @@ msgstr "" msgid "Contents" msgstr "" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "" diff --git a/sphinx/locale/hr/LC_MESSAGES/sphinx.js b/sphinx/locale/hr/LC_MESSAGES/sphinx.js index 52c26192e..0be353de1 100644 --- a/sphinx/locale/hr/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/hr/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "hr", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Sva prava zadr\u017eana</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Sva prava zadr\u017eana %(copyright)s.", ", in ": ", u ", "About these documents": "O ovim dokumentima", "Automatically generated list of changes in version %(version)s": "Automatically generated list of changes in version %(version)s", "C API changes": "C API changes", "Changes in Version %(version)s — %(docstitle)s": "Changes in Version %(version)s — %(docstitle)s", "Collapse sidebar": "Sakrij pomo\u0107nu traku", "Complete Table of Contents": "Potpuna tabela sadr\u017eaja", "Contents": "Sadr\u017eaj", "Copyright": "Sva prava zadr\u017eana", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Izra\u0111eno sa <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Poka\u017ei pomo\u0107nu traku", "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.": "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.", "Full index on one page": "Potpun indeks na jednoj strani", "General Index": "Opceniti abecedni indeks", "Global Module Index": "Op\u0107eniti popis modula", "Go": "Naprijed", "Hide Search Matches": "Sakrij rezultate pretrage", "Index": "Abecedni popis", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "Indeksiraj stranice po slovu", "Indices and tables:": "Kazala i tabele:", "Last updated on %(last_updated)s.": "Zadnji put a\u017eurirano %(last_updated)s.", "Library changes": "Library changes", "Navigation": "Navigacija", "Next topic": "Slijede\u0107a tema", "Other changes": "Ostale promjene", "Overview": "Pregled", "Permalink to this definition": "Link na tu definiciju", "Permalink to this headline": "Link na taj naslov", "Please activate JavaScript to enable the search\n functionality.": "Molimo omogu\u0107ite JavaScript\n za djelovanje tra\u017eilice.", "Preparing search...": "Priprema pretrage...", "Previous topic": "Prija\u0161nja tema", "Quick search": "Brzo pretra\u017eivanje", "Search": "Tra\u017ei", "Search Page": "Tra\u017eilica", "Search Results": "Rezultati pretrage", "Search finished, found %s page(s) matching the search query.": "Pretraga zavr\u0161ena, prona\u0111eno %s stranica.", "Search within %(docstitle)s": "Tra\u017ei izme\u0111u %(docstitle)s", "Searching": "Pretra\u017eivanje", "Show Source": "Prika\u017ei izvorni kod", "Table Of Contents": "Pregled sadr\u017eaja", "This Page": "Trenutna stranica", "Welcome! This is": "Dobro do\u0161li! Ovo je", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Zadanim uvjetima nije prona\u0111en dokument. Molim provjerite to\u010dnost upisanih rije\u010di i odabir ozna\u010denih kategija.", "all functions, classes, terms": "sve funkcije, razredi, izrazi", "can be huge": "mo\u017ee biti veliko", "last updated": "posljednja promjena", "lists all sections and subsections": "prika\u017ei sve sekcije i podsekcije", "next chapter": "slijede\u0107e poglavje", "previous chapter": "Prija\u0161nje poglavje", "quick access to all modules": "brz dostup do svih modulov", "search": "tra\u017ei", "search this documentation": "tra\u017ei po dokumentaciji", "the documentation for": "dokumentacija za"}, "plural_expr": "n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2"}); \ No newline at end of file +Documentation.addTranslations({"locale": "hr", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Sva prava zadr\u017eana</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Sva prava zadr\u017eana %(copyright)s.", ", in ": ", u ", "About these documents": "O ovim dokumentima", "Automatically generated list of changes in version %(version)s": "Automatski generirani popis promjena u verziji %(version)s", "C API changes": "C API promjene", "Changes in Version %(version)s — %(docstitle)s": "Promjene u verziji %(version)s — %(docstitle)s", "Collapse sidebar": "Sakrij pomo\u0107nu traku", "Complete Table of Contents": "Detaljni sadr\u017eaj", "Contents": "Sadr\u017eaj", "Copyright": "Sva prava zadr\u017eana", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Izra\u0111eno sa <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Poka\u017ei pomo\u0107nu traku", "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.": "Ovdje mo\u017eete pretra\u017eivati dokumente. Unesite rije\u010di za pretra\u017eivanje \nu okvir ispod i kliknite \"tra\u017ei\". Znajte da \u0107e pretra\u017eivanje automatski \ntra\u017eiti sve upisane rije\u010di. Stranice koje ne sadr\u017ee sve rije\u010di ne\u0107e se\npojaviti na popisu rezultata.", "Full index on one page": "Potpun indeks na jednoj stranici", "General Index": "Opceniti abecedni indeks", "Global Module Index": "Op\u0107eniti popis modula", "Go": "Naprijed", "Hide Search Matches": "Sakrij rezultate pretrage", "Index": "Abecedni popis", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "Indeksiraj stranice po slovu", "Indices and tables:": "Kazala i tablice:", "Last updated on %(last_updated)s.": "Zadnji put a\u017eurirano %(last_updated)s.", "Library changes": "Promjene lib-ova", "Navigation": "Navigacija", "Next topic": "Sljede\u0107a tema", "Other changes": "Ostale promjene", "Overview": "Pregled", "Permalink to this definition": "Link na tu definiciju", "Permalink to this headline": "Link na taj naslov", "Please activate JavaScript to enable the search\n functionality.": "Molimo omogu\u0107ite JavaScript\n za djelovanje tra\u017eilice.", "Preparing search...": "Priprema pretrage...", "Previous topic": "Prija\u0161nja tema", "Quick search": "Brzo pretra\u017eivanje", "Search": "Tra\u017ei", "Search Page": "Tra\u017eilica", "Search Results": "Rezultati pretrage", "Search finished, found %s page(s) matching the search query.": "Pretraga zavr\u0161ena, prona\u0111eno %s stranica.", "Search within %(docstitle)s": "Tra\u017ei izme\u0111u %(docstitle)s", "Searching": "Pretra\u017eivanje", "Show Source": "Prika\u017ei izvorni kod", "Table Of Contents": "Pregled sadr\u017eaja", "This Page": "Trenutna stranica", "Welcome! This is": "Dobro do\u0161li! Ovo je", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Zadanim uvjetima nije prona\u0111en dokument. Molim provjerite to\u010dnost upisanih rije\u010di i odabir ozna\u010denih kategija.", "all functions, classes, terms": "sve funkcije, razredi, izrazi", "can be huge": "mo\u017ee biti ogromno", "last updated": "posljednja promjena", "lists all sections and subsections": "prika\u017ei sve sekcije i podsekcije", "next chapter": "sljede\u0107e poglavlje", "previous chapter": "Prija\u0161nje poglavlje", "quick access to all modules": "brz dostup do svih modula", "search": "tra\u017ei", "search this documentation": "tra\u017ei po dokumentaciji", "the documentation for": "dokumentacija za"}, "plural_expr": "n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2"}); \ No newline at end of file diff --git a/sphinx/locale/hr/LC_MESSAGES/sphinx.mo b/sphinx/locale/hr/LC_MESSAGES/sphinx.mo index ae4063fb6abdee24b71aba50627dc32290960397..59b42ff2bb162c5d390f24bfc969712274309fd0 100644 GIT binary patch delta 4382 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 Yd+~gnIXApG6w5swZV5TL^Wks&2fcE!n*aa+ delta 3632 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 diff --git a/sphinx/locale/hr/LC_MESSAGES/sphinx.po b/sphinx/locale/hr/LC_MESSAGES/sphinx.po index 416026f78..dbe6bf54e 100644 --- a/sphinx/locale/hr/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/hr/LC_MESSAGES/sphinx.po @@ -8,61 +8,42 @@ msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 15:32+0000\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 15:49+0000\n" "Last-Translator: Mario Šarić\n" "Language-Team: Croatian (http://www.transifex.com/sphinx-doc/sphinx-1/language/hr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: hr\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "Poglavlje %s" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "Slika %s" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "Tablica %s" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "Ispis %s" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "%s %s dokumentacija" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "pogledajte %s" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "također pogledajte %s" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "Simboli" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python Enhancement Proposals; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "MMMM dd, YYYY" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "Ugrađeni dijelovi" @@ -71,9 +52,12 @@ msgstr "Ugrađeni dijelovi" msgid "Module level" msgstr "Nivo modula" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" -msgstr "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" +msgstr "%b %d, %Y" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 msgid "General Index" @@ -83,18 +67,28 @@ msgstr "Opceniti abecedni indeks" msgid "index" msgstr "abecedni indeks" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "naprijed" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "nazad" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s dokumentacija" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr " (u " +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "Neispravan navod: %s" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "Autor sekcije: " @@ -111,23 +105,23 @@ msgstr "Autor koda:" msgid "Author: " msgstr "Autor:" -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Parametri" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "Vraća" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "Vraća tip" @@ -156,12 +150,12 @@ msgstr "%s (C tip)" msgid "%s (C variable)" msgstr "%s (C varijabla)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "funkcija" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "član" @@ -169,7 +163,7 @@ msgstr "član" msgid "macro" msgstr "makro" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "tip" @@ -177,63 +171,72 @@ msgstr "tip" msgid "variable" msgstr "varijabla" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "Parametri predloška" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "Baca (iznimke)" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (C++ tip)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "%s (C++ koncept)" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (C++ član)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (C++ funkcija)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (C++ razred)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "%s (C++ enum)" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "%s (C++ enumerator)" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "razred" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "koncept" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "enum" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "enumerator" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (ugrađene funkcije)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (%s metoda)" @@ -248,7 +251,7 @@ msgstr "%s() (razred)" msgid "%s (global variable or constant)" msgstr "%s (globalna varijabla ili konstanta)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (%s atribut)" @@ -257,116 +260,116 @@ msgstr "%s (%s atribut)" msgid "Arguments" msgstr "Argumenti" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "podaci" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "atribut" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "Varijable" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "Podiže" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (u modulu %s)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (ugrađene variable)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (u modulu %s)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (ugrađen razred)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (razred u %s)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (%s.%s metoda)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (%s.%s statična metoda)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (%s statična metoda)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "%s() (%s.%s metoda klase)" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "%s() (%s metoda klase)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (%s.%s atribut)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (modul)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "Python indeks modula" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "Moduli" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "Zastarjelo" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "izuzetak" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "metoda" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "metoda klase" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "statična metoda" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "modul" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr " (zastarjelo)" @@ -388,120 +391,147 @@ msgstr "Direktive" msgid "role" msgstr "uloga" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "varijabla okruženja; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%scommand line parameter; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "termin rječnika" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "token gramatike" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "referentna oznaka" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "varijabla okruženja" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "programske mogućnosti" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "Abecedni popis" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "Popis modula" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "Tražilica" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" -msgstr " Osnove: %s" +msgid "see %s" +msgstr "pogledajte %s" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "također pogledajte %s" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "Simboli" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "Osnovice: %s" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "nadimak za :class:`%s`" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "[graph: %s]" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "[graph]" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "Link na tu definiciju" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "(u %s v%s)" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[source]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "dvostruka oznaka jednakosti %s, drugo pojavljivanje u %s" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "Todo" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "<<original entry>>" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "(<<original entry>> se nalazi u %s, redak %d.)" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "izvorna stavka" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[docs]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "Kod modula" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "<h1>Izvorni kod za %s</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "Pregled: kod modula" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "<h1>Svi moduli za koje je dostupan kod</h1>" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "Argumenti" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "Pozor" @@ -582,7 +612,7 @@ msgstr "ugrađen funkcije" msgid "Table Of Contents" msgstr "Pregled sadržaja" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -614,11 +644,11 @@ msgstr "posljednja promjena" #: sphinx/themes/basic/defindex.html:20 msgid "Indices and tables:" -msgstr "Kazala i tabele:" +msgstr "Kazala i tablice:" #: sphinx/themes/basic/defindex.html:23 msgid "Complete Table of Contents" -msgstr "Potpuna tabela sadržaja" +msgstr "Detaljni sadržaj" #: sphinx/themes/basic/defindex.html:24 msgid "lists all sections and subsections" @@ -634,23 +664,23 @@ msgstr "Općeniti popis modula" #: sphinx/themes/basic/defindex.html:29 msgid "quick access to all modules" -msgstr "brz dostup do svih modulov" +msgstr "brz dostup do svih modula" #: sphinx/themes/basic/defindex.html:31 msgid "all functions, classes, terms" msgstr "sve funkcije, razredi, izrazi" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Index – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" -msgstr "Potpun indeks na jednoj strani" +msgstr "Potpun indeks na jednoj stranici" #: sphinx/themes/basic/genindex-split.html:16 msgid "Index pages by letter" @@ -658,41 +688,41 @@ msgstr "Indeksiraj stranice po slovu" #: sphinx/themes/basic/genindex-split.html:25 msgid "can be huge" -msgstr "može biti veliko" +msgstr "može biti ogromno" #: sphinx/themes/basic/layout.html:29 msgid "Navigation" msgstr "Navigacija" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "Traži između %(docstitle)s" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "O ovim dokumentima" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "Sva prava zadržana" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">Sva prava zadržana</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "© <a href=\"%(path)s\">Sva prava zadržana</a> %(copyright)s." -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Sva prava zadržana %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "© Sva prava zadržana %(copyright)s." -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Zadnji put ažurirano %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -710,15 +740,15 @@ msgstr "Prijašnja tema" #: sphinx/themes/basic/relations.html:13 msgid "previous chapter" -msgstr "Prijašnje poglavje" +msgstr "Prijašnje poglavlje" #: sphinx/themes/basic/relations.html:16 msgid "Next topic" -msgstr "Slijedeća tema" +msgstr "Sljedeća tema" #: sphinx/themes/basic/relations.html:18 msgid "next chapter" -msgstr "slijedeće poglavje" +msgstr "sljedeće poglavlje" #: sphinx/themes/basic/search.html:27 msgid "" @@ -732,7 +762,7 @@ msgid "" " words into the box below and click \"search\". Note that the search\n" " function will automatically search for all of the words. Pages\n" " containing fewer words won't appear in the result list." -msgstr "From here you can search these documents. Enter your search\n words into the box below and click \"search\". Note that the search\n function will automatically search for all of the words. Pages\n containing fewer words won't appear in the result list." +msgstr "Ovdje možete pretraživati dokumente. Unesite riječi za pretraživanje \nu okvir ispod i kliknite \"traži\". Znajte da će pretraživanje automatski \ntražiti sve upisane riječi. Stranice koje ne sadrže sve riječi neće se\npojaviti na popisu rezultata." #: sphinx/themes/basic/search.html:39 #: sphinx/themes/basic/searchresults.html:17 @@ -741,13 +771,13 @@ msgstr "traži" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "Rezultati pretrage" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -764,37 +794,38 @@ msgstr "Trenutna stranica" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "Changes in Version %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "Promjene u verziji %(version)s — %(docstitle)s" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "%(filename)s — %(docstitle)s" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format msgid "Automatically generated list of changes in version %(version)s" -msgstr "Automatically generated list of changes in version %(version)s" +msgstr "Automatski generirani popis promjena u verziji %(version)s" #: sphinx/themes/basic/changes/versionchanges.html:18 msgid "Library changes" -msgstr "Library changes" +msgstr "Promjene lib-ova" #: sphinx/themes/basic/changes/versionchanges.html:23 msgid "C API changes" -msgstr "C API changes" +msgstr "C API promjene" #: sphinx/themes/basic/changes/versionchanges.html:25 msgid "Other changes" msgstr "Ostale promjene" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "Link na taj naslov" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "Link na tu definiciju" @@ -810,12 +841,12 @@ msgstr "Pretraživanje" msgid "Preparing search..." msgstr "Priprema pretrage..." -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "Pretraga završena, pronađeno %s stranica." -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr ", u " @@ -832,48 +863,53 @@ msgstr "Sakrij pomoćnu traku" msgid "Contents" msgstr "Sadržaj" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "Permalink na ovaj kod" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "Permalink na ovu sliku" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "Permalink na ovaj sadržaj" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "Permalink na ovu tablicu" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "Distribucija" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "stranica" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "Nepoznata postavka: latex_elements[%r] je zanemarena." + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "Fusnote" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "nastavak sa prethodne stranice" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" -msgstr "nastavak na slijedećoj stranici" +msgstr "nastavak na sljedećoj stranici" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "[slika: %s]" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[slika]" diff --git a/sphinx/locale/hu/LC_MESSAGES/sphinx.js b/sphinx/locale/hu/LC_MESSAGES/sphinx.js index 7f2fb6b46..70c30b1b4 100644 --- a/sphinx/locale/hu/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/hu/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "hu", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Minden jog fenntartva</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Minden jog fenntartva %(copyright)s.", ", in ": ", ", "About these documents": "N\u00e9vjegy ezekr\u0151l a dokumentumokr\u00f3l", "Automatically generated list of changes in version %(version)s": "Automatikusan gener\u00e1lt v\u00e1ltoz\u00e1slista a(z) %(version)s v\u00e1ltozathoz", "C API changes": "C API v\u00e1ltoz\u00e1sok", "Changes in Version %(version)s — %(docstitle)s": "V\u00e1ltoz\u00e1sok a(z) %(version)s v\u00e1ltozatban — %(docstitle)s", "Collapse sidebar": "Oldals\u00e1v \u00f6sszez\u00e1r\u00e1sa", "Complete Table of Contents": "Teljes tartalomjegyz\u00e9k", "Contents": "Tartalom", "Copyright": "Minden jog fenntartva", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "<a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s haszn\u00e1lat\u00e1val k\u00e9sz\u00fclt.", "Expand sidebar": "Oldals\u00e1v kinyit\u00e1sa", "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.": "Err\u0151l az oldalr\u00f3l ind\u00edthatja keres\u00e9seit. \u00cdrja be a kulcsszavakat\n az al\u00e1bbi sz\u00f6vegdobozba, majd kattintson a \"keres\u00e9s\" gombra.\n \u00dcgyeljen arra, hogy a keres\u00e9s megadott kulcsszavak mindegyik\u00e9t\n figyelembe veszi, \u00edgy azok az oldalak, melyek nem tartalmazz\u00e1k az\n \u00f6sszes kifejez\u00e9st, nem jelennek meg a tal\u00e1lati list\u00e1ban.", "Full index on one page": "Teljes t\u00e1rgymutat\u00f3 egy oldalon", "General Index": "\u00c1ltal\u00e1nos t\u00e1rgymutat\u00f3", "Global Module Index": "Teljes modul t\u00e1rgymutat\u00f3", "Go": "Ok", "Hide Search Matches": "Keres\u00e9si Tal\u00e1latok Elrejt\u00e9se", "Index": "T\u00e1rgymutat\u00f3", "Index – %(key)s": "T\u00e1rgymutat\u00f3 – %(key)s", "Index pages by letter": "Oldalak ABC sorrendben", "Indices and tables:": "T\u00e1rgymutat\u00f3 \u00e9s t\u00e1bl\u00e1zatok", "Last updated on %(last_updated)s.": "Utols\u00f3 friss\u00edt\u00e9s %(last_updated)s.", "Library changes": "K\u00f6nyvt\u00e1r v\u00e1ltoz\u00e1sok", "Navigation": "Navig\u00e1ci\u00f3", "Next topic": "K\u00f6vetkez\u0151 t\u00e9mak\u00f6r", "Other changes": "Egy\u00e9b v\u00e1ltoz\u00e1sok", "Overview": "\u00c1ttekint\u00e9s", "Permalink to this definition": "Hivatkoz\u00e1s erre a defin\u00edci\u00f3ra", "Permalink to this headline": "Hivatkoz\u00e1s erre a fejezetc\u00edmre", "Please activate JavaScript to enable the search\n functionality.": "K\u00e9rem enged\u00e9lyezze a JavaScriptet a keres\u0151 funkci\u00f3\n haszn\u00e1lat\u00e1hoz.", "Preparing search...": "Felk\u00e9sz\u00fcl\u00e9s a keres\u00e9sre...", "Previous topic": "El\u0151z\u0151 t\u00e9mak\u00f6r", "Quick search": "Gyorskeres\u00e9s", "Search": "Keres\u00e9s", "Search Page": "Keres\u00e9s", "Search Results": "Keres\u00e9si Eredm\u00e9nyek", "Search finished, found %s page(s) matching the search query.": "A keres\u00e9s befejez\u0151d\u00f6tt, %s oldal egyezik a keres\u00e9si fel\u00e9teleknek.", "Search within %(docstitle)s": "Keres\u00e9s k\u00f6zt\u00fck: %(docstitle)s", "Searching": "Keres\u00e9s folyamatban", "Show Source": "Forr\u00e1s megtekint\u00e9se", "Table Of Contents": "Tartalomjegyz\u00e9k", "This Page": "Ez az Oldal", "Welcome! This is": "\u00dcdv\u00f6z\u00f6lj\u00fck! Ez a", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "A keres\u00e9se nem hozott eredm\u00e9nyt. Ellen\u0151rizze, a megadott kulcsszavakat \u00e9s azt, hogy megfelel\u0151 sz\u00e1m\u00fa kateg\u00f3ria van-e kiv\u00e1lasztva.", "all functions, classes, terms": "\u00f6sszes funkci\u00f3, oszt\u00e1ly \u00e9s kifejez\u00e9s", "can be huge": "nagy lehet", "last updated": "utolj\u00e1ra friss\u00edtve", "lists all sections and subsections": "kilist\u00e1zza az \u00f6sszes fejezetet \u00e9s alfejezetet", "next chapter": "k\u00f6vetkez\u0151 fejezet", "previous chapter": "el\u0151z\u0151 fejezet", "quick access to all modules": "gyors hozz\u00e1f\u00e9r\u00e9s az \u00f6sszes modulhoz", "search": "keres\u00e9s", "search this documentation": "keres\u00e9s ebben a dokument\u00e1ci\u00f3ban", "the documentation for": "dokument\u00e1ci\u00f3"}, "plural_expr": "(n != 1)"}); \ No newline at end of file +Documentation.addTranslations({"locale": "hu", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": ", ", "About these documents": "N\u00e9vjegy ezekr\u0151l a dokumentumokr\u00f3l", "Automatically generated list of changes in version %(version)s": "Automatikusan gener\u00e1lt v\u00e1ltoz\u00e1slista a(z) %(version)s v\u00e1ltozathoz", "C API changes": "C API v\u00e1ltoz\u00e1sok", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "Oldals\u00e1v \u00f6sszez\u00e1r\u00e1sa", "Complete Table of Contents": "Teljes tartalomjegyz\u00e9k", "Contents": "Tartalom", "Copyright": "Minden jog fenntartva", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "<a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s haszn\u00e1lat\u00e1val k\u00e9sz\u00fclt.", "Expand sidebar": "Oldals\u00e1v kinyit\u00e1sa", "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.": "Err\u0151l az oldalr\u00f3l ind\u00edthatja keres\u00e9seit. \u00cdrja be a kulcsszavakat\n az al\u00e1bbi sz\u00f6vegdobozba, majd kattintson a \"keres\u00e9s\" gombra.\n \u00dcgyeljen arra, hogy a keres\u00e9s megadott kulcsszavak mindegyik\u00e9t\n figyelembe veszi, \u00edgy azok az oldalak, melyek nem tartalmazz\u00e1k az\n \u00f6sszes kifejez\u00e9st, nem jelennek meg a tal\u00e1lati list\u00e1ban.", "Full index on one page": "Teljes t\u00e1rgymutat\u00f3 egy oldalon", "General Index": "\u00c1ltal\u00e1nos t\u00e1rgymutat\u00f3", "Global Module Index": "Teljes modul t\u00e1rgymutat\u00f3", "Go": "Ok", "Hide Search Matches": "Keres\u00e9si Tal\u00e1latok Elrejt\u00e9se", "Index": "T\u00e1rgymutat\u00f3", "Index – %(key)s": "T\u00e1rgymutat\u00f3 – %(key)s", "Index pages by letter": "Oldalak ABC sorrendben", "Indices and tables:": "T\u00e1rgymutat\u00f3 \u00e9s t\u00e1bl\u00e1zatok", "Last updated on %(last_updated)s.": "Utols\u00f3 friss\u00edt\u00e9s %(last_updated)s.", "Library changes": "K\u00f6nyvt\u00e1r v\u00e1ltoz\u00e1sok", "Navigation": "Navig\u00e1ci\u00f3", "Next topic": "K\u00f6vetkez\u0151 t\u00e9mak\u00f6r", "Other changes": "Egy\u00e9b v\u00e1ltoz\u00e1sok", "Overview": "\u00c1ttekint\u00e9s", "Permalink to this definition": "Hivatkoz\u00e1s erre a defin\u00edci\u00f3ra", "Permalink to this headline": "Hivatkoz\u00e1s erre a fejezetc\u00edmre", "Please activate JavaScript to enable the search\n functionality.": "K\u00e9rem enged\u00e9lyezze a JavaScriptet a keres\u0151 funkci\u00f3\n haszn\u00e1lat\u00e1hoz.", "Preparing search...": "Felk\u00e9sz\u00fcl\u00e9s a keres\u00e9sre...", "Previous topic": "El\u0151z\u0151 t\u00e9mak\u00f6r", "Quick search": "Gyorskeres\u00e9s", "Search": "Keres\u00e9s", "Search Page": "Keres\u00e9s", "Search Results": "Keres\u00e9si Eredm\u00e9nyek", "Search finished, found %s page(s) matching the search query.": "A keres\u00e9s befejez\u0151d\u00f6tt, %s oldal egyezik a keres\u00e9si fel\u00e9teleknek.", "Search within %(docstitle)s": "Keres\u00e9s k\u00f6zt\u00fck: %(docstitle)s", "Searching": "Keres\u00e9s folyamatban", "Show Source": "Forr\u00e1s megtekint\u00e9se", "Table Of Contents": "Tartalomjegyz\u00e9k", "This Page": "Ez az Oldal", "Welcome! This is": "\u00dcdv\u00f6z\u00f6lj\u00fck! Ez a", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "A keres\u00e9se nem hozott eredm\u00e9nyt. Ellen\u0151rizze, a megadott kulcsszavakat \u00e9s azt, hogy megfelel\u0151 sz\u00e1m\u00fa kateg\u00f3ria van-e kiv\u00e1lasztva.", "all functions, classes, terms": "\u00f6sszes funkci\u00f3, oszt\u00e1ly \u00e9s kifejez\u00e9s", "can be huge": "nagy lehet", "last updated": "utolj\u00e1ra friss\u00edtve", "lists all sections and subsections": "kilist\u00e1zza az \u00f6sszes fejezetet \u00e9s alfejezetet", "next chapter": "k\u00f6vetkez\u0151 fejezet", "previous chapter": "el\u0151z\u0151 fejezet", "quick access to all modules": "gyors hozz\u00e1f\u00e9r\u00e9s az \u00f6sszes modulhoz", "search": "keres\u00e9s", "search this documentation": "keres\u00e9s ebben a dokument\u00e1ci\u00f3ban", "the documentation for": "dokument\u00e1ci\u00f3"}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/locale/hu/LC_MESSAGES/sphinx.mo b/sphinx/locale/hu/LC_MESSAGES/sphinx.mo index 097931fb99c74c760e4af4fe217e0fdb60021b83..4f960d56f6db54c74b07f04a99b1507e2b671ad1 100644 GIT binary patch delta 3919 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 delta 3561 zcmZ|Pd2EzL7{~G1(sH!r>Vdu1zLmE00$VFZ3nJ8@C=?Z{<<hXw*48b%4O>tOWRW9A zsEP2RX`&`#1vDn2tOux|2^c^W5JduFQI1H0QIP~fqu}?~o!~#Z+3x3^_nmoWo@eIm zy4l}P4|gTSzG(P-#$OhHDZSPD_mh}t3}4fqpZ=JEaae%2;0W7(7?Ww&;$ZY+3NFKe zxE}eM*ZEPLt(ag;*zDv&9roh@JZ?LjM+Ll$3K-8Q^~*v9DB(xXD{%-;!9iG$in9nE zT#XvP8JW;*$9}j6hcLf6$b|-;!<+CjrsDvjXo3RFz%iJHwaA)Gi+#Qf)qfpU;M<su zr?DJkShXguKvk{^lW-!IGQXL{MJBdmD!z$Y;V$bw>`VIyj>R8rJA+lTRx=d)U>R!s zop?JwXrHe_zGgi?N~9ANZx@DDy1iUz!Y-`F^QdD`LEYl<F4O`iqB5vMk~2@DCSHsh z{|p+BF>6tA+euRk>_k=aJ&eIGY<pi4^^fJoNp2{>&!`D5pfb5=?ZapV@bZ&`Wk?as zG}Hp;p|&J|nsAA2KZok~5^4)J+xy#4<33BK{#x{x_Qpxnf_^~-`W02GZq$N$aildc z9hG4&>a7`#D(!UC846j~qRvJqR^d)0R8KHfFeOaXTrP&99!x}KG8?r8O{fyLpfY&c zwpZEb?MO`H+UIYg0>6)Aa5rk}v|3d-3)x+hk4h{&iVFoEhni@zeNcm{%wwp91yKQ3 zq89c%_QDOQignoMucG2?K~1z3*Wl-<ag!*I=9`N23!BI7jfUtAvjDZSHdJOS(Tg3Z z1$>BF*ypG~M^I;`3st$Zs4cmOTG#;IS&d6ZwY{h<yaiMA{txGZuc_ik9cQ5yP>(tT z0qauKL~BqPzJQvr1NEP9lYPDqmFYq2QR_+6xHG7QT);%V|9{vHf1@Uj<-}+Y`=dH$ zq3-9PN?K%}k4Ek71E^Epfa<>pwSXna*Q~JZS5Ot}L?yZv!^&_67n~Eb7Zu<~)P$$; z5byH^RKHJ{O{Lq9dXK+DWqu4*nQqjUss1`MsmQjQLe!RxL&ceDpU=sn{<_i14P~~% zc63n-+Jp-D2`b=Wd;csd<8EYaCY}SL*Dn_p=Wf*VhcF-K*!$0-66mncJH6DOMVkmW z_+MiVq1vbMX1s=4h?j=i<@|8VOhrx5f*Q9RId8^Az2|RZG5&_-n2{Z==oD1tYEk26 zhPkNVVm>O9H!v4>p;meZwH3di_UsByK#vpM%llA)rlI;Zpehl>akvI`mJT4t%bY+h z^b)FnID!AC+QSr7rlW8MR--y>L7m!nk!qXms55dDwKXSD3;P|ll~-}PhcN_oXwMlM zP3#%e!d^yI;6o&ru-U<d0v<=5+AdU}bEr~ZLLH*Pl!a=V0?fnvP?^j}Ww;vkI&MIX z--ufHR@7E~ggS(KQE$QV9>Yw;g(kR&sz6_&tHaHxLsx_fJQi88nPl63+kP4y?sr&s zpcZxlmB62<tsTTkoP<TFL>A#-<~J{L!PjizM<qRo%HRyf;YCy?S5OPQj#_Z)u;><* zpxPsCdorruBX}?R(ZOw~_}`)`aUR1uWZhh7KwLpI(@a!J3sA4qC{!gTqAD{RdtoE? z#b#8Th1TWv{#w+88}K=N3wvXEVKh!<A^YEl8~559Q&8=h*ca!bCiWv=6Xr(?cng*B z2dIg^LiIm}D)mpOt?I^D%qWWX%SLTw5h~88BI>Wq@8O09&OikUVLUEH4R{u{B^yu! zU&ns<4l2X#Sc+exGQ5VWP+V~|UO&`UCZQ5c!vu7~Tqwg5)WqXZf$ztj_ZpQ!18Sfj zb(%w{En11ga6M|PKE`-FfQt7$>h(Tl+c724L=sT_%F?;eVaP=VtUzTj0kx3HXdK6> z@`dU{l}=vBU79#FWqzG6)HvG7E2s<33$-@2HrE%1+?|Q9MFRal^~BB#wk&pk&MuE$ zq&W|{9}GO}b`GkE>lqjMYtYUZ_f+!O^y+G-uCBzH!N*kdxzTbnQ%*<HQulb=UxoxD z?KjnW+zV-ik^9s0V-iZshnH43x0O|nyu)qF^j1aNW#yHnWyPg@;wSq;t;1^;_yVD3 zUu$qdrBmbc`xY<sH#yT9o8~vQE%f`I@;PHdHyV*|GW&Uw%0`sME7S4KzLtf}J*jqO zdH*}rbnp9-F7Ndlsivk@HwEhI1J0AdC!B`*K%mvPpmmYYy`G(#scMXN{`+~$zzJ@n zbJg|dR3$#Tdt-BJux<CoP|)v=&&iCR>kByf(TW|(Y47E(%A4~46^k6sOYlT4=ieIR WmKJtIt`)X<+~vikk#of*G5-MSm9I1a diff --git a/sphinx/locale/hu/LC_MESSAGES/sphinx.po b/sphinx/locale/hu/LC_MESSAGES/sphinx.po index cd1c4b397..a7a86a09f 100644 --- a/sphinx/locale/hu/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/hu/LC_MESSAGES/sphinx.po @@ -9,61 +9,42 @@ msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Hungarian (http://www.transifex.com/sphinx-doc/sphinx-1/language/hu/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "%s. ábra" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "%s. táblázat" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "%s. felsorlás" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "%s %s dokumentáció" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "lásd %s" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "lásd még %s" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "Szimbólumok" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python Fejlesztési Javaslatok; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "Beépített" @@ -72,8 +53,11 @@ msgstr "Beépített" msgid "Module level" msgstr "Modul szint" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -84,18 +68,28 @@ msgstr "Általános tárgymutató" msgid "index" msgstr "nyitóoldal" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "következő" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "előző" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s dokumentáció" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr " (" +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "Fejezet szerző: " @@ -112,23 +106,23 @@ msgstr "Kód szerző: " msgid "Author: " msgstr "Szerző: " -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Paraméterek" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "Visszatérési érték" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "Visszatérés típusa" @@ -157,12 +151,12 @@ msgstr "%s (C típus)" msgid "%s (C variable)" msgstr "%s (C változó)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "függvény" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "tag" @@ -170,7 +164,7 @@ msgstr "tag" msgid "macro" msgstr "makró" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "típus" @@ -178,63 +172,72 @@ msgstr "típus" msgid "variable" msgstr "változó" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "Dob" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (C++ típus)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (C++ tagváltozó)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (C++ függvény)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (C++ osztály)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "%s (C++ enumeráció)" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "%s (C++ enumerátor)" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "osztály" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "enumeráció" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "enumerátor" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (beépített függvény)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (%s metódus)" @@ -249,7 +252,7 @@ msgstr "%s() (osztály)" msgid "%s (global variable or constant)" msgstr "%s (globális változó vagy konstans)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (%s attribútum)" @@ -258,116 +261,116 @@ msgstr "%s (%s attribútum)" msgid "Arguments" msgstr "Argumentum" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "adat" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "attribútum" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "Változók" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "Elmel" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (%s modulban)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (beépített változó)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (%s modulban)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (beépített osztály)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (osztály %s)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (%s.%s metódus)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (%s.%s statikus metódus)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (%s statikus metódus)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "%s() (%s.%s osztály metódus)" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "%s() (%s osztály metódus)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (%s.%s attribútum)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (modul)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "Python Modul Mutató" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "modulok" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "Elavult" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "kivétel" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "metódus" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "osztály szintű metódus" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "statikus metódus" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "modul" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr " (elavult)" @@ -389,120 +392,147 @@ msgstr "direktíva" msgid "role" msgstr "szerepkör" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "környezeti változó; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%sparancssor opció; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "szójegyzék" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "nyelvtani jel" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "referencia cimke" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "környezeti változó" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "program opció" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "Tárgymutató" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "Modulok" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "Keresés" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" -msgstr " Alapul: %s" +msgid "see %s" +msgstr "lásd %s" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "lásd még %s" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "Szimbólumok" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "álneve :class:`%s`" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "[graph: %s]" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "[graph]" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "(%s v%s)" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[source]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "Tennivaló" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "eredeti bejegyzés" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[docs]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "Modul forráskód" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "<h1>%s forráskódja</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "Áttekintés: modul forráskód" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "<h1>Az összes modul, melynek forrása elérhető</h1>" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "Figyelem" @@ -583,7 +613,7 @@ msgstr "beépített függvény" msgid "Table Of Contents" msgstr "Tartalomjegyzék" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -641,15 +671,15 @@ msgstr "gyors hozzáférés az összes modulhoz" msgid "all functions, classes, terms" msgstr "összes funkció, osztály és kifejezés" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Tárgymutató – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "Teljes tárgymutató egy oldalon" @@ -665,35 +695,35 @@ msgstr "nagy lehet" msgid "Navigation" msgstr "Navigáció" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "Keresés köztük: %(docstitle)s" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "Névjegy ezekről a dokumentumokról" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "Minden jog fenntartva" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">Minden jog fenntartva</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Minden jog fenntartva %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Utolsó frissítés %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -742,13 +772,13 @@ msgstr "keresés" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "Keresési Eredmények" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -765,13 +795,13 @@ msgstr "Ez az Oldal" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "Változások a(z) %(version)s változatban — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -790,12 +820,13 @@ msgstr "C API változások" msgid "Other changes" msgstr "Egyéb változások" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "Hivatkozás erre a fejezetcímre" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "Hivatkozás erre a definícióra" @@ -811,12 +842,12 @@ msgstr "Keresés folyamatban" msgid "Preparing search..." msgstr "Felkészülés a keresésre..." -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "A keresés befejeződött, %s oldal egyezik a keresési felételeknek." -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr ", " @@ -833,48 +864,53 @@ msgstr "Oldalsáv összezárása" msgid "Contents" msgstr "Tartalom" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "Permalink erre a kódrészletre" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "Permalink erre a képre" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "Permalink erre a táblázatra" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "Kiadás" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "Lábjegyzetek" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "folytatás az előző oldalról" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "A következő oldalon folytatódik" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "[image: %s]" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[image]" diff --git a/sphinx/locale/id/LC_MESSAGES/sphinx.js b/sphinx/locale/id/LC_MESSAGES/sphinx.js index 47c82b696..198e548ce 100644 --- a/sphinx/locale/id/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/id/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "id", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", di", "About these documents": "Tentang dokumen ini", "Automatically generated list of changes in version %(version)s": "Daftar perubahan dibuat otomatis untuk versi %(version)s", "C API changes": "Perubahan API C", "Changes in Version %(version)s — %(docstitle)s": "Perubahan pada Versi %(version)s — %(docstitle)s", "Collapse sidebar": "Tutup sidebar", "Complete Table of Contents": "Daftar Isi Lengkap", "Contents": "Konten", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Dibuat menggunakan <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Buka sidebar", "From here you can search these documents. Enter your search\n words into the box below and click \"search\". Note that the search\n function will automatically search for all of the words. Pages\n containing fewer words won't appear in the result list.": "Dari sini dapat dilakukan pencarian pada dokumentasi. Masukkan\n kata yang dicari pada kotak dibawah dan klik \"search\". Catatan untuk fungsi pencarian\n akan secara otomatis mencari semua kata. Halaman\n yang berisi kata yang sedikat tidak dimunculkan pada daftar hasil.", "Full index on one page": "Index penuh dalam satu halaman", "General Index": "Indeks Umum", "Global Module Index": "Index Modul Global", "Go": "Go", "Hide Search Matches": "Sembunyikan Hasil Pencarian", "Index": "Indeks", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "Index halaman berdasarkan huruf", "Indices and tables:": "Index dan tabel:", "Last updated on %(last_updated)s.": "Terakhir diperbarui pada %(last_updated)s.", "Library changes": "Perubahan library", "Navigation": "Navigasi", "Next topic": "Topik berikutnya", "Other changes": "Perubahan lain", "Overview": "Tinjauan", "Permalink to this definition": "Link permanen untuk definisi ini", "Permalink to this headline": "Link permanen untuk headline ini", "Please activate JavaScript to enable the search\n functionality.": "Tolong aktifkan JavaScript untuk melakukan pencarian.\n ", "Preparing search...": "Penyiapkan pencarian...", "Previous topic": "Topik sebelum", "Quick search": "Pencarian cepat", "Search": "Pencarian", "Search Page": "Pencarian Halaman", "Search Results": "Hasil Pencarian", "Search finished, found %s page(s) matching the search query.": "Pencarian selesai, menemukan %s halaman yang cocok dengan kueri pencarian.", "Search within %(docstitle)s": "Pencarian dalam %(docstitle)s", "Searching": "Pencarian", "Show Source": "Lihat Sumber", "Table Of Contents": "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"}); \ No newline at end of file +Documentation.addTranslations({"locale": "id", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": ", di", "About these documents": "Tentang dokumen ini", "Automatically generated list of changes in version %(version)s": "Daftar perubahan dibuat otomatis untuk versi %(version)s", "C API changes": "Perubahan API C", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "Tutup sidebar", "Complete Table of Contents": "Daftar Isi Lengkap", "Contents": "Konten", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Dibuat menggunakan <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Buka sidebar", "From here you can search these documents. Enter your search\n words into the box below and click \"search\". Note that the search\n function will automatically search for all of the words. Pages\n containing fewer words won't appear in the result list.": "Dari sini dapat dilakukan pencarian pada dokumentasi. Masukkan\n kata yang dicari pada kotak dibawah dan klik \"search\". Catatan untuk fungsi pencarian\n akan secara otomatis mencari semua kata. Halaman\n yang berisi kata yang sedikat tidak dimunculkan pada daftar hasil.", "Full index on one page": "Index penuh dalam satu halaman", "General Index": "Indeks Umum", "Global Module Index": "Index Modul Global", "Go": "Go", "Hide Search Matches": "Sembunyikan Hasil Pencarian", "Index": "Indeks", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "Index halaman berdasarkan huruf", "Indices and tables:": "Index dan tabel:", "Last updated on %(last_updated)s.": "Terakhir diperbarui pada %(last_updated)s.", "Library changes": "Perubahan library", "Navigation": "Navigasi", "Next topic": "Topik berikutnya", "Other changes": "Perubahan lain", "Overview": "Tinjauan", "Permalink to this definition": "Link permanen untuk definisi ini", "Permalink to this headline": "Link permanen untuk headline ini", "Please activate JavaScript to enable the search\n functionality.": "Tolong aktifkan JavaScript untuk melakukan pencarian.\n ", "Preparing search...": "Penyiapkan pencarian...", "Previous topic": "Topik sebelum", "Quick search": "Pencarian cepat", "Search": "Pencarian", "Search Page": "Pencarian Halaman", "Search Results": "Hasil Pencarian", "Search finished, found %s page(s) matching the search query.": "Pencarian selesai, menemukan %s halaman yang cocok dengan kueri pencarian.", "Search within %(docstitle)s": "Pencarian dalam %(docstitle)s", "Searching": "Pencarian", "Show Source": "Lihat Sumber", "Table Of Contents": "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"}); \ No newline at end of file diff --git a/sphinx/locale/id/LC_MESSAGES/sphinx.mo b/sphinx/locale/id/LC_MESSAGES/sphinx.mo index bdc0fa4361ed68da893beb3904ed82cc752b2656..58b34183b7d1d0ea8edf0edd23d3b599beae9e74 100644 GIT binary patch delta 3982 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 YnOFa*Hgf-h8ehh6a3mP^8fs7e8^V+lL;wH) delta 3556 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 N)9BtF@cNG3{U=T$sh9u& diff --git a/sphinx/locale/id/LC_MESSAGES/sphinx.po b/sphinx/locale/id/LC_MESSAGES/sphinx.po index c2fcaf71d..2035f2ca5 100644 --- a/sphinx/locale/id/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/id/LC_MESSAGES/sphinx.po @@ -10,61 +10,42 @@ msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Indonesian (http://www.transifex.com/sphinx-doc/sphinx-1/language/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "Gambar. %s" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "Tabel %s" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "Daftar %s" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "dokumentasi %s %s" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "lihat %s" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "lihat juga %s" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "Simbol" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python Enhancement Proposals; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "Modul Internal" @@ -73,8 +54,11 @@ msgstr "Modul Internal" msgid "Module level" msgstr "Level Modul" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -85,18 +69,28 @@ msgstr "Indeks Umum" msgid "index" msgstr "index" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "berikut" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "sebelum" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "dokumentasi %s %s" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr " (dalam " +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "Penyusun bagian:" @@ -113,23 +107,23 @@ msgstr "Penulis kode:" msgid "Author: " msgstr "Penyusun: " -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Parameter" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "Kembali" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "Return type" @@ -158,12 +152,12 @@ msgstr "%s (tipe C)" msgid "%s (C variable)" msgstr "%s (variabel C)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "fungsi" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "anggota" @@ -171,7 +165,7 @@ msgstr "anggota" msgid "macro" msgstr "macro" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "tipe" @@ -179,63 +173,72 @@ msgstr "tipe" msgid "variable" msgstr "variabel" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" -msgstr "" +msgstr "Parameter Templat" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "Throws" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (tipe C++)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (anggota C++)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (fungsi C++)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (class C++)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "%s (C++ enum)" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "%s (C++ enumerator)" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "class" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "enum" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "enumerator" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (fungsi built-in)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (method %s)" @@ -250,7 +253,7 @@ msgstr "%s() (class)" msgid "%s (global variable or constant)" msgstr "%s (variabel global atau konstan)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (atribut %s)" @@ -259,116 +262,116 @@ msgstr "%s (atribut %s)" msgid "Arguments" msgstr "Argumen" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "data" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "atribut" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "Variabel" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "Raises" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (di modul %s)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (variabel built-in)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (di modul %s)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (class built-in)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (class di %s)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (method %s.%s)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (method static %s.%s)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (method static %s)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "%s() (method class %s.%s)" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "%s() (method class %s)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (atribut %s.%s)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (module)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "Indeks Modul Python" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "modul" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "Akan ditinggalkan" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "eksepsi" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "method" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "method class" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "method static" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "modul" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr " (obsolet)" @@ -390,120 +393,147 @@ msgstr "direktif" msgid "role" msgstr "role" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "variabel environment; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%sopsi command line; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "daftar istilah" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "token grammar" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "label referensi" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "variabel environment" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "opsi program" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "Indeks" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "Indeks Modul" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "Pencarian Halaman" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" -msgstr " Bases: %s" +msgid "see %s" +msgstr "lihat %s" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "lihat juga %s" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "Simbol" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "alias dari :class:`%s`" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "[graph: %s]" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "[graph]" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "(di %s v%s)" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[sumber]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "Todo" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" -msgstr "" +msgstr "<<original entry>>" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" -msgstr "" +msgstr "(<<original entry>> terletak di %s, baris %d.)" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "entri asli" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[docs]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "Kode modul" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "<h1>Kode sumber untuk %s</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "Tinjauan: kode modul" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "<h1>Semua modul dimana kode tersedia</h1>" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "Pehatian" @@ -584,7 +614,7 @@ msgstr "fungsi built-in" msgid "Table Of Contents" msgstr "Daftar Isi" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -642,15 +672,15 @@ msgstr "akses cepat semua modul" msgid "all functions, classes, terms" msgstr "semua fungsi, class, term" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Index – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "Index penuh dalam satu halaman" @@ -666,35 +696,35 @@ msgstr "dapat menjadi besar" msgid "Navigation" msgstr "Navigasi" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "Pencarian dalam %(docstitle)s" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "Tentang dokumen ini" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "Copyright" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Copyright %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Terakhir diperbarui pada %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -743,13 +773,13 @@ msgstr "pencarian" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "Hasil Pencarian" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -766,13 +796,13 @@ msgstr "Halaman Ini" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "Perubahan pada Versi %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -791,12 +821,13 @@ msgstr "Perubahan API C" msgid "Other changes" msgstr "Perubahan lain" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "Link permanen untuk headline ini" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "Link permanen untuk definisi ini" @@ -812,12 +843,12 @@ msgstr "Pencarian" msgid "Preparing search..." msgstr "Penyiapkan pencarian..." -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "Pencarian selesai, menemukan %s halaman yang cocok dengan kueri pencarian." -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr ", di" @@ -834,48 +865,53 @@ msgstr "Tutup sidebar" msgid "Contents" msgstr "Konten" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "Link permanen untuk kode ini" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "Link permanen untuk gambar ini" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "Tautan ke daftar isi ini" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "Link permanen untuk table ini" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "Rilis" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" +msgstr "laman" + +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "Catatan kaki" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "lanjutan dari halaman sebelumnya" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "Lanjut ke halaman berikutnya" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "[gambar: %s]" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[gambar]" diff --git a/sphinx/locale/is/LC_MESSAGES/sphinx.js b/sphinx/locale/is/LC_MESSAGES/sphinx.js new file mode 100644 index 000000000..a3fdfe10b --- /dev/null +++ b/sphinx/locale/is/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "is", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "", "Automatically generated list of changes in version %(version)s": "", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "", "Contents": "", "Copyright": "", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand 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.": "", "Full index on one page": "", "General Index": "", "Global Module Index": "", "Go": "", "Hide Search Matches": "", "Index": "", "Index – %(key)s": "", "Index pages by letter": "", "Indices and tables:": "", "Last updated on %(last_updated)s.": "", "Library changes": "", "Navigation": "", "Next topic": "", "Other changes": "", "Overview": "", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "", "Previous topic": "", "Quick search": "", "Search": "", "Search Page": "", "Search Results": "", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "", "Show Source": "", "Table Of Contents": "", "This Page": "", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "", "can be huge": "", "last updated": "", "lists all sections and subsections": "", "next chapter": "", "previous chapter": "", "quick access to all modules": "", "search": "", "search this documentation": "", "the documentation for": ""}, "plural_expr": "(n % 10 != 1 || n % 100 == 11)"}); \ No newline at end of file diff --git a/sphinx/locale/is/LC_MESSAGES/sphinx.mo b/sphinx/locale/is/LC_MESSAGES/sphinx.mo new file mode 100644 index 0000000000000000000000000000000000000000..20e92b47e65fdc3fedee28cbef2db5f56052feed GIT binary patch literal 11151 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 literal 0 HcmV?d00001 diff --git a/sphinx/locale/is/LC_MESSAGES/sphinx.po b/sphinx/locale/is/LC_MESSAGES/sphinx.po new file mode 100644 index 000000000..09f99f4aa --- /dev/null +++ b/sphinx/locale/is/LC_MESSAGES/sphinx.po @@ -0,0 +1,914 @@ +# Translations template for Sphinx. +# Copyright (C) 2016 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Icelandic (http://www.transifex.com/sphinx-doc/sphinx-1/language/is/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.3.4\n" +"Language: is\n" +"Plural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\n" + +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:111 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:112 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/roles.py:187 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "" + +#: sphinx/builders/changes.py:75 +msgid "Builtins" +msgstr "" + +#: sphinx/builders/changes.py:77 +msgid "Module level" +msgstr "" + +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" +msgstr "" + +#: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 +msgid "General Index" +msgstr "" + +#: sphinx/builders/html.py:315 +msgid "index" +msgstr "" + +#: sphinx/builders/html.py:377 +msgid "next" +msgstr "" + +#: sphinx/builders/html.py:386 +msgid "previous" +msgstr "" + +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 +msgid " (in " +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/other.py:149 +msgid "Section author: " +msgstr "" + +#: sphinx/directives/other.py:151 +msgid "Module author: " +msgstr "" + +#: sphinx/directives/other.py:153 +msgid "Code author: " +msgstr "" + +#: sphinx/directives/other.py:155 +msgid "Author: " +msgstr "" + +#: sphinx/domains/__init__.py:277 +#, python-format +msgid "%s %s" +msgstr "" + +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 +msgid "Parameters" +msgstr "" + +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 +msgid "Returns" +msgstr "" + +#: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 +#: sphinx/domains/python.py:163 +msgid "Return type" +msgstr "" + +#: sphinx/domains/c.py:177 +#, python-format +msgid "%s (C function)" +msgstr "" + +#: sphinx/domains/c.py:179 +#, python-format +msgid "%s (C member)" +msgstr "" + +#: sphinx/domains/c.py:181 +#, python-format +msgid "%s (C macro)" +msgstr "" + +#: sphinx/domains/c.py:183 +#, python-format +msgid "%s (C type)" +msgstr "" + +#: sphinx/domains/c.py:185 +#, python-format +msgid "%s (C variable)" +msgstr "" + +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 +msgid "function" +msgstr "" + +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 +msgid "member" +msgstr "" + +#: sphinx/domains/c.py:244 +msgid "macro" +msgstr "" + +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 +msgid "type" +msgstr "" + +#: sphinx/domains/c.py:246 +msgid "variable" +msgstr "" + +#: sphinx/domains/cpp.py:4054 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 +msgid "Throws" +msgstr "" + +#: sphinx/domains/cpp.py:4205 +#, python-format +msgid "%s (C++ type)" +msgstr "" + +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 +#, python-format +msgid "%s (C++ member)" +msgstr "" + +#: sphinx/domains/cpp.py:4238 +#, python-format +msgid "%s (C++ function)" +msgstr "" + +#: sphinx/domains/cpp.py:4249 +#, python-format +msgid "%s (C++ class)" +msgstr "" + +#: sphinx/domains/cpp.py:4260 +#, python-format +msgid "%s (C++ enum)" +msgstr "" + +#: sphinx/domains/cpp.py:4281 +#, python-format +msgid "%s (C++ enumerator)" +msgstr "" + +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 +msgid "class" +msgstr "" + +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:4423 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 +#, python-format +msgid "%s() (built-in function)" +msgstr "" + +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 +#, python-format +msgid "%s() (%s method)" +msgstr "" + +#: sphinx/domains/javascript.py:109 +#, python-format +msgid "%s() (class)" +msgstr "" + +#: sphinx/domains/javascript.py:111 +#, python-format +msgid "%s (global variable or constant)" +msgstr "" + +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 +#, python-format +msgid "%s (%s attribute)" +msgstr "" + +#: sphinx/domains/javascript.py:122 +msgid "Arguments" +msgstr "" + +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 +msgid "data" +msgstr "" + +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 +msgid "attribute" +msgstr "" + +#: sphinx/domains/python.py:154 +msgid "Variables" +msgstr "" + +#: sphinx/domains/python.py:158 +msgid "Raises" +msgstr "" + +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 +#, python-format +msgid "%s() (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:311 +#, python-format +msgid "%s (built-in variable)" +msgstr "" + +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 +#, python-format +msgid "%s (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:328 +#, python-format +msgid "%s (built-in class)" +msgstr "" + +#: sphinx/domains/python.py:329 +#, python-format +msgid "%s (class in %s)" +msgstr "" + +#: sphinx/domains/python.py:369 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "" + +#: sphinx/domains/python.py:381 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "" + +#: sphinx/domains/python.py:384 +#, python-format +msgid "%s() (%s static method)" +msgstr "" + +#: sphinx/domains/python.py:394 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "" + +#: sphinx/domains/python.py:397 +#, python-format +msgid "%s() (%s class method)" +msgstr "" + +#: sphinx/domains/python.py:407 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "" + +#: sphinx/domains/python.py:488 +#, python-format +msgid "%s (module)" +msgstr "" + +#: sphinx/domains/python.py:545 +msgid "Python Module Index" +msgstr "" + +#: sphinx/domains/python.py:546 +msgid "modules" +msgstr "" + +#: sphinx/domains/python.py:592 +msgid "Deprecated" +msgstr "" + +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 +msgid "exception" +msgstr "" + +#: sphinx/domains/python.py:618 +msgid "method" +msgstr "" + +#: sphinx/domains/python.py:619 +msgid "class method" +msgstr "" + +#: sphinx/domains/python.py:620 +msgid "static method" +msgstr "" + +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 +msgid "module" +msgstr "" + +#: sphinx/domains/python.py:787 +msgid " (deprecated)" +msgstr "" + +#: sphinx/domains/rst.py:55 +#, python-format +msgid "%s (directive)" +msgstr "" + +#: sphinx/domains/rst.py:57 +#, python-format +msgid "%s (role)" +msgstr "" + +#: sphinx/domains/rst.py:106 +msgid "directive" +msgstr "" + +#: sphinx/domains/rst.py:107 +msgid "role" +msgstr "" + +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 +#, python-format +msgid "environment variable; %s" +msgstr "" + +#: sphinx/domains/std.py:186 +#, python-format +msgid "%scommand line option; %s" +msgstr "" + +#: sphinx/domains/std.py:434 +msgid "glossary term" +msgstr "" + +#: sphinx/domains/std.py:435 +msgid "grammar token" +msgstr "" + +#: sphinx/domains/std.py:436 +msgid "reference label" +msgstr "" + +#: sphinx/domains/std.py:438 +msgid "environment variable" +msgstr "" + +#: sphinx/domains/std.py:439 +msgid "program option" +msgstr "" + +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 +#: sphinx/themes/basic/genindex-split.html:11 +#: sphinx/themes/basic/genindex-split.html:14 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 +msgid "Index" +msgstr "" + +#: sphinx/domains/std.py:474 +msgid "Module Index" +msgstr "" + +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 +msgid "Search Page" +msgstr "" + +#: sphinx/environment/managers/indexentries.py:104 +#, python-format +msgid "see %s" +msgstr "" + +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 +#, python-format +msgid "alias of :class:`%s`" +msgstr "" + +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 +msgid "[source]" +msgstr "" + +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/ext/todo.py:56 +msgid "Todo" +msgstr "" + +#: sphinx/ext/todo.py:134 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:137 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:146 +msgid "original entry" +msgstr "" + +#: sphinx/ext/viewcode.py:166 +msgid "[docs]" +msgstr "" + +#: sphinx/ext/viewcode.py:180 +msgid "Module code" +msgstr "" + +#: sphinx/ext/viewcode.py:186 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "" + +#: sphinx/ext/viewcode.py:212 +msgid "Overview: module code" +msgstr "" + +#: sphinx/ext/viewcode.py:213 +msgid "<h1>All modules for which code is available</h1>" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/locale/__init__.py:159 +msgid "Attention" +msgstr "" + +#: sphinx/locale/__init__.py:160 +msgid "Caution" +msgstr "" + +#: sphinx/locale/__init__.py:161 +msgid "Danger" +msgstr "" + +#: sphinx/locale/__init__.py:162 +msgid "Error" +msgstr "" + +#: sphinx/locale/__init__.py:163 +msgid "Hint" +msgstr "" + +#: sphinx/locale/__init__.py:164 +msgid "Important" +msgstr "" + +#: sphinx/locale/__init__.py:165 +msgid "Note" +msgstr "" + +#: sphinx/locale/__init__.py:166 +msgid "See also" +msgstr "" + +#: sphinx/locale/__init__.py:167 +msgid "Tip" +msgstr "" + +#: sphinx/locale/__init__.py:168 +msgid "Warning" +msgstr "" + +#: sphinx/locale/__init__.py:172 +#, python-format +msgid "New in version %s" +msgstr "" + +#: sphinx/locale/__init__.py:173 +#, python-format +msgid "Changed in version %s" +msgstr "" + +#: sphinx/locale/__init__.py:174 +#, python-format +msgid "Deprecated since version %s" +msgstr "" + +#: sphinx/locale/__init__.py:180 +msgid "keyword" +msgstr "" + +#: sphinx/locale/__init__.py:181 +msgid "operator" +msgstr "" + +#: sphinx/locale/__init__.py:182 +msgid "object" +msgstr "" + +#: sphinx/locale/__init__.py:184 +msgid "statement" +msgstr "" + +#: sphinx/locale/__init__.py:185 +msgid "built-in function" +msgstr "" + +#: sphinx/themes/agogo/layout.html:46 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:11 sphinx/themes/scrolls/layout.html:35 +msgid "Table Of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 +#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 +#: sphinx/themes/basic/searchresults.html:10 +msgid "Search" +msgstr "" + +#: sphinx/themes/agogo/layout.html:54 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "" + +#: sphinx/themes/agogo/layout.html:81 sphinx/themes/basic/sourcelink.html:15 +msgid "Show Source" +msgstr "" + +#: sphinx/themes/basic/defindex.html:11 +msgid "Overview" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:17 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:20 +msgid "Indices and tables:" +msgstr "" + +#: sphinx/themes/basic/defindex.html:23 +msgid "Complete Table of Contents" +msgstr "" + +#: sphinx/themes/basic/defindex.html:24 +msgid "lists all sections and subsections" +msgstr "" + +#: sphinx/themes/basic/defindex.html:26 +msgid "search this documentation" +msgstr "" + +#: sphinx/themes/basic/defindex.html:28 +msgid "Global Module Index" +msgstr "" + +#: sphinx/themes/basic/defindex.html:29 +msgid "quick access to all modules" +msgstr "" + +#: sphinx/themes/basic/defindex.html:31 +msgid "all functions, classes, terms" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:33 +#, python-format +msgid "Index – %(key)s" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:61 +#: sphinx/themes/basic/genindex-split.html:24 +#: sphinx/themes/basic/genindex-split.html:38 +#: sphinx/themes/basic/genindex.html:72 +msgid "Full index on one page" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:16 +msgid "Index pages by letter" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:25 +msgid "can be huge" +msgstr "" + +#: sphinx/themes/basic/layout.html:29 +msgid "Navigation" +msgstr "" + +#: sphinx/themes/basic/layout.html:123 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/layout.html:132 +msgid "About these documents" +msgstr "" + +#: sphinx/themes/basic/layout.html:141 +msgid "Copyright" +msgstr "" + +#: sphinx/themes/basic/layout.html:186 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:188 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:192 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:195 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "" + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/relations.html:11 +msgid "Previous topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:13 +msgid "previous chapter" +msgstr "" + +#: sphinx/themes/basic/relations.html:16 +msgid "Next topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:18 +msgid "next chapter" +msgstr "" + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "" +"From here you can search these documents. Enter your search\n" +" words into the box below and click \"search\". Note that the search\n" +" function will automatically search for all of the words. Pages\n" +" containing fewer words won't appear in the result list." +msgstr "" + +#: sphinx/themes/basic/search.html:39 +#: sphinx/themes/basic/searchresults.html:17 +msgid "search" +msgstr "" + +#: sphinx/themes/basic/search.html:43 +#: sphinx/themes/basic/searchresults.html:21 +#: sphinx/themes/basic/static/searchtools.js_t:287 +msgid "Search Results" +msgstr "" + +#: sphinx/themes/basic/search.html:45 +#: sphinx/themes/basic/searchresults.html:23 +#: sphinx/themes/basic/static/searchtools.js_t:289 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:12 +msgid "Quick search" +msgstr "" + +#: sphinx/themes/basic/sourcelink.html:12 +msgid "This Page" +msgstr "" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 +msgid "Permalink to this headline" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 +msgid "Permalink to this definition" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js_t:208 +msgid "Hide Search Matches" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js_t:121 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js_t:126 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js_t:291 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js_t:344 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "" + +#: sphinx/themes/haiku/layout.html:24 +msgid "Contents" +msgstr "" + +#: sphinx/writers/html.py:389 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:393 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:395 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:717 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/latex.py:380 +msgid "Release" +msgstr "" + +#: sphinx/writers/latex.py:483 +msgid "page" +msgstr "" + +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 +msgid "Footnotes" +msgstr "" + +#: sphinx/writers/latex.py:1112 +msgid "continued from previous page" +msgstr "" + +#: sphinx/writers/latex.py:1118 +msgid "Continued on next page" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 +#, python-format +msgid "[image: %s]" +msgstr "" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 +msgid "[image]" +msgstr "" diff --git a/sphinx/locale/it/LC_MESSAGES/sphinx.js b/sphinx/locale/it/LC_MESSAGES/sphinx.js index f04155802..0afca4dc7 100644 --- a/sphinx/locale/it/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/it/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "it", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", in", "About these documents": "A proposito di questi documenti", "Automatically generated list of changes in version %(version)s": "Lista delle modifiche generata automaticamente nella versione %(version)s", "C API changes": "Modifiche nelle API C", "Changes in Version %(version)s — %(docstitle)s": "Modifiche nella Versione %(version)s — %(docstitle)s", "Collapse sidebar": "Comprimi la barra laterale", "Complete Table of Contents": "Tabella dei contenuti completa", "Contents": "Contenuti", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Creato con <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Espandi la barra laterale", "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.": "Puoi effettuare una ricerca in questi documenti. Immetti le parole chiave \n della tua ricerca nel riquadro sottostante \"cerca\". Nota che la funzione\n di ricerca cerca automaticamente per tutte le parole. Le pagine\n che contendono meno parole non compariranno nei risultati di ricerca.", "Full index on one page": "Indice completo in una pagina", "General Index": "Indice generale", "Global Module Index": "Indice dei moduli", "Go": "Vai", "Hide Search Matches": "Nascondi i risultati della ricerca", "Index": "Indice", "Index – %(key)s": "Indice – %(key)s", "Index pages by letter": "Indice delle pagine per lettera", "Indices and tables:": "Indici e tabelle:", "Last updated on %(last_updated)s.": "Ultimo aggiornamento %(last_updated)s.", "Library changes": "Modifiche nella libreria", "Navigation": "Navigazione", "Next topic": "Argomento successivo", "Other changes": "Altre modifiche", "Overview": "Sintesi", "Permalink to this definition": "Link a questa definizione", "Permalink to this headline": "Link a questa intestazione", "Please activate JavaScript to enable the search\n functionality.": "Attiva JavaScript per abilitare la funzione\u23ce\ndi ricerca.", "Preparing search...": "Preparo la ricerca...", "Previous topic": "Argomento precedente", "Quick search": "Ricerca veloce", "Search": "Cerca", "Search Page": "Cerca", "Search Results": "Risultati della ricerca", "Search finished, found %s page(s) matching the search query.": "Ricerca completata, trovata/e %s pagina/e corrispondenti.", "Search within %(docstitle)s": "Cerca in %(docstitle)s", "Searching": "Cerca", "Show Source": "Mostra sorgente", "Table Of Contents": "Tabella dei contenuti", "This Page": "Questa pagina", "Welcome! This is": "Benvenuto! Questa \u00e8", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "La tua ricerca non corrisponde a nessun documento. Verifica che tutte le parole siano scritte correttamente e di aver scelto un numero sufficiente di categorie.", "all functions, classes, terms": "tutte le funzioni, classi e moduli", "can be huge": "pu\u00f2 essere enorme", "last updated": "ultimo aggiornamento", "lists all sections and subsections": "elenca l'insieme delle sezioni e sottosezioni", "next chapter": "capitolo successivo", "previous chapter": "capitolo precedente", "quick access to all modules": "accesso veloce ai moduli", "search": "cerca", "search this documentation": "cerca in questa documentazione", "the documentation for": "la documentazione per"}, "plural_expr": "(n != 1)"}); \ No newline at end of file +Documentation.addTranslations({"locale": "it", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", in ", "About these documents": "A proposito di questi documenti", "Automatically generated list of changes in version %(version)s": "Lista delle modifiche generata automaticamente nella versione %(version)s", "C API changes": "Modifiche nelle API C", "Changes in Version %(version)s — %(docstitle)s": "Cambiamenti nella Versione %(version)s — %(docstitle)s", "Collapse sidebar": "Comprimi la barra laterale", "Complete Table of Contents": "Tabella dei contenuti completa", "Contents": "Contenuti", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Creato con <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Espandi la barra laterale", "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.": "Puoi effettuare una ricerca in questi documenti. Immetti le parole chiave \n della tua ricerca nel riquadro sottostante \"cerca\". Nota che la funzione\n di ricerca cerca automaticamente per tutte le parole. Le pagine\n che contendono meno parole non compariranno nei risultati di ricerca.", "Full index on one page": "Indice completo in una pagina", "General Index": "Indice generale", "Global Module Index": "Indice dei moduli", "Go": "Vai", "Hide Search Matches": "Nascondi i risultati della ricerca", "Index": "Indice", "Index – %(key)s": "Indice – %(key)s", "Index pages by letter": "Indice delle pagine per lettera", "Indices and tables:": "Indici e tabelle:", "Last updated on %(last_updated)s.": "Ultimo aggiornamento %(last_updated)s.", "Library changes": "Modifiche nella libreria", "Navigation": "Navigazione", "Next topic": "Argomento successivo", "Other changes": "Altre modifiche", "Overview": "Sintesi", "Permalink to this definition": "Link a questa definizione", "Permalink to this headline": "Link a questa intestazione", "Please activate JavaScript to enable the search\n functionality.": "Attiva JavaScript per abilitare la funzione\u23ce\ndi ricerca.", "Preparing search...": "Preparo la ricerca...", "Previous topic": "Argomento precedente", "Quick search": "Ricerca veloce", "Search": "Cerca", "Search Page": "Cerca", "Search Results": "Risultati della ricerca", "Search finished, found %s page(s) matching the search query.": "Ricerca completata, trovata/e %s pagina/e corrispondenti.", "Search within %(docstitle)s": "Cerca in %(docstitle)s", "Searching": "Cerca", "Show Source": "Mostra sorgente", "Table Of Contents": "Tabella dei contenuti", "This Page": "Questa pagina", "Welcome! This is": "Benvenuto! Questa \u00e8", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "La tua ricerca non corrisponde a nessun documento. Verifica che tutte le parole siano scritte correttamente e di aver scelto un numero sufficiente di categorie.", "all functions, classes, terms": "tutte le funzioni, classi e moduli", "can be huge": "pu\u00f2 essere enorme", "last updated": "ultimo aggiornamento", "lists all sections and subsections": "elenca l'insieme delle sezioni e sottosezioni", "next chapter": "capitolo successivo", "previous chapter": "capitolo precedente", "quick access to all modules": "accesso veloce ai moduli", "search": "cerca", "search this documentation": "cerca in questa documentazione", "the documentation for": "la documentazione per"}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/locale/it/LC_MESSAGES/sphinx.mo b/sphinx/locale/it/LC_MESSAGES/sphinx.mo index 271ff6ade4974e9fc4978c068409921a122a3754..083be7f473581a5cbd6011722215809595870b9f 100644 GIT binary patch delta 3985 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 delta 3509 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 XLi2N)!ezNluF#MD28E~hPjmkP3r>*4 diff --git a/sphinx/locale/it/LC_MESSAGES/sphinx.po b/sphinx/locale/it/LC_MESSAGES/sphinx.po index 51b0f6e56..7ed76b920 100644 --- a/sphinx/locale/it/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/it/LC_MESSAGES/sphinx.po @@ -6,65 +6,47 @@ # Paolo Cavallini <cavallini@faunalia.it>, 2013-2016 # Roland Puntaier <roland.puntaier@chello.at>, 2013 # Sandro Dentella <sandro@e-den.it>, 2008 +# Takeshi KOMIYA <i.tkomiya@gmail.com>, 2016 msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-08 08:59+0000\n" -"Last-Translator: Paolo Cavallini <cavallini@faunalia.it>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-11 15:49+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Italian (http://www.transifex.com/sphinx-doc/sphinx-1/language/it/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "Sezione %s" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "Fig. %s" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "Tabella %s" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "Listato %s" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "%s %s documentazione" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "vedi %s" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "vedi anche %s" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "Simboli" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python Enhancement Proposals; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "MMMM dd, YYYY" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "Builtins" @@ -73,9 +55,12 @@ msgstr "Builtins" msgid "Module level" msgstr "Al livello del modulo" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" -msgstr "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" +msgstr "%d %b %Y" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 msgid "General Index" @@ -85,18 +70,28 @@ msgstr "Indice generale" msgid "index" msgstr "indice" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "successivo" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "precedente" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s documentazione" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr " (in " +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "Didascalia non valida: %s" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "Autore della sezione: " @@ -113,23 +108,23 @@ msgstr "Autore del codice: " msgid "Author: " msgstr "Autore: " -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Parametri" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "Ritorna" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "Tipo di ritorno" @@ -158,12 +153,12 @@ msgstr "%s (tipo C)" msgid "%s (C variable)" msgstr "%s (variabile C)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "funzione" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "membro" @@ -171,7 +166,7 @@ msgstr "membro" msgid "macro" msgstr "macro" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "tipo" @@ -179,63 +174,72 @@ msgstr "tipo" msgid "variable" msgstr "variabile" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "Parametri del modello" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "Solleva" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (tipo C++)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "%s (concetto C++)" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (membro C++)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (funzione C++)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (classe C++)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "%s (enum C++)" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "%s (enumeratore C++)" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "classe" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "concetto" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "enum" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "enumeratore" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (funzione built-in)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (%s metodo)" @@ -250,7 +254,7 @@ msgstr "%s() (classe)" msgid "%s (global variable or constant)" msgstr "%s (variabile globale o costante)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (%s attributo)" @@ -259,116 +263,116 @@ msgstr "%s (%s attributo)" msgid "Arguments" msgstr "Parametri" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "dati" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "attributo" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "Variabili" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "Solleva" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (nel modulo %s)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (variabile built-in)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (nel modulo %s)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (classe built-in)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (classe in %s)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (%s.%s metodo)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (%s.%s metodo statico)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (%s metodo statico)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "%s() (%s.%s metodo della classe)" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "%s() (%s metodo della classe)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (%s.%s attributo)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (modulo)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "Indice del modulo Python" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "moduli" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "Deprecato" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "eccezione" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "metodo" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "metodo della classe" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "metodo statico" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "modulo" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr " (deprecato)" @@ -390,120 +394,147 @@ msgstr "direttiva" msgid "role" msgstr "ruolo" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "variabile d'ambiente, %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%sopzione di linea di comando; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "voce del glossario" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "elemento grammaticale" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "etichetta di riferimento" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "variabile d'ambiente" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "opzione del programma" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "Indice" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "Indice dei Moduli" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "Cerca" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" +msgid "see %s" +msgstr "vedi %s" + +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "vedi anche %s" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "Simboli" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" msgstr " Basi: %s" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "alias per :class:`%s`" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "[grafico: %s]" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "[grafico]" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "Permalink a questa equazione" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "(in %s v%s)" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[sorgente]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "etichetta dell'equazione %s duplicata, altra istanza in %s" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "Da fare" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "<<elemento originale>>" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "(L'<<elemento originale>> si trova in %s, linea %d.)" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "riga originale" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[documenti]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "Codice del modulo" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "<h1>Codice sorgente per %s</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "Vista generale: codice del modulo" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "<h1>Tutti i moduli di cui è disponibile il codice</h1>" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "Argomenti parole chiave" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "Attenzione" @@ -584,7 +615,7 @@ msgstr "funzione built-in" msgid "Table Of Contents" msgstr "Tabella dei contenuti" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -642,15 +673,15 @@ msgstr "accesso veloce ai moduli" msgid "all functions, classes, terms" msgstr "tutte le funzioni, classi e moduli" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Indice – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "Indice completo in una pagina" @@ -666,35 +697,35 @@ msgstr "può essere enorme" msgid "Navigation" msgstr "Navigazione" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "Cerca in %(docstitle)s" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "A proposito di questi documenti" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "Copyright" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Copyright %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "© Copyright %(copyright)s." -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Ultimo aggiornamento %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -743,13 +774,13 @@ msgstr "cerca" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "Risultati della ricerca" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -766,13 +797,13 @@ msgstr "Questa pagina" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "Modifiche nella Versione %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "Cambiamenti nella Versione %(version)s — %(docstitle)s" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "%(filename)s — %(docstitle)s" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -791,12 +822,13 @@ msgstr "Modifiche nelle API C" msgid "Other changes" msgstr "Altre modifiche" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "Link a questa intestazione" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "Link a questa definizione" @@ -812,12 +844,12 @@ msgstr "Cerca" msgid "Preparing search..." msgstr "Preparo la ricerca..." -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "Ricerca completata, trovata/e %s pagina/e corrispondenti." -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr ", in " @@ -834,48 +866,53 @@ msgstr "Comprimi la barra laterale" msgid "Contents" msgstr "Contenuti" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "Link a questo codice" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "Link a questa immagine" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "Link a questo indice" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "Link a questa tabella" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "Release" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "pagina" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "Chiave di configurazione sconosciuta: latex_elements[%r] è ignorata." + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "Note a piè di pagina" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "continua dalla pagina precedente" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "Continua alla pagina successiva" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "[immagine: %s]" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[immagine]" diff --git a/sphinx/locale/it_IT/LC_MESSAGES/sphinx.js b/sphinx/locale/it_IT/LC_MESSAGES/sphinx.js new file mode 100644 index 000000000..8c89bc811 --- /dev/null +++ b/sphinx/locale/it_IT/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "it_IT", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "", "Automatically generated list of changes in version %(version)s": "", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "", "Contents": "", "Copyright": "", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand 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.": "", "Full index on one page": "", "General Index": "", "Global Module Index": "", "Go": "", "Hide Search Matches": "", "Index": "", "Index – %(key)s": "", "Index pages by letter": "", "Indices and tables:": "", "Last updated on %(last_updated)s.": "", "Library changes": "", "Navigation": "", "Next topic": "", "Other changes": "", "Overview": "", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "", "Previous topic": "", "Quick search": "", "Search": "", "Search Page": "", "Search Results": "", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "", "Show Source": "", "Table Of Contents": "", "This Page": "", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "", "can be huge": "", "last updated": "", "lists all sections and subsections": "", "next chapter": "", "previous chapter": "", "quick access to all modules": "", "search": "", "search this documentation": "", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/locale/it_IT/LC_MESSAGES/sphinx.mo b/sphinx/locale/it_IT/LC_MESSAGES/sphinx.mo new file mode 100644 index 0000000000000000000000000000000000000000..0e90f737598a836cf68357a070dc477b46f48500 GIT binary patch literal 11130 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 P`YVR+e`Wr^UNQVHyIhA- literal 0 HcmV?d00001 diff --git a/sphinx/locale/it_IT/LC_MESSAGES/sphinx.po b/sphinx/locale/it_IT/LC_MESSAGES/sphinx.po new file mode 100644 index 000000000..7e2891b7d --- /dev/null +++ b/sphinx/locale/it_IT/LC_MESSAGES/sphinx.po @@ -0,0 +1,914 @@ +# Translations template for Sphinx. +# Copyright (C) 2016 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2013-04-02 08:44+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Italian (Italy) (http://www.transifex.com/sphinx-doc/sphinx-1/language/it_IT/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.3.4\n" +"Language: it_IT\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:111 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:112 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/roles.py:187 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "" + +#: sphinx/builders/changes.py:75 +msgid "Builtins" +msgstr "" + +#: sphinx/builders/changes.py:77 +msgid "Module level" +msgstr "" + +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" +msgstr "" + +#: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 +msgid "General Index" +msgstr "" + +#: sphinx/builders/html.py:315 +msgid "index" +msgstr "" + +#: sphinx/builders/html.py:377 +msgid "next" +msgstr "" + +#: sphinx/builders/html.py:386 +msgid "previous" +msgstr "" + +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 +msgid " (in " +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/other.py:149 +msgid "Section author: " +msgstr "" + +#: sphinx/directives/other.py:151 +msgid "Module author: " +msgstr "" + +#: sphinx/directives/other.py:153 +msgid "Code author: " +msgstr "" + +#: sphinx/directives/other.py:155 +msgid "Author: " +msgstr "" + +#: sphinx/domains/__init__.py:277 +#, python-format +msgid "%s %s" +msgstr "" + +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 +msgid "Parameters" +msgstr "" + +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 +msgid "Returns" +msgstr "" + +#: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 +#: sphinx/domains/python.py:163 +msgid "Return type" +msgstr "" + +#: sphinx/domains/c.py:177 +#, python-format +msgid "%s (C function)" +msgstr "" + +#: sphinx/domains/c.py:179 +#, python-format +msgid "%s (C member)" +msgstr "" + +#: sphinx/domains/c.py:181 +#, python-format +msgid "%s (C macro)" +msgstr "" + +#: sphinx/domains/c.py:183 +#, python-format +msgid "%s (C type)" +msgstr "" + +#: sphinx/domains/c.py:185 +#, python-format +msgid "%s (C variable)" +msgstr "" + +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 +msgid "function" +msgstr "" + +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 +msgid "member" +msgstr "" + +#: sphinx/domains/c.py:244 +msgid "macro" +msgstr "" + +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 +msgid "type" +msgstr "" + +#: sphinx/domains/c.py:246 +msgid "variable" +msgstr "" + +#: sphinx/domains/cpp.py:4054 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 +msgid "Throws" +msgstr "" + +#: sphinx/domains/cpp.py:4205 +#, python-format +msgid "%s (C++ type)" +msgstr "" + +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 +#, python-format +msgid "%s (C++ member)" +msgstr "" + +#: sphinx/domains/cpp.py:4238 +#, python-format +msgid "%s (C++ function)" +msgstr "" + +#: sphinx/domains/cpp.py:4249 +#, python-format +msgid "%s (C++ class)" +msgstr "" + +#: sphinx/domains/cpp.py:4260 +#, python-format +msgid "%s (C++ enum)" +msgstr "" + +#: sphinx/domains/cpp.py:4281 +#, python-format +msgid "%s (C++ enumerator)" +msgstr "" + +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 +msgid "class" +msgstr "" + +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:4423 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 +#, python-format +msgid "%s() (built-in function)" +msgstr "" + +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 +#, python-format +msgid "%s() (%s method)" +msgstr "" + +#: sphinx/domains/javascript.py:109 +#, python-format +msgid "%s() (class)" +msgstr "" + +#: sphinx/domains/javascript.py:111 +#, python-format +msgid "%s (global variable or constant)" +msgstr "" + +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 +#, python-format +msgid "%s (%s attribute)" +msgstr "" + +#: sphinx/domains/javascript.py:122 +msgid "Arguments" +msgstr "" + +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 +msgid "data" +msgstr "" + +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 +msgid "attribute" +msgstr "" + +#: sphinx/domains/python.py:154 +msgid "Variables" +msgstr "" + +#: sphinx/domains/python.py:158 +msgid "Raises" +msgstr "" + +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 +#, python-format +msgid "%s() (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:311 +#, python-format +msgid "%s (built-in variable)" +msgstr "" + +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 +#, python-format +msgid "%s (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:328 +#, python-format +msgid "%s (built-in class)" +msgstr "" + +#: sphinx/domains/python.py:329 +#, python-format +msgid "%s (class in %s)" +msgstr "" + +#: sphinx/domains/python.py:369 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "" + +#: sphinx/domains/python.py:381 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "" + +#: sphinx/domains/python.py:384 +#, python-format +msgid "%s() (%s static method)" +msgstr "" + +#: sphinx/domains/python.py:394 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "" + +#: sphinx/domains/python.py:397 +#, python-format +msgid "%s() (%s class method)" +msgstr "" + +#: sphinx/domains/python.py:407 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "" + +#: sphinx/domains/python.py:488 +#, python-format +msgid "%s (module)" +msgstr "" + +#: sphinx/domains/python.py:545 +msgid "Python Module Index" +msgstr "" + +#: sphinx/domains/python.py:546 +msgid "modules" +msgstr "" + +#: sphinx/domains/python.py:592 +msgid "Deprecated" +msgstr "" + +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 +msgid "exception" +msgstr "" + +#: sphinx/domains/python.py:618 +msgid "method" +msgstr "" + +#: sphinx/domains/python.py:619 +msgid "class method" +msgstr "" + +#: sphinx/domains/python.py:620 +msgid "static method" +msgstr "" + +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 +msgid "module" +msgstr "" + +#: sphinx/domains/python.py:787 +msgid " (deprecated)" +msgstr "" + +#: sphinx/domains/rst.py:55 +#, python-format +msgid "%s (directive)" +msgstr "" + +#: sphinx/domains/rst.py:57 +#, python-format +msgid "%s (role)" +msgstr "" + +#: sphinx/domains/rst.py:106 +msgid "directive" +msgstr "" + +#: sphinx/domains/rst.py:107 +msgid "role" +msgstr "" + +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 +#, python-format +msgid "environment variable; %s" +msgstr "" + +#: sphinx/domains/std.py:186 +#, python-format +msgid "%scommand line option; %s" +msgstr "" + +#: sphinx/domains/std.py:434 +msgid "glossary term" +msgstr "" + +#: sphinx/domains/std.py:435 +msgid "grammar token" +msgstr "" + +#: sphinx/domains/std.py:436 +msgid "reference label" +msgstr "" + +#: sphinx/domains/std.py:438 +msgid "environment variable" +msgstr "" + +#: sphinx/domains/std.py:439 +msgid "program option" +msgstr "" + +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 +#: sphinx/themes/basic/genindex-split.html:11 +#: sphinx/themes/basic/genindex-split.html:14 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 +msgid "Index" +msgstr "" + +#: sphinx/domains/std.py:474 +msgid "Module Index" +msgstr "" + +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 +msgid "Search Page" +msgstr "" + +#: sphinx/environment/managers/indexentries.py:104 +#, python-format +msgid "see %s" +msgstr "" + +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 +#, python-format +msgid "alias of :class:`%s`" +msgstr "" + +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 +msgid "[source]" +msgstr "" + +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/ext/todo.py:56 +msgid "Todo" +msgstr "" + +#: sphinx/ext/todo.py:134 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:137 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:146 +msgid "original entry" +msgstr "" + +#: sphinx/ext/viewcode.py:166 +msgid "[docs]" +msgstr "" + +#: sphinx/ext/viewcode.py:180 +msgid "Module code" +msgstr "" + +#: sphinx/ext/viewcode.py:186 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "" + +#: sphinx/ext/viewcode.py:212 +msgid "Overview: module code" +msgstr "" + +#: sphinx/ext/viewcode.py:213 +msgid "<h1>All modules for which code is available</h1>" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/locale/__init__.py:159 +msgid "Attention" +msgstr "" + +#: sphinx/locale/__init__.py:160 +msgid "Caution" +msgstr "" + +#: sphinx/locale/__init__.py:161 +msgid "Danger" +msgstr "" + +#: sphinx/locale/__init__.py:162 +msgid "Error" +msgstr "" + +#: sphinx/locale/__init__.py:163 +msgid "Hint" +msgstr "" + +#: sphinx/locale/__init__.py:164 +msgid "Important" +msgstr "" + +#: sphinx/locale/__init__.py:165 +msgid "Note" +msgstr "" + +#: sphinx/locale/__init__.py:166 +msgid "See also" +msgstr "" + +#: sphinx/locale/__init__.py:167 +msgid "Tip" +msgstr "" + +#: sphinx/locale/__init__.py:168 +msgid "Warning" +msgstr "" + +#: sphinx/locale/__init__.py:172 +#, python-format +msgid "New in version %s" +msgstr "" + +#: sphinx/locale/__init__.py:173 +#, python-format +msgid "Changed in version %s" +msgstr "" + +#: sphinx/locale/__init__.py:174 +#, python-format +msgid "Deprecated since version %s" +msgstr "" + +#: sphinx/locale/__init__.py:180 +msgid "keyword" +msgstr "" + +#: sphinx/locale/__init__.py:181 +msgid "operator" +msgstr "" + +#: sphinx/locale/__init__.py:182 +msgid "object" +msgstr "" + +#: sphinx/locale/__init__.py:184 +msgid "statement" +msgstr "" + +#: sphinx/locale/__init__.py:185 +msgid "built-in function" +msgstr "" + +#: sphinx/themes/agogo/layout.html:46 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:11 sphinx/themes/scrolls/layout.html:35 +msgid "Table Of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 +#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 +#: sphinx/themes/basic/searchresults.html:10 +msgid "Search" +msgstr "" + +#: sphinx/themes/agogo/layout.html:54 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "" + +#: sphinx/themes/agogo/layout.html:81 sphinx/themes/basic/sourcelink.html:15 +msgid "Show Source" +msgstr "" + +#: sphinx/themes/basic/defindex.html:11 +msgid "Overview" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:17 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:20 +msgid "Indices and tables:" +msgstr "" + +#: sphinx/themes/basic/defindex.html:23 +msgid "Complete Table of Contents" +msgstr "" + +#: sphinx/themes/basic/defindex.html:24 +msgid "lists all sections and subsections" +msgstr "" + +#: sphinx/themes/basic/defindex.html:26 +msgid "search this documentation" +msgstr "" + +#: sphinx/themes/basic/defindex.html:28 +msgid "Global Module Index" +msgstr "" + +#: sphinx/themes/basic/defindex.html:29 +msgid "quick access to all modules" +msgstr "" + +#: sphinx/themes/basic/defindex.html:31 +msgid "all functions, classes, terms" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:33 +#, python-format +msgid "Index – %(key)s" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:61 +#: sphinx/themes/basic/genindex-split.html:24 +#: sphinx/themes/basic/genindex-split.html:38 +#: sphinx/themes/basic/genindex.html:72 +msgid "Full index on one page" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:16 +msgid "Index pages by letter" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:25 +msgid "can be huge" +msgstr "" + +#: sphinx/themes/basic/layout.html:29 +msgid "Navigation" +msgstr "" + +#: sphinx/themes/basic/layout.html:123 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/layout.html:132 +msgid "About these documents" +msgstr "" + +#: sphinx/themes/basic/layout.html:141 +msgid "Copyright" +msgstr "" + +#: sphinx/themes/basic/layout.html:186 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:188 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:192 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:195 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "" + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/relations.html:11 +msgid "Previous topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:13 +msgid "previous chapter" +msgstr "" + +#: sphinx/themes/basic/relations.html:16 +msgid "Next topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:18 +msgid "next chapter" +msgstr "" + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "" +"From here you can search these documents. Enter your search\n" +" words into the box below and click \"search\". Note that the search\n" +" function will automatically search for all of the words. Pages\n" +" containing fewer words won't appear in the result list." +msgstr "" + +#: sphinx/themes/basic/search.html:39 +#: sphinx/themes/basic/searchresults.html:17 +msgid "search" +msgstr "" + +#: sphinx/themes/basic/search.html:43 +#: sphinx/themes/basic/searchresults.html:21 +#: sphinx/themes/basic/static/searchtools.js_t:287 +msgid "Search Results" +msgstr "" + +#: sphinx/themes/basic/search.html:45 +#: sphinx/themes/basic/searchresults.html:23 +#: sphinx/themes/basic/static/searchtools.js_t:289 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:12 +msgid "Quick search" +msgstr "" + +#: sphinx/themes/basic/sourcelink.html:12 +msgid "This Page" +msgstr "" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 +msgid "Permalink to this headline" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 +msgid "Permalink to this definition" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js_t:208 +msgid "Hide Search Matches" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js_t:121 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js_t:126 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js_t:291 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js_t:344 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "" + +#: sphinx/themes/haiku/layout.html:24 +msgid "Contents" +msgstr "" + +#: sphinx/writers/html.py:389 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:393 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:395 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:717 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/latex.py:380 +msgid "Release" +msgstr "" + +#: sphinx/writers/latex.py:483 +msgid "page" +msgstr "" + +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 +msgid "Footnotes" +msgstr "" + +#: sphinx/writers/latex.py:1112 +msgid "continued from previous page" +msgstr "" + +#: sphinx/writers/latex.py:1118 +msgid "Continued on next page" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 +#, python-format +msgid "[image: %s]" +msgstr "" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 +msgid "[image]" +msgstr "" diff --git a/sphinx/locale/ja/LC_MESSAGES/sphinx.js b/sphinx/locale/ja/LC_MESSAGES/sphinx.js index daa56988f..d155ce249 100644 --- a/sphinx/locale/ja/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/ja/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "ja", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", in ", "About these documents": "\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u3064\u3044\u3066", "Automatically generated list of changes in version %(version)s": "\u30d0\u30fc\u30b8\u30e7\u30f3 %(version)s \u306e\u5909\u66f4\u70b9\uff08\u3053\u306e\u30ea\u30b9\u30c8\u306f\u81ea\u52d5\u751f\u6210\u3055\u308c\u3066\u3044\u307e\u3059\uff09", "C API changes": "C API \u306b\u95a2\u3059\u308b\u5909\u66f4", "Changes in Version %(version)s — %(docstitle)s": "\u30d0\u30fc\u30b8\u30e7\u30f3 %(version)s \u306e\u5909\u66f4\u70b9 — %(docstitle)s", "Collapse sidebar": "\u30b5\u30a4\u30c9\u30d0\u30fc\u3092\u305f\u305f\u3080", "Complete Table of Contents": "\u7dcf\u5408\u76ee\u6b21", "Contents": "\u30b3\u30f3\u30c6\u30f3\u30c4", "Copyright": "\u8457\u4f5c\u6a29", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306f <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s \u3067\u751f\u6210\u3057\u307e\u3057\u305f\u3002", "Expand sidebar": "\u30b5\u30a4\u30c9\u30d0\u30fc\u3092\u5c55\u958b", "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.": "\u3053\u306e\u30da\u30fc\u30b8\u304b\u3089\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u691c\u7d22\u3067\u304d\u307e\u3059\u3002\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u4e0b\u306e\u30dc\u30c3\u30af\u30b9\u306b\u5165\u529b\u3057\u3066\u3001\u300c\u691c\u7d22\u300d\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u5165\u529b\u3055\u308c\u305f\u5168\u3066\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u542b\u3080\u30da\u30fc\u30b8\u304c\u691c\u7d22\u3055\u308c\u307e\u3059\u3002\u4e00\u90e8\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u3057\u304b\u542b\u307e\u306a\u3044\u30da\u30fc\u30b8\u306f\u691c\u7d22\u7d50\u679c\u306b\u8868\u793a\u3055\u308c\u306a\u3044\u306e\u3067\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002", "Full index on one page": "\u7dcf\u7d22\u5f15", "General Index": "\u7dcf\u5408\u7d22\u5f15", "Global Module Index": "\u30e2\u30b8\u30e5\u30fc\u30eb\u7dcf\u7d22\u5f15", "Go": "\u691c\u7d22", "Hide Search Matches": "\u691c\u7d22\u7d50\u679c\u3092\u96a0\u3059", "Index": "\u7d22\u5f15", "Index – %(key)s": "\u7d22\u5f15 – %(key)s", "Index pages by letter": "\u982d\u6587\u5b57\u5225\u7d22\u5f15", "Indices and tables:": "\u7d22\u5f15\u3068\u8868\u4e00\u89a7:", "Last updated on %(last_updated)s.": "\u6700\u7d42\u66f4\u65b0: %(last_updated)s", "Library changes": "\u30e9\u30a4\u30d6\u30e9\u30ea\u306b\u95a2\u3059\u308b\u5909\u66f4", "Navigation": "\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3", "Next topic": "\u6b21\u306e\u30c8\u30d4\u30c3\u30af\u3078", "Other changes": "\u305d\u306e\u4ed6\u306e\u5909\u66f4", "Overview": "\u6982\u8981", "Permalink to this definition": "\u3053\u306e\u5b9a\u7fa9\u3078\u306e\u30d1\u30fc\u30de\u30ea\u30f3\u30af", "Permalink to this headline": "\u3053\u306e\u30d8\u30c3\u30c9\u30e9\u30a4\u30f3\u3078\u306e\u30d1\u30fc\u30de\u30ea\u30f3\u30af", "Please activate JavaScript to enable the search\n functionality.": "\u691c\u7d22\u6a5f\u80fd\u3092\u4f7f\u3046\u306b\u306f JavaScript \u3092\u6709\u52b9\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002", "Preparing search...": "\u691c\u7d22\u3092\u6e96\u5099\u3057\u3066\u3044\u307e\u3059...", "Previous topic": "\u524d\u306e\u30c8\u30d4\u30c3\u30af\u3078", "Quick search": "\u30af\u30a4\u30c3\u30af\u691c\u7d22", "Search": "\u691c\u7d22", "Search Page": "\u691c\u7d22\u30da\u30fc\u30b8", "Search Results": "\u691c\u7d22\u7d50\u679c", "Search finished, found %s page(s) matching the search query.": "\u691c\u7d22\u304c\u5b8c\u4e86\u3057\u3001 %s \u30da\u30fc\u30b8\u898b\u3064\u3051\u307e\u3057\u305f\u3002", "Search within %(docstitle)s": "%(docstitle)s \u5185\u3092\u691c\u7d22", "Searching": "\u691c\u7d22\u4e2d", "Show Source": "\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092\u8868\u793a", "Table Of Contents": "\u76ee\u6b21", "This Page": "\u3053\u306e\u30da\u30fc\u30b8", "Welcome! This is": "Welcome! This is", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "\u691c\u7d22\u3057\u305f\u6587\u5b57\u5217\u306f\u3069\u306e\u6587\u66f8\u306b\u3082\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u3059\u3079\u3066\u306e\u5358\u8a9e\u304c\u6b63\u78ba\u306b\u8a18\u8ff0\u3055\u308c\u3066\u3044\u308b\u304b\u3001\u3042\u308b\u3044\u306f\u3001\u5341\u5206\u306a\u30ab\u30c6\u30b4\u30ea\u30fc\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002", "all functions, classes, terms": "\u95a2\u6570\u3001\u30af\u30e9\u30b9\u304a\u3088\u3073\u7528\u8a9e\u7dcf\u89a7", "can be huge": "\u5927\u304d\u3044\u5834\u5408\u304c\u3042\u308b\u306e\u3067\u6ce8\u610f", "last updated": "\u6700\u7d42\u66f4\u65b0", "lists all sections and subsections": "\u7ae0\uff0f\u7bc0\u4e00\u89a7", "next chapter": "\u6b21\u306e\u7ae0\u3078", "previous chapter": "\u524d\u306e\u7ae0\u3078", "quick access to all modules": "\u5168\u30e2\u30b8\u30e5\u30fc\u30eb\u65e9\u898b\u8868", "search": "\u691c\u7d22", "search this documentation": "\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u691c\u7d22", "the documentation for": "the documentation for"}, "plural_expr": "0"}); \ No newline at end of file +Documentation.addTranslations({"locale": "ja", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", in ", "About these documents": "\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u3064\u3044\u3066", "Automatically generated list of changes in version %(version)s": "\u30d0\u30fc\u30b8\u30e7\u30f3 %(version)s \u306e\u5909\u66f4\u70b9\uff08\u3053\u306e\u30ea\u30b9\u30c8\u306f\u81ea\u52d5\u751f\u6210\u3055\u308c\u3066\u3044\u307e\u3059\uff09", "C API changes": "C API \u306b\u95a2\u3059\u308b\u5909\u66f4", "Changes in Version %(version)s — %(docstitle)s": "\u30d0\u30fc\u30b8\u30e7\u30f3 %(version)s \u306e\u5909\u66f4\u70b9 — %(docstitle)s", "Collapse sidebar": "\u30b5\u30a4\u30c9\u30d0\u30fc\u3092\u305f\u305f\u3080", "Complete Table of Contents": "\u7dcf\u5408\u76ee\u6b21", "Contents": "\u30b3\u30f3\u30c6\u30f3\u30c4", "Copyright": "\u8457\u4f5c\u6a29", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306f <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s \u3067\u751f\u6210\u3057\u307e\u3057\u305f\u3002", "Expand sidebar": "\u30b5\u30a4\u30c9\u30d0\u30fc\u3092\u5c55\u958b", "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.": "\u3053\u306e\u30da\u30fc\u30b8\u304b\u3089\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u691c\u7d22\u3067\u304d\u307e\u3059\u3002\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u4e0b\u306e\u30dc\u30c3\u30af\u30b9\u306b\u5165\u529b\u3057\u3066\u3001\u300c\u691c\u7d22\u300d\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u5165\u529b\u3055\u308c\u305f\u5168\u3066\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u542b\u3080\u30da\u30fc\u30b8\u304c\u691c\u7d22\u3055\u308c\u307e\u3059\u3002\u4e00\u90e8\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\u3057\u304b\u542b\u307e\u306a\u3044\u30da\u30fc\u30b8\u306f\u691c\u7d22\u7d50\u679c\u306b\u8868\u793a\u3055\u308c\u306a\u3044\u306e\u3067\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002", "Full index on one page": "\u7dcf\u7d22\u5f15", "General Index": "\u7dcf\u5408\u7d22\u5f15", "Global Module Index": "\u30e2\u30b8\u30e5\u30fc\u30eb\u7dcf\u7d22\u5f15", "Go": "\u691c\u7d22", "Hide Search Matches": "\u691c\u7d22\u7d50\u679c\u3092\u96a0\u3059", "Index": "\u7d22\u5f15", "Index – %(key)s": "\u7d22\u5f15 – %(key)s", "Index pages by letter": "\u982d\u6587\u5b57\u5225\u7d22\u5f15", "Indices and tables:": "\u7d22\u5f15\u3068\u8868\u4e00\u89a7:", "Last updated on %(last_updated)s.": "\u6700\u7d42\u66f4\u65b0: %(last_updated)s", "Library changes": "\u30e9\u30a4\u30d6\u30e9\u30ea\u306b\u95a2\u3059\u308b\u5909\u66f4", "Navigation": "\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3", "Next topic": "\u6b21\u306e\u30c8\u30d4\u30c3\u30af\u3078", "Other changes": "\u305d\u306e\u4ed6\u306e\u5909\u66f4", "Overview": "\u6982\u8981", "Permalink to this definition": "\u3053\u306e\u5b9a\u7fa9\u3078\u306e\u30d1\u30fc\u30de\u30ea\u30f3\u30af", "Permalink to this headline": "\u3053\u306e\u30d8\u30c3\u30c9\u30e9\u30a4\u30f3\u3078\u306e\u30d1\u30fc\u30de\u30ea\u30f3\u30af", "Please activate JavaScript to enable the search\n functionality.": "\u691c\u7d22\u6a5f\u80fd\u3092\u4f7f\u3046\u306b\u306f JavaScript \u3092\u6709\u52b9\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002", "Preparing search...": "\u691c\u7d22\u3092\u6e96\u5099\u3057\u3066\u3044\u307e\u3059...", "Previous topic": "\u524d\u306e\u30c8\u30d4\u30c3\u30af\u3078", "Quick search": "\u30af\u30a4\u30c3\u30af\u691c\u7d22", "Search": "\u691c\u7d22", "Search Page": "\u691c\u7d22\u30da\u30fc\u30b8", "Search Results": "\u691c\u7d22\u7d50\u679c", "Search finished, found %s page(s) matching the search query.": "\u691c\u7d22\u304c\u5b8c\u4e86\u3057\u3001 %s \u30da\u30fc\u30b8\u898b\u3064\u3051\u307e\u3057\u305f\u3002", "Search within %(docstitle)s": "%(docstitle)s \u5185\u3092\u691c\u7d22", "Searching": "\u691c\u7d22\u4e2d", "Show Source": "\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092\u8868\u793a", "Table Of Contents": "\u76ee\u6b21", "This Page": "\u3053\u306e\u30da\u30fc\u30b8", "Welcome! This is": "Welcome! This is", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "\u691c\u7d22\u3057\u305f\u6587\u5b57\u5217\u306f\u3069\u306e\u6587\u66f8\u306b\u3082\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u3059\u3079\u3066\u306e\u5358\u8a9e\u304c\u6b63\u78ba\u306b\u8a18\u8ff0\u3055\u308c\u3066\u3044\u308b\u304b\u3001\u3042\u308b\u3044\u306f\u3001\u5341\u5206\u306a\u30ab\u30c6\u30b4\u30ea\u30fc\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002", "all functions, classes, terms": "\u95a2\u6570\u3001\u30af\u30e9\u30b9\u304a\u3088\u3073\u7528\u8a9e\u7dcf\u89a7", "can be huge": "\u5927\u304d\u3044\u5834\u5408\u304c\u3042\u308b\u306e\u3067\u6ce8\u610f", "last updated": "\u6700\u7d42\u66f4\u65b0", "lists all sections and subsections": "\u7ae0\uff0f\u7bc0\u4e00\u89a7", "next chapter": "\u6b21\u306e\u7ae0\u3078", "previous chapter": "\u524d\u306e\u7ae0\u3078", "quick access to all modules": "\u5168\u30e2\u30b8\u30e5\u30fc\u30eb\u65e9\u898b\u8868", "search": "\u691c\u7d22", "search this documentation": "\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u691c\u7d22", "the documentation for": "the documentation for"}, "plural_expr": "0"}); \ No newline at end of file diff --git a/sphinx/locale/ja/LC_MESSAGES/sphinx.mo b/sphinx/locale/ja/LC_MESSAGES/sphinx.mo index 9f6d4a338ec3d375a633988f82409da617aa11f3..6c11e00034c4b4f8e8f31e7b949d2c2df1dc6c7d 100644 GIT binary patch delta 3918 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 K@ja!!lz#zAnl;e? delta 3502 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 NY=sje&4t-<{{RW3q0RsR diff --git a/sphinx/locale/ja/LC_MESSAGES/sphinx.po b/sphinx/locale/ja/LC_MESSAGES/sphinx.po index 309d6b5f4..57cc2a449 100644 --- a/sphinx/locale/ja/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/ja/LC_MESSAGES/sphinx.po @@ -3,71 +3,54 @@ # This file is distributed under the same license as the Sphinx project. # # Translators: -# WAKAYAMA Shirou <shirou.faw@gmail.com>, 2013 +# shirou - しろう <shirou.faw@gmail.com>, 2013 # Akitoshi Ohta <fire.kuma8@gmail.com>, 2011 # Kouhei Sutou <kou@clear-code.com>, 2011 -# Takayuki Shimizukawa <shimizukawa@gmail.com>, 2013-2016 -# WAKAYAMA Shirou <shirou.faw@gmail.com>, 2014 +# Takayuki SHIMIZUKAWA <shimizukawa@gmail.com>, 2013-2016 +# Takayuki SHIMIZUKAWA <shimizukawa@gmail.com>, 2016 +# Takeshi KOMIYA <i.tkomiya@gmail.com>, 2016 +# shirou - しろう <shirou.faw@gmail.com>, 2014 # Yasushi Masuda <whosaysni@gmail.com>, 2008 msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 14:18+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-12-04 11:59+0000\n" +"Last-Translator: Takayuki SHIMIZUKAWA <shimizukawa@gmail.com>\n" "Language-Team: Japanese (http://www.transifex.com/sphinx-doc/sphinx-1/language/ja/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: ja\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "%s 章" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "図 %s" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "TABLE %s" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "LIST %s" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "%s %s ドキュメント" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "%sを参照" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "%sも参照" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "記号" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python Enhancement Proposals; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "YYYY年MMMM月dd日" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "組み込み" @@ -76,9 +59,12 @@ msgstr "組み込み" msgid "Module level" msgstr "モジュールレベル" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" -msgstr "YYYY年MMMM月dd日" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" +msgstr "%b %d, %Y" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 msgid "General Index" @@ -88,18 +74,28 @@ msgstr "総合索引" msgid "index" msgstr "索引" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "次へ" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "前へ" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s ドキュメント" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr " (in " +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "不正な caption です: %s" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "この節の作者: " @@ -116,23 +112,23 @@ msgstr "コードの作者: " msgid "Author: " msgstr "作者: " -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "パラメータ" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "戻り値" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "戻り値の型" @@ -161,12 +157,12 @@ msgstr "%s (C のデータ型)" msgid "%s (C variable)" msgstr "%s (C の変数)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "の関数" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "のメンバ変数" @@ -174,7 +170,7 @@ msgstr "のメンバ変数" msgid "macro" msgstr "のマクロ" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "のデータ型" @@ -182,63 +178,72 @@ msgstr "のデータ型" msgid "variable" msgstr "変数" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "テンプレートパラメータ" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "例外" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (C++ のデータ型)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "%s (C++ concept)" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (C++ のメンバ変数)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (C++ の関数)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (C++ のクラス)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "%s (C++ の列挙型)" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "%s (C++の enumerator)" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "クラス" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "concept" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "列挙型" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "enumerator" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (組み込み関数)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (%s のメソッド)" @@ -253,7 +258,7 @@ msgstr "%s() (クラス)" msgid "%s (global variable or constant)" msgstr "%s (グローバル変数または定数)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (%s の属性)" @@ -262,116 +267,116 @@ msgstr "%s (%s の属性)" msgid "Arguments" msgstr "引数" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "データ" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "の属性" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "変数" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "例外" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (%s モジュール)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (組み込み変数)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (%s モジュール)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (組み込みクラス)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (%s のクラス)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (%s.%s のメソッド)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (%s.%s の静的メソッド)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (%s の静的メソッド)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "%s() (%s.%s のクラスメソッド)" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "%s() (%s のクラスメソッド)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (%s.%s の属性)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (モジュール)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "Pythonモジュール索引" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "モジュール" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "撤廃" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "例外" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "メソッド" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "クラスメソッド" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "の静的メソッド" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "モジュール" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr " (撤廃)" @@ -393,120 +398,147 @@ msgstr "ディレクティブ" msgid "role" msgstr "ロール" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "環境変数; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%sコマンドラインオプション; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "用語集の項目" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "文法トークン" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "参照ラベル" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "環境変数" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "プログラムオプション" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "索引" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "モジュール索引" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "検索ページ" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" -msgstr " ベースクラス: %s" +msgid "see %s" +msgstr "%sを参照" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "%sも参照" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "記号" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "ベースクラス: %s" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr ":class:`%s` のエイリアス" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "[グラフ: %s]" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "[グラフ]" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "この数式へのパーマリンク" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "(in %s v%s)" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[ソース]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "数式 %s のラベルはすでに %s で使われています" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "課題" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "<<original entry>>" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "(<<元のエントリ>> は、 %s の %d 行目です)" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "元のエントリ" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[ドキュメント]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "モジュールコード" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "<h1>%s のソースコード</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "概要: モジュールコード" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "<h1>全モジュールのうち、コードを読めるもの</h1>" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "キーワード引数" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "注意" @@ -587,7 +619,7 @@ msgstr "組み込み関数" msgid "Table Of Contents" msgstr "目次" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -645,15 +677,15 @@ msgstr "全モジュール早見表" msgid "all functions, classes, terms" msgstr "関数、クラスおよび用語総覧" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "索引 – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "総索引" @@ -669,35 +701,35 @@ msgstr "大きい場合があるので注意" msgid "Navigation" msgstr "ナビゲーション" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "%(docstitle)s 内を検索" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "このドキュメントについて" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "著作権" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Copyright %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "© Copyright %(copyright)s." -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "最終更新: %(last_updated)s" -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -746,13 +778,13 @@ msgstr "検索" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "検索結果" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -769,13 +801,13 @@ msgstr "このページ" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "バージョン %(version)s の変更点 — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "バージョン %(version)s の変更点 — %(docstitle)s" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "%(filename)s — %(docstitle)s" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -794,12 +826,13 @@ msgstr "C API に関する変更" msgid "Other changes" msgstr "その他の変更" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "このヘッドラインへのパーマリンク" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "この定義へのパーマリンク" @@ -815,12 +848,12 @@ msgstr "検索中" msgid "Preparing search..." msgstr "検索を準備しています..." -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "検索が完了し、 %s ページ見つけました。" -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr ", in " @@ -837,48 +870,53 @@ msgstr "サイドバーをたたむ" msgid "Contents" msgstr "コンテンツ" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "このコードへのパーマリンク" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "この画像へのパーマリンク" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "この目次へのパーマリンク" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "このテーブルへのパーマリンク" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "リリース" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "ページ" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "不明な設定値 latex_elements[%r] はスキップされました。" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "注記" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "前のページからの続き" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "次のページに続く" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "[画像: %s]" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[画像]" diff --git a/sphinx/locale/ko/LC_MESSAGES/sphinx.js b/sphinx/locale/ko/LC_MESSAGES/sphinx.js index dc084521d..931524808 100644 --- a/sphinx/locale/ko/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/ko/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "ko", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "\uc774 \ubb38\uc11c \uc815\ubcf4", "Automatically generated list of changes in version %(version)s": "\ubc84\uc804 %(version)s\uc758 \ubcc0\uacbd \uc0ac\ud56d (\uc774 \ubaa9\ub85d\uc740 \uc790\ub3d9\uc73c\ub85c \uc0dd\uc131\ud569\ub2c8\ub2e4)", "C API changes": "C API\uc5d0 \ub300\ud55c \ubcc0\uacbd", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "\uc0ac\uc774\ub4dc\ubc14 \ub2eb\uae30", "Complete Table of Contents": "\uc885\ud569 \ubaa9\ucc28", "Contents": "\ub0b4\uc6a9", "Copyright": "\uc800\uc791\uad8c", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand sidebar": "\uc0ac\uc774\ub4dc\ubc14 \uc5f4\uae30", "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.": "", "Full index on one page": "\uc77c\ubc18 \uc0c9\uc778", "General Index": "\uc804\uccb4 \uc0c9\uc778", "Global Module Index": "\ubaa8\ub4c8 \ucd1d \uc0c9\uc778", "Go": "\ubc14\ub85c \uac00\uae30", "Hide Search Matches": "\uac80\uc0c9 \uacb0\uacfc \uc228\uae30\uae30", "Index": "\uc0c9\uc778", "Index – %(key)s": "", "Index pages by letter": "\uc54c\ud30c\ubcb3\ubcc4 \uc0c9\uc778", "Indices and tables:": "\uc0c9\uc778 \ubc0f \ud45c \ubaa9\ub85d:", "Last updated on %(last_updated)s.": "\ucd5c\uc885 \uc5c5\ub370\uc774\ud2b8: %(last_updated)s", "Library changes": "\ub77c\uc774\ube0c\ub7ec\ub9ac\uc5d0 \ub300\ud55c \ubcc0\uacbd", "Navigation": "\ud0d0\uc0c9", "Next topic": "\ub2e4\uc74c \ud56d\ubaa9", "Other changes": "\ub2e4\ub978 \ubcc0\uacbd \uc0ac\ud56d", "Overview": "\uac1c\uc694", "Permalink to this definition": "\uc815\uc758 \uc8fc\uc18c", "Permalink to this headline": "\uc81c\ubaa9 \uc8fc\uc18c", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "", "Previous topic": "\uc774\uc804 \ud56d\ubaa9", "Quick search": "\ube60\ub978 \uac80\uc0c9", "Search": "\uac80\uc0c9", "Search Page": "\uac80\uc0c9 \ud398\uc774\uc9c0", "Search Results": "\uac80\uc0c9 \uacb0\uacfc", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "%(docstitle)s\uc5d0\uc11c \ucc3e\uae30", "Searching": "", "Show Source": "\uc18c\uc2a4 \ucf54\ub4dc\ub97c \ubcf4\ub824\uba74", "Table Of Contents": "\ubaa9\ucc28", "This Page": "\ud604\uc7ac \ubb38\uc11c", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "\ud568\uc218, \ud074\ub798\uc2a4 \ubc0f \uc6a9\uc5b4 \uac1c\uad00", "can be huge": "\ud070 \uacbd\uc6b0\uac00 \uc788\uc73c\ubbc0\ub85c \uc8fc\uc758", "last updated": "", "lists all sections and subsections": "\uc601\uc5ed\ubcc4 \ubaa9\ucc28", "next chapter": "\ub2e4\uc74c \uc7a5", "previous chapter": "\uc774\uc804 \uc7a5", "quick access to all modules": "\ubaa8\ub4e0 \ubaa8\ub4c8 \uc870\uacac\ud45c", "search": "\uac80\uc0c9", "search this documentation": "\ubb38\uc11c \uac80\uc0c9", "the documentation for": ""}, "plural_expr": "0"}); \ No newline at end of file +Documentation.addTranslations({"locale": "ko", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "\uc774 \ubb38\uc11c \uc815\ubcf4", "Automatically generated list of changes in version %(version)s": "\ubc84\uc804 %(version)s\uc758 \ubcc0\uacbd \uc0ac\ud56d (\uc774 \ubaa9\ub85d\uc740 \uc790\ub3d9\uc73c\ub85c \uc0dd\uc131\ud569\ub2c8\ub2e4)", "C API changes": "C API\uc5d0 \ub300\ud55c \ubcc0\uacbd", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "\uc0ac\uc774\ub4dc\ubc14 \ub2eb\uae30", "Complete Table of Contents": "\uc885\ud569 \ubaa9\ucc28", "Contents": "\ub0b4\uc6a9", "Copyright": "\uc800\uc791\uad8c", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand sidebar": "\uc0ac\uc774\ub4dc\ubc14 \uc5f4\uae30", "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.": "", "Full index on one page": "\uc77c\ubc18 \uc0c9\uc778", "General Index": "\uc804\uccb4 \uc0c9\uc778", "Global Module Index": "\ubaa8\ub4c8 \ucd1d \uc0c9\uc778", "Go": "\ubc14\ub85c \uac00\uae30", "Hide Search Matches": "\uac80\uc0c9 \uacb0\uacfc \uc228\uae30\uae30", "Index": "\uc0c9\uc778", "Index – %(key)s": "", "Index pages by letter": "\uc54c\ud30c\ubcb3\ubcc4 \uc0c9\uc778", "Indices and tables:": "\uc0c9\uc778 \ubc0f \ud45c \ubaa9\ub85d:", "Last updated on %(last_updated)s.": "\ucd5c\uc885 \uc5c5\ub370\uc774\ud2b8: %(last_updated)s", "Library changes": "\ub77c\uc774\ube0c\ub7ec\ub9ac\uc5d0 \ub300\ud55c \ubcc0\uacbd", "Navigation": "\ud0d0\uc0c9", "Next topic": "\ub2e4\uc74c \ud56d\ubaa9", "Other changes": "\ub2e4\ub978 \ubcc0\uacbd \uc0ac\ud56d", "Overview": "\uac1c\uc694", "Permalink to this definition": "\uc815\uc758 \uc8fc\uc18c", "Permalink to this headline": "\uc81c\ubaa9 \uc8fc\uc18c", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "", "Previous topic": "\uc774\uc804 \ud56d\ubaa9", "Quick search": "\ube60\ub978 \uac80\uc0c9", "Search": "\uac80\uc0c9", "Search Page": "\uac80\uc0c9 \ud398\uc774\uc9c0", "Search Results": "\uac80\uc0c9 \uacb0\uacfc", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "%(docstitle)s\uc5d0\uc11c \ucc3e\uae30", "Searching": "", "Show Source": "\uc18c\uc2a4 \ucf54\ub4dc\ub97c \ubcf4\ub824\uba74", "Table Of Contents": "\ubaa9\ucc28", "This Page": "\ud604\uc7ac \ubb38\uc11c", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "\ud568\uc218, \ud074\ub798\uc2a4 \ubc0f \uc6a9\uc5b4 \uac1c\uad00", "can be huge": "\ud070 \uacbd\uc6b0\uac00 \uc788\uc73c\ubbc0\ub85c \uc8fc\uc758", "last updated": "", "lists all sections and subsections": "\uc601\uc5ed\ubcc4 \ubaa9\ucc28", "next chapter": "\ub2e4\uc74c \uc7a5", "previous chapter": "\uc774\uc804 \uc7a5", "quick access to all modules": "\ubaa8\ub4e0 \ubaa8\ub4c8 \uc870\uacac\ud45c", "search": "\uac80\uc0c9", "search this documentation": "\ubb38\uc11c \uac80\uc0c9", "the documentation for": ""}, "plural_expr": "0"}); \ No newline at end of file diff --git a/sphinx/locale/ko/LC_MESSAGES/sphinx.mo b/sphinx/locale/ko/LC_MESSAGES/sphinx.mo index 1afb4a7c0ab3a01dc79323dc27cbff2d328937aa..53b373b4f26cdc9996143a30da44e5910aea5012 100644 GIT binary patch delta 3912 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 delta 3497 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 Stf(@a<ZY}P8M{#RM$+FNDU197 diff --git a/sphinx/locale/ko/LC_MESSAGES/sphinx.po b/sphinx/locale/ko/LC_MESSAGES/sphinx.po index e349b747c..e5e4edd98 100644 --- a/sphinx/locale/ko/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/ko/LC_MESSAGES/sphinx.po @@ -7,61 +7,42 @@ msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Korean (http://www.transifex.com/sphinx-doc/sphinx-1/language/ko/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: ko\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "%s 문서" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "%s 참조" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python Enhancement Proposals; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "기본" @@ -70,8 +51,11 @@ msgstr "기본" msgid "Module level" msgstr "모듈 수준" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -82,18 +66,28 @@ msgstr "전체 색인" msgid "index" msgstr "색인" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "다음" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "이전" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr "" +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "" @@ -110,23 +104,23 @@ msgstr "" msgid "Author: " msgstr "" -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "매개 변수" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "반환" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "반환 형식" @@ -155,12 +149,12 @@ msgstr "%s (C 데이터 형식)" msgid "%s (C variable)" msgstr "%s (C 변수)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "함수" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "멤버 변수" @@ -168,7 +162,7 @@ msgstr "멤버 변수" msgid "macro" msgstr "매크로" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "데이터 형식" @@ -176,63 +170,72 @@ msgstr "데이터 형식" msgid "variable" msgstr "변수" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "예외" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (C++ 데이터 형식)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (C++의 멤버 변수)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (C++ 함수)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (C++ 클래스)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "클래스" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() 내장 함수)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (%s 메서드)" @@ -247,7 +250,7 @@ msgstr "%s() (클래스)" msgid "%s (global variable or constant)" msgstr "%s (전역 변수 또는 상수)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (%s의 속성)" @@ -256,116 +259,116 @@ msgstr "%s (%s의 속성)" msgid "Arguments" msgstr "인수" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "데이터" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "속성" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "변수" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "예외" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (%s 모듈)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (내장 변수)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (%s 모듈)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (내장 변수)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (%s 종류)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (%s의 정적 메서드)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "%s() (%s 클래스 메서드)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (모듈)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "Python 모듈 목록" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "모듈" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "폐지" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "예외" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "메소드" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "클래스 메소드" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "정적 메서드" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "모듈" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr "" @@ -387,120 +390,147 @@ msgstr "지시자" msgid "role" msgstr "역할" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "환경 변수; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%s 명령; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "용어의 항목" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "문법 토큰" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "참조 레이블" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "환경 변수" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "프로그램 옵션" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "색인" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "모듈 목록" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "검색 페이지" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" +msgid "see %s" +msgstr "%s 문서" + +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "%s 참조" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" msgstr "" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[소스]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "과제" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "원래 항목" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[문서]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "모듈 코드" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "설명: 모듈 코드" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "주의" @@ -581,7 +611,7 @@ msgstr "내장 함수" msgid "Table Of Contents" msgstr "목차" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -639,15 +669,15 @@ msgstr "모든 모듈 조견표" msgid "all functions, classes, terms" msgstr "함수, 클래스 및 용어 개관" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "일반 색인" @@ -663,35 +693,35 @@ msgstr "큰 경우가 있으므로 주의" msgid "Navigation" msgstr "탐색" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "%(docstitle)s에서 찾기" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "이 문서 정보" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "저작권" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." +msgid "© Copyright %(copyright)s." msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "최종 업데이트: %(last_updated)s" -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -740,13 +770,13 @@ msgstr "검색" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "검색 결과" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -763,12 +793,12 @@ msgstr "현재 문서" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 @@ -788,12 +818,13 @@ msgstr "C API에 대한 변경" msgid "Other changes" msgstr "다른 변경 사항" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "제목 주소" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "정의 주소" @@ -809,12 +840,12 @@ msgstr "" msgid "Preparing search..." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr "" @@ -831,48 +862,53 @@ msgstr "사이드바 닫기" msgid "Contents" msgstr "내용" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "출시" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "참고" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "이전 페이지에서 계속" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "일반 색인" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[그림]" diff --git a/sphinx/locale/lt/LC_MESSAGES/sphinx.js b/sphinx/locale/lt/LC_MESSAGES/sphinx.js index 23dbdc7e6..8a141074b 100644 --- a/sphinx/locale/lt/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/lt/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "lt", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Autoriaus teis\u0117s</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Autoriaus teis\u0117s %(copyright)s.", ", in ": "", "About these documents": "Apie \u0161iuos dokumentus", "Automatically generated list of changes in version %(version)s": "Automati\u0161kai sugeneruotas pakeitim\u0173 %(version)s versijoje s\u0105ra\u0161as", "C API changes": "C API pakeitimai", "Changes in Version %(version)s — %(docstitle)s": "Pasikeitimai versijoje %(version)s — %(docstitle)s", "Collapse sidebar": "Pasl\u0117pti \u0161onin\u0119 juost\u0105", "Complete Table of Contents": "Pilnas Turinys", "Contents": "Turinys", "Copyright": "Autoriaus teis\u0117s", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Sukurta naudojant <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "I\u0161pl\u0117sti \u0161onin\u0119 juost\u0105", "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.": "\u010cia j\u016bs galite ie\u0161koti \u0161iuose dokumentuose. \u012eveskite savo paie\u0161kos\n \u017eod\u017eius \u012f lauk\u0105 apa\u010dioje ir paspauskite \"ie\u0161koti\". Pasteb\u0117sime, kad paie\u0161kos\n funkcija automati\u0161kai ie\u0161kos vis\u0173 \u017eod\u017ei\u0173. Puslapiai,\n kuriuose yra ma\u017eiau \u017eod\u017ei\u0173 nepasirodys tarp paie\u0161kos rezultat\u0173.", "Full index on one page": "Pilnas indeksas viename puslapyje", "General Index": "Bendras indeksas", "Global Module Index": "Globalus Modulio Indeksas", "Go": "Pirmyn", "Hide Search Matches": "Pasl\u0117pti paie\u0161kos rezultatus", "Index": "Indeksas", "Index – %(key)s": "Indeksas – %(key)s", "Index pages by letter": "Indekso puslapiai pagal raid\u0119", "Indices and tables:": "Indeksai ir lentel\u0117s:", "Last updated on %(last_updated)s.": "Paskutinis atnaujinimas %(last_updated)s.", "Library changes": "Bibliotekos pakeitimai", "Navigation": "Navigacija", "Next topic": "Kita tema", "Other changes": "Kiti pakeitimai", "Overview": "Ap\u017evalga", "Permalink to this definition": "Nuoroda \u012f \u0161\u012f apibr\u0117\u017eim\u0105", "Permalink to this headline": "Nuoroda \u012f \u0161i\u0105 antra\u0161t\u0119", "Please activate JavaScript to enable the search\n functionality.": "Pra\u0161ome aktyvuoti JavaScript, kad veikt\u0173 paie\u0161kos\n funkcionalumas.", "Preparing search...": "", "Previous topic": "Praeita tema", "Quick search": "Greitoji paie\u0161ka", "Search": "Paie\u0161ka", "Search Page": "Paie\u0161kos puslapis", "Search Results": "Paie\u0161kos rezultatai", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "Ie\u0161koti tarp %(docstitle)s", "Searching": "", "Show Source": "Rodyti pirmin\u012f kod\u0105", "Table Of Contents": "Turinys", "This Page": "\u0160is puslapis", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "visos funkcijos, klas\u0117s ir terminai", "can be huge": "gali b\u016bti didelis", "last updated": "", "lists all sections and subsections": "sura\u0161yti visus skyrius ir poskyrius", "next chapter": "kita dalis", "previous chapter": "praeita dalis", "quick access to all modules": "greitas vis\u0173 moduli\u0173 pasiekimas", "search": "ie\u0161koti", "search this documentation": "ie\u0161koti \u0161iame dokumente", "the documentation for": ""}, "plural_expr": "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)"}); \ No newline at end of file +Documentation.addTranslations({"locale": "lt", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "Apie \u0161iuos dokumentus", "Automatically generated list of changes in version %(version)s": "Automati\u0161kai sugeneruotas pakeitim\u0173 %(version)s versijoje s\u0105ra\u0161as", "C API changes": "C API pakeitimai", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "Pasl\u0117pti \u0161onin\u0119 juost\u0105", "Complete Table of Contents": "Pilnas Turinys", "Contents": "Turinys", "Copyright": "Autoriaus teis\u0117s", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Sukurta naudojant <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "I\u0161pl\u0117sti \u0161onin\u0119 juost\u0105", "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.": "\u010cia j\u016bs galite ie\u0161koti \u0161iuose dokumentuose. \u012eveskite savo paie\u0161kos\n \u017eod\u017eius \u012f lauk\u0105 apa\u010dioje ir paspauskite \"ie\u0161koti\". Pasteb\u0117sime, kad paie\u0161kos\n funkcija automati\u0161kai ie\u0161kos vis\u0173 \u017eod\u017ei\u0173. Puslapiai,\n kuriuose yra ma\u017eiau \u017eod\u017ei\u0173 nepasirodys tarp paie\u0161kos rezultat\u0173.", "Full index on one page": "Pilnas indeksas viename puslapyje", "General Index": "Bendras indeksas", "Global Module Index": "Globalus Modulio Indeksas", "Go": "Pirmyn", "Hide Search Matches": "Pasl\u0117pti paie\u0161kos rezultatus", "Index": "Indeksas", "Index – %(key)s": "Indeksas – %(key)s", "Index pages by letter": "Indekso puslapiai pagal raid\u0119", "Indices and tables:": "Indeksai ir lentel\u0117s:", "Last updated on %(last_updated)s.": "Paskutinis atnaujinimas %(last_updated)s.", "Library changes": "Bibliotekos pakeitimai", "Navigation": "Navigacija", "Next topic": "Kita tema", "Other changes": "Kiti pakeitimai", "Overview": "Ap\u017evalga", "Permalink to this definition": "Nuoroda \u012f \u0161\u012f apibr\u0117\u017eim\u0105", "Permalink to this headline": "Nuoroda \u012f \u0161i\u0105 antra\u0161t\u0119", "Please activate JavaScript to enable the search\n functionality.": "Pra\u0161ome aktyvuoti JavaScript, kad veikt\u0173 paie\u0161kos\n funkcionalumas.", "Preparing search...": "", "Previous topic": "Praeita tema", "Quick search": "Greitoji paie\u0161ka", "Search": "Paie\u0161ka", "Search Page": "Paie\u0161kos puslapis", "Search Results": "Paie\u0161kos rezultatai", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "Ie\u0161koti tarp %(docstitle)s", "Searching": "", "Show Source": "Rodyti pirmin\u012f kod\u0105", "Table Of Contents": "Turinys", "This Page": "\u0160is puslapis", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "visos funkcijos, klas\u0117s ir terminai", "can be huge": "gali b\u016bti didelis", "last updated": "", "lists all sections and subsections": "sura\u0161yti visus skyrius ir poskyrius", "next chapter": "kita dalis", "previous chapter": "praeita dalis", "quick access to all modules": "greitas vis\u0173 moduli\u0173 pasiekimas", "search": "ie\u0161koti", "search this documentation": "ie\u0161koti \u0161iame dokumente", "the documentation for": ""}, "plural_expr": "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)"}); \ No newline at end of file diff --git a/sphinx/locale/lt/LC_MESSAGES/sphinx.mo b/sphinx/locale/lt/LC_MESSAGES/sphinx.mo index 3131c5fbb6781075ed5e3aabebdce2c50daa6f90..3ae8b02a2d44afddca74e87de8384a1cacb4e362 100644 GIT binary patch delta 3925 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 delta 3599 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 diff --git a/sphinx/locale/lt/LC_MESSAGES/sphinx.po b/sphinx/locale/lt/LC_MESSAGES/sphinx.po index fc1d5e155..1073ffee5 100644 --- a/sphinx/locale/lt/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/lt/LC_MESSAGES/sphinx.po @@ -8,61 +8,42 @@ msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Lithuanian (http://www.transifex.com/sphinx-doc/sphinx-1/language/lt/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: lt\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python Enhancement Proposals; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "Įtaisytieji" @@ -71,8 +52,11 @@ msgstr "Įtaisytieji" msgid "Module level" msgstr "Modulio lygis" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -83,18 +67,28 @@ msgstr "Bendras indeksas" msgid "index" msgstr "indeksas" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "kitas" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "praeitas" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr " (kuris yra " +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "Skyriaus autorius: " @@ -111,23 +105,23 @@ msgstr "Kodo autorius: " msgid "Author: " msgstr "Autorius: " -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Parametrai" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "Grąžinamos reikšmės" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "Grąžinamos reikšmės tipas" @@ -156,12 +150,12 @@ msgstr "%s (C tipas)" msgid "%s (C variable)" msgstr "%s (C kintamasis)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "funkcija" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "narys" @@ -169,7 +163,7 @@ msgstr "narys" msgid "macro" msgstr "makrokomanda" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "tipas" @@ -177,63 +171,72 @@ msgstr "tipas" msgid "variable" msgstr "kintamasis" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "Išmeta" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (C++ tipas)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (C++ narys)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (C++ funkcija)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "klasė" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (itaisytoji funkcija)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (%s metodas)" @@ -248,7 +251,7 @@ msgstr "%s() (klasė)" msgid "%s (global variable or constant)" msgstr "%s (globalus kintamasis arba konstanta)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (%s atributas)" @@ -257,116 +260,116 @@ msgstr "%s (%s atributas)" msgid "Arguments" msgstr "Argumentais" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "duomenys" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "atribudas" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "Kintamieji" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "Sukelia" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (modulyje %s)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (įtaisytasis kintamasis)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (modulje %s)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (įtaisytoji klasė)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (klasė iš %s)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (%s.%s metodas)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (%s.%s statinis metodas)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (%s statinis metodas)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "%s() (%s.%s klasės metodas)" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "%s() (%s klasės metodas)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (%s.%s atributas)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (modulis)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "moduliai" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "Atmestas" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "išimtis" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "metodas" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "klasės metodas" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "statinis metodas" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "modulis" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr " (atmestas)" @@ -388,120 +391,147 @@ msgstr "direktyva" msgid "role" msgstr "rolė" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "aplinkos kintamasis; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%skomandinės eilutės parinktis; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "aiškinamasis terminas" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "gramatinė leksema" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "nuorodos požymis" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "aplinkos kintamasis" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "programos parinktis" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "Indeksas" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "Modulio indeksas" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "Paieškos puslapis" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" -msgstr " Bazės: %s" +msgid "see %s" +msgstr "" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr ":class:`%s` alternatyvus vardas" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[šaltinis]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "Padaryti" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "originalus įrašas" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[dokumentai]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "Modulio kodas" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "<h1>Kodas %s</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "Apžvalga: modulio kodas" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "<h1>Visi moduliai turintys kodą</h1>" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "Dėmesio" @@ -582,7 +612,7 @@ msgstr "įtaisytoji funkcija" msgid "Table Of Contents" msgstr "Turinys" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -640,15 +670,15 @@ msgstr "greitas visų modulių pasiekimas" msgid "all functions, classes, terms" msgstr "visos funkcijos, klasės ir terminai" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Indeksas – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "Pilnas indeksas viename puslapyje" @@ -664,35 +694,35 @@ msgstr "gali būti didelis" msgid "Navigation" msgstr "Navigacija" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "Ieškoti tarp %(docstitle)s" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "Apie šiuos dokumentus" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "Autoriaus teisės" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">Autoriaus teisės</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Autoriaus teisės %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Paskutinis atnaujinimas %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -741,13 +771,13 @@ msgstr "ieškoti" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "Paieškos rezultatai" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -764,13 +794,13 @@ msgstr "Šis puslapis" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "Pasikeitimai versijoje %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -789,12 +819,13 @@ msgstr "C API pakeitimai" msgid "Other changes" msgstr "Kiti pakeitimai" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "Nuoroda į šią antraštę" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "Nuoroda į šį apibrėžimą" @@ -810,12 +841,12 @@ msgstr "" msgid "Preparing search..." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr "" @@ -832,48 +863,53 @@ msgstr "Paslėpti šoninę juostą" msgid "Contents" msgstr "Turinys" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "Leidimas" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "Išnašos" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "tęsinys iš praeito puslapio" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "Tęsinys kitame puslapyje" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[paveiksliukas]" diff --git a/sphinx/locale/lv/LC_MESSAGES/sphinx.js b/sphinx/locale/lv/LC_MESSAGES/sphinx.js index ef1d6515f..20aa16ed5 100644 --- a/sphinx/locale/lv/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/lv/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "lv", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": "", "About these documents": "Par \u0161iem dokumentiem", "Automatically generated list of changes in version %(version)s": "Autom\u0101tiski sagatavots izmai\u0146u saraksts versijai %(version)s", "C API changes": "Izmai\u0146as iek\u0161 C API", "Changes in Version %(version)s — %(docstitle)s": "Izmai\u0146as versij\u0101 %(version)s — %(docstitle)s", "Collapse sidebar": "Sav\u0113rst s\u0101njoslu", "Complete Table of Contents": "Pilns saturs", "Contents": "Saturs", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Sagatavots izmantojot <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Izplest s\u0101njoslu", "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.": "\u0160eit J\u016bs varat mekl\u0113t \u0161ajos dokumentos. Nor\u0101diet mekl\u0113jamus v\u0101rdus\n ievada lauka un uzklik\u0161\u0137iniet pogu \"mekl\u0113t\". L\u016bdzu iev\u0113rojiet,\n ka mekl\u0113\u0161anas programma atrad\u012bs tikai tos dokumentus, kuros ir\n visi ievad\u012btie v\u0101rdi. Dokumenti, kuros ir tikai da\u013ca no ievad\u012btiem\n v\u0101rdiem, netiks atlas\u012bti.", "Full index on one page": "Pilns indekss vien\u0101 lappus\u0113", "General Index": "Visp\u0101r\u0113js indekss", "Global Module Index": "Visp\u0101r\u0113js modu\u013cu indekss", "Go": "Izpild\u012bt", "Hide Search Matches": "Pasl\u0113pt atlases v\u0101rdus", "Index": "Indekss", "Index – %(key)s": "Indekss – %(key)s", "Index pages by letter": "Lappu\u0161u indekss p\u0113c burtiem", "Indices and tables:": "Indeksi un tabulas:", "Last updated on %(last_updated)s.": "P\u0113d\u0113jas izmai\u0146as %(last_updated)s.", "Library changes": "Bibliot\u0113kas izmai\u0146as", "Navigation": "Navig\u0101cija", "Next topic": "n\u0101ko\u0161a t\u0113ma", "Other changes": "Citas izmai\u0146as", "Overview": "Apskats", "Permalink to this definition": "Past\u0101v\u012bga nor\u0101de uz \u0161o defin\u012bciju", "Permalink to this headline": "Past\u0101v\u012bga nor\u0101de \u0161o virsrakstu", "Please activate JavaScript to enable the search\n functionality.": "Lai iesp\u0113jotu mekl\u0113\u0161anu, l\u016bdzu aktiviz\u0113t JavaScript.", "Preparing search...": "", "Previous topic": "iepriek\u0161\u0113ja t\u0113ma", "Quick search": "\u0100tra mekl\u0113\u0161ana", "Search": "Mekl\u0113t", "Search Page": "Atlases lapa", "Search Results": "Atlases rezult\u0101ti", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "Mekl\u0113t iek\u0161 %(docstitle)s", "Searching": "", "Show Source": "R\u0101d\u012bt izejas tekstu", "Table Of Contents": "Saturs", "This Page": "\u0160\u012b lappuse", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "visas funkcijas, klases un termini", "can be huge": "var b\u016bt milz\u012bgs", "last updated": "", "lists all sections and subsections": "r\u0101da visas sekcijas un apak\u0161sekcijas", "next chapter": "n\u0101ko\u0161a sada\u013ca", "previous chapter": "iepriek\u0161\u0113ja sada\u013ca", "quick access to all modules": "\u0101tra piek\u013cuve visiem moduliem", "search": "mekl\u0113t", "search this documentation": "mekl\u0113t \u0161aj\u0101 dokument\u0101cij\u0101", "the documentation for": ""}, "plural_expr": "(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2)"}); \ No newline at end of file +Documentation.addTranslations({"locale": "lv", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "Par \u0161iem dokumentiem", "Automatically generated list of changes in version %(version)s": "Autom\u0101tiski sagatavots izmai\u0146u saraksts versijai %(version)s", "C API changes": "Izmai\u0146as iek\u0161 C API", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "Sav\u0113rst s\u0101njoslu", "Complete Table of Contents": "Pilns saturs", "Contents": "Saturs", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Sagatavots izmantojot <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Izplest s\u0101njoslu", "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.": "\u0160eit J\u016bs varat mekl\u0113t \u0161ajos dokumentos. Nor\u0101diet mekl\u0113jamus v\u0101rdus\n ievada lauka un uzklik\u0161\u0137iniet pogu \"mekl\u0113t\". L\u016bdzu iev\u0113rojiet,\n ka mekl\u0113\u0161anas programma atrad\u012bs tikai tos dokumentus, kuros ir\n visi ievad\u012btie v\u0101rdi. Dokumenti, kuros ir tikai da\u013ca no ievad\u012btiem\n v\u0101rdiem, netiks atlas\u012bti.", "Full index on one page": "Pilns indekss vien\u0101 lappus\u0113", "General Index": "Visp\u0101r\u0113js indekss", "Global Module Index": "Visp\u0101r\u0113js modu\u013cu indekss", "Go": "Izpild\u012bt", "Hide Search Matches": "Pasl\u0113pt atlases v\u0101rdus", "Index": "Indekss", "Index – %(key)s": "Indekss – %(key)s", "Index pages by letter": "Lappu\u0161u indekss p\u0113c burtiem", "Indices and tables:": "Indeksi un tabulas:", "Last updated on %(last_updated)s.": "P\u0113d\u0113jas izmai\u0146as %(last_updated)s.", "Library changes": "Bibliot\u0113kas izmai\u0146as", "Navigation": "Navig\u0101cija", "Next topic": "n\u0101ko\u0161a t\u0113ma", "Other changes": "Citas izmai\u0146as", "Overview": "Apskats", "Permalink to this definition": "Past\u0101v\u012bga nor\u0101de uz \u0161o defin\u012bciju", "Permalink to this headline": "Past\u0101v\u012bga nor\u0101de \u0161o virsrakstu", "Please activate JavaScript to enable the search\n functionality.": "Lai iesp\u0113jotu mekl\u0113\u0161anu, l\u016bdzu aktiviz\u0113t JavaScript.", "Preparing search...": "", "Previous topic": "iepriek\u0161\u0113ja t\u0113ma", "Quick search": "\u0100tra mekl\u0113\u0161ana", "Search": "Mekl\u0113t", "Search Page": "Atlases lapa", "Search Results": "Atlases rezult\u0101ti", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "Mekl\u0113t iek\u0161 %(docstitle)s", "Searching": "", "Show Source": "R\u0101d\u012bt izejas tekstu", "Table Of Contents": "Saturs", "This Page": "\u0160\u012b lappuse", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "visas funkcijas, klases un termini", "can be huge": "var b\u016bt milz\u012bgs", "last updated": "", "lists all sections and subsections": "r\u0101da visas sekcijas un apak\u0161sekcijas", "next chapter": "n\u0101ko\u0161a sada\u013ca", "previous chapter": "iepriek\u0161\u0113ja sada\u013ca", "quick access to all modules": "\u0101tra piek\u013cuve visiem moduliem", "search": "mekl\u0113t", "search this documentation": "mekl\u0113t \u0161aj\u0101 dokument\u0101cij\u0101", "the documentation for": ""}, "plural_expr": "(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2)"}); \ No newline at end of file diff --git a/sphinx/locale/lv/LC_MESSAGES/sphinx.mo b/sphinx/locale/lv/LC_MESSAGES/sphinx.mo index 27fc48a1f68af1f4d7d2a1027ecc590e46f08be7..09f1b162b079a88611ecebb9e94e6ff55f3fe2f1 100644 GIT binary patch delta 3918 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 R!Tqo?_{~nDylGCszW_5g0TuuN delta 3526 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 diff --git a/sphinx/locale/lv/LC_MESSAGES/sphinx.po b/sphinx/locale/lv/LC_MESSAGES/sphinx.po index 156c969dd..14d5dd338 100644 --- a/sphinx/locale/lv/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/lv/LC_MESSAGES/sphinx.po @@ -7,61 +7,42 @@ msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Latvian (http://www.transifex.com/sphinx-doc/sphinx-1/language/lv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: lv\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "Iebūvētie" @@ -70,8 +51,11 @@ msgstr "Iebūvētie" msgid "Module level" msgstr "Moduļu līmenis" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -82,18 +66,28 @@ msgstr "Vispārējs indekss" msgid "index" msgstr "indekss" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "nākošais" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "iepriekšējs" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr " (iekš " +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "Sekcijas autors: " @@ -110,23 +104,23 @@ msgstr "Koda autors: " msgid "Author: " msgstr "Autors: " -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Parametri" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "Atgriež" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "Atgriežamais tips" @@ -155,12 +149,12 @@ msgstr "%s (C tips)" msgid "%s (C variable)" msgstr "%s (C mainīgais)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "funkcija" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "loceklis" @@ -168,7 +162,7 @@ msgstr "loceklis" msgid "macro" msgstr "makross" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "tips" @@ -176,63 +170,72 @@ msgstr "tips" msgid "variable" msgstr "mainīgais" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "Izmet" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (C++ tips)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (C++ loceklis)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (C++ funkcija)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (C++ klase)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "klase" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (iebūvēta funkcija)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (%s metods)" @@ -247,7 +250,7 @@ msgstr "" msgid "%s (global variable or constant)" msgstr "%s (globālais mainīgais vai konstanta)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (%s atributs)" @@ -256,116 +259,116 @@ msgstr "%s (%s atributs)" msgid "Arguments" msgstr "Argumenti" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "dati" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "atributs" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "Mainīgie" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "Ceļ" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (moduļī %s)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (iebūvētais mainīgais)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (moduļī %s)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (iebūvēta klase)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (klase iekš %s)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (%s.%s metods)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (%s.%s statiskais metods)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (%s statiskais metods)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "%s() (%s.%s klases metods)" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "%s() (%s klases metods)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (%s.%s atributs)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (modulis)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "moduļi" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "Nav ieteicams" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "izņēmums" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "metods" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "klases metods" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "statiskais metods" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "modulis" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr "" @@ -387,120 +390,147 @@ msgstr "direktīva" msgid "role" msgstr "role" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "apkārtnes mainīgais; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%skomandrindas opcija; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "glosārija termins" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "gramatiskais marķieris" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "atsauces virsraksts" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "apkārtnes mainīgais" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "programmas opcija" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "Indekss" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "Moduļu indekss" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "Atlases lapa" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" -msgstr " Bāzes: %s" +msgid "see %s" +msgstr "" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "aizstājvārds klasei :class:`%s`" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[kods]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "Jāizdara" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "sākotnējs ieraksts" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[dokumenti]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "Moduļa teksts" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "<h1>%s izejas teksts</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "Apskats: moduļa teksts" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "<h1>Visi moduļi, kuriem ir izejas teksti</h1>" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "Uzmanību" @@ -581,7 +611,7 @@ msgstr "iebūvēta funkcija" msgid "Table Of Contents" msgstr "Saturs" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -639,15 +669,15 @@ msgstr "ātra piekļuve visiem moduliem" msgid "all functions, classes, terms" msgstr "visas funkcijas, klases un termini" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Indekss – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "Pilns indekss vienā lappusē" @@ -663,35 +693,35 @@ msgstr "var būt milzīgs" msgid "Navigation" msgstr "Navigācija" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "Meklēt iekš %(docstitle)s" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "Par šiem dokumentiem" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "Copyright" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Copyright %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Pēdējas izmaiņas %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -740,13 +770,13 @@ msgstr "meklēt" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "Atlases rezultāti" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -763,13 +793,13 @@ msgstr "Šī lappuse" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "Izmaiņas versijā %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -788,12 +818,13 @@ msgstr "Izmaiņas iekš C API" msgid "Other changes" msgstr "Citas izmaiņas" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "Pastāvīga norāde šo virsrakstu" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "Pastāvīga norāde uz šo definīciju" @@ -809,12 +840,12 @@ msgstr "" msgid "Preparing search..." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr "" @@ -831,48 +862,53 @@ msgstr "Savērst sānjoslu" msgid "Contents" msgstr "Saturs" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "Izlaidums" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "Vēres" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "turpinājums no iepriekšējās lappuses" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "Turpnājums nākošā lappusē" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "[attēls: %s]" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[attēls]" diff --git a/sphinx/locale/mk/LC_MESSAGES/sphinx.js b/sphinx/locale/mk/LC_MESSAGES/sphinx.js index 1e219a68c..542936e20 100644 --- a/sphinx/locale/mk/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/mk/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "mk", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "", "Automatically generated list of changes in version %(version)s": "", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "", "Contents": "", "Copyright": "", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand 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.": "", "Full index on one page": "", "General Index": "\u0413\u043b\u0430\u0432\u043d\u0430 \u0441\u043e\u0434\u0440\u0436\u0438\u043d\u0430", "Global Module Index": "", "Go": "", "Hide Search Matches": "", "Index": "", "Index – %(key)s": "", "Index pages by letter": "", "Indices and tables:": "", "Last updated on %(last_updated)s.": "", "Library changes": "", "Navigation": "", "Next topic": "", "Other changes": "", "Overview": "", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "", "Previous topic": "", "Quick search": "", "Search": "", "Search Page": "", "Search Results": "", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "", "Show Source": "", "Table Of Contents": "", "This Page": "", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "", "can be huge": "", "last updated": "", "lists all sections and subsections": "", "next chapter": "", "previous chapter": "", "quick access to all modules": "", "search": "", "search this documentation": "", "the documentation for": ""}, "plural_expr": "(n % 10 == 1 && n % 100 != 11) ? 0 : 1"}); \ No newline at end of file +Documentation.addTranslations({"locale": "mk", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "", "Automatically generated list of changes in version %(version)s": "", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "", "Contents": "", "Copyright": "", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand 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.": "", "Full index on one page": "", "General Index": "\u0413\u043b\u0430\u0432\u043d\u0430 \u0441\u043e\u0434\u0440\u0436\u0438\u043d\u0430", "Global Module Index": "", "Go": "", "Hide Search Matches": "", "Index": "", "Index – %(key)s": "", "Index pages by letter": "", "Indices and tables:": "", "Last updated on %(last_updated)s.": "", "Library changes": "", "Navigation": "", "Next topic": "", "Other changes": "", "Overview": "", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "", "Previous topic": "", "Quick search": "", "Search": "", "Search Page": "", "Search Results": "", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "", "Show Source": "", "Table Of Contents": "", "This Page": "", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "", "can be huge": "", "last updated": "", "lists all sections and subsections": "", "next chapter": "", "previous chapter": "", "quick access to all modules": "", "search": "", "search this documentation": "", "the documentation for": ""}, "plural_expr": "(n % 10 == 1 && n % 100 != 11) ? 0 : 1"}); \ No newline at end of file diff --git a/sphinx/locale/mk/LC_MESSAGES/sphinx.mo b/sphinx/locale/mk/LC_MESSAGES/sphinx.mo index 0b810b4ff21ff679ed0708e109930ab6d1ae0491..f89ee9f4952beb525bb1c0bdd5d351a6f2551ebf 100644 GIT binary patch delta 3905 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 D{G<1q delta 3502 zcmajg3rv+|9LMqJAc_~n3#cfdFY2KKUg88{A~|Jgq*CT3H81N-a1sj6qn3C%n%0)$ z_3dI!Hz#GbE|ABW*6>oAmeZ2WrA3&Q>4sS>wWYcB{c)bzYHhK@`8?12zR&ag|NrNC z;pCK`Cx#k2N55?NImmA^zX`3>`}-$0))+pfJzwpy2ew2X_Qrv>|2W3epM;&T6ccb6 zcEHWZ$L!!s^HgIyV?w5uh93AF<M5n);0kKOo2UufGD^=SqbBIjm+t3cS9}yZVlir- zMd;x3sPQ|I1<gKegGaC{>zh+FH1HC3!<*P0<CsMY_^=1&VIodKVlwmW{bi`<H(?IG zgT3$~W?>XjYvCMJ<?^vJ7GNgpo2fLCuoAoAE>wgEtjDo6{W=_q-`ai;q9#_;2V>BW z8b27b@iBXUHS#f=`BEZPsQC_HNToYQLkl)wAzncpgB<GC79T_fSb)l)2uaR7jaqmy zYWzwx9%I&`=B*@61z3fu<OdjqM{WOjXX+o#g?cV%f(xhx8c~@vSz{Qj2~zk<ML$vm zGaeP-Ow^W?p%z?X`!AxNdj+)xJMHz|sBs75slS5$!d|FH1#}rT(N$EbZlMBd!I9R$ z?x+m=qTZSzsM1bGouQz0E$VDkVLsL(Q#DVf3MPb@wJ(i6s2c^SOs1i>pafOod8iDY zwf)uhekC%eaqazGsEPMr9)612Iz_7rCnLLS(ol(o2GP*O!%z#2u{S25Dl;7wSUGBf zRj9z$VGDc-Rk1Dh{x;M+Z=n{d#x-~dHEuNJ(R$;M=R#(Ny)Y|s!OTZRR)NZF6{g@8 zQ~-NXfgM6kREIh<4XDcfh}x1SRA6zuvl<tV>ZhQ#us0^?{U1PskICmt4^Bk|P>ebQ zW!9yrh1Q@l+=yCm3+gZ7oA&;3RHmn_XRP(8aX+8}X~bB)|G(M??w}Tq=EP_Z+oK*# zMqN)ul{CZNAA;K3QK(Zs3-$aWQ~*nmk9p4ax1uUmg-Wy<L&|VJ4bF)<hMM3z)PfiB z8t-!>D${RRP0wFOWpV?R`5jbc9O~|18fuFkMs48~WH(Hiz5W6!;4R72UlZ=)0&|$X zsKZu=y8e^xUq@mvtvLvqxHoEoY}E4)A?M3XMpdXBRlybL;0DyV8dL>7K~>;X3ia2( zvs_T5zn~(G?ipDy8MQzT>ir&tJ}gE}xZd91jtX!O=HMypg)RBYLN99JDX2;nBY)dW zX^2K9jpe8cRHL@y1S-M{)<)D8+`yq2<wP<aj;ho+)RsJj8b2GeaXBiXFsd>qP>Ix| zwm9@V4OKvYSG8a_EL0bDh{{o~%OX^OD^VG2LzTD+weW7#_>a(d`1gvM_b3O1qMCYC zC2wIA#`S6LhfF6LI&@yt1R1CWvQe4jTF0U$n1x!S0(Azqq5^yuRiO`26**%2b*RA4 zqqg8S@}ilTz8V+efY8uh_G`Yte>;q(Ux1pZ5LK$FsDO%4dsl(Va2;|!%^RrF9!8bC z-g+H%He$Vz{{d;JL`pD@_02LG+S5vV;{+;`^QbMjiYoDMsEKc*GLBD+-0z7xyk1m> zxu~rfiFr5?Re{Z@3crsO!R*73GOMSdftOGNn^4!yJ(0?^K}DQ|n&4j4{lVA*^D!Dn z+WVt1hW<p<p_`6tunb$_AE@<sl|s!A#`+=`5-^7A4r&1(Dl<Ro5RF6yP=wmDGSoyX zP!*{}Rqj=6-V#(`hf(7`v;D77&!6#8e=YDm7j!6Y*azd%BatVf&Oo|#ki9+v73dSF z1!o`!+mxavUXQKuHB`nstZ$>n)u6`h3)#j|`#>FP;5pP*TtsEiggSILQ6+7Y5xL(3 zwYTZ0w_yb8`H857pF|zL0BQ@DST|rB`u-{!%J4nZ>HZis@HDD2XVEy0lOG5c2Xh^7 z&|MnaCt+?;AUJ!7<MkDl&kQaoSum$KJ?PfPZg-uYy~7*ZzwU{iSw3&EJFr7mq><+| zx??*&;#PH>(6V`K_|J~DQSSNpq1_7$ouZ=t&J=!3AwPF}Zc@U<aAKDu9`|zB^6)j^ zaF2U3v8y{SBi*gZC<t%r-r#AMnKd9Y$GOj+d;bG&MN&$Br0>tl&Gh%n<frYJKybl; z3G)MG!8w5i<@0l$34zkU;)SIp&iL6Sb4w}~mIj^)IC;Ulo$%=-pQn?5pug=uv%Zt; z{qL-YrF<E7dS3Wf#^F3?kjGt?I^CvwKK1MWNjIG6jq<pOUG|5srS<o?UY|?O(>%&I JT$7O!^%ruPlMw&_ diff --git a/sphinx/locale/mk/LC_MESSAGES/sphinx.po b/sphinx/locale/mk/LC_MESSAGES/sphinx.po index 6c62aecbd..c0d75eb9c 100644 --- a/sphinx/locale/mk/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/mk/LC_MESSAGES/sphinx.po @@ -8,61 +8,42 @@ msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Macedonian (http://www.transifex.com/sphinx-doc/sphinx-1/language/mk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: mk\n" "Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "%s %s документација" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "погледни %s" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "погледни %s" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "Симболи" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Предлог за подобрување на Python; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "Вградени" @@ -71,8 +52,11 @@ msgstr "Вградени" msgid "Module level" msgstr "Ниво на модул" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -83,18 +67,28 @@ msgstr "Главна содржина" msgid "index" msgstr "содржина" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "следна" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "претходна" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s документација" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr " (во " +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "Автор на секцијата:" @@ -111,23 +105,23 @@ msgstr "Автор на код:" msgid "Author: " msgstr "Автор: " -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Параметри" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "Враќа" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "Повратен тип" @@ -156,12 +150,12 @@ msgstr "%s (C тип)" msgid "%s (C variable)" msgstr "%s (C променлива)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "функција" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "член" @@ -169,7 +163,7 @@ msgstr "член" msgid "macro" msgstr "макро" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "тип" @@ -177,63 +171,72 @@ msgstr "тип" msgid "variable" msgstr "променлива" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "Фрла" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (C++ тип)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (C++ член)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (C++ функција)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (C++ класа)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "класа" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (вградена функција)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (%s метод)" @@ -248,7 +251,7 @@ msgstr "%s() (класа)" msgid "%s (global variable or constant)" msgstr "" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "" @@ -257,116 +260,116 @@ msgstr "" msgid "Arguments" msgstr "" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr "" @@ -388,120 +391,147 @@ msgstr "" msgid "role" msgstr "" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" +msgid "see %s" +msgstr "погледни %s" + +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "погледни %s" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "Симболи" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" msgstr "" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "" @@ -582,7 +612,7 @@ msgstr "" msgid "Table Of Contents" msgstr "" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -640,15 +670,15 @@ msgstr "" msgid "all functions, classes, terms" msgstr "" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "" @@ -664,35 +694,35 @@ msgstr "" msgid "Navigation" msgstr "" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." +msgid "© Copyright %(copyright)s." msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "" -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -741,13 +771,13 @@ msgstr "" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -764,12 +794,12 @@ msgstr "" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 @@ -789,12 +819,13 @@ msgstr "" msgid "Other changes" msgstr "" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "" @@ -810,12 +841,12 @@ msgstr "" msgid "Preparing search..." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr "" @@ -832,48 +863,53 @@ msgstr "" msgid "Contents" msgstr "" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "" diff --git a/sphinx/locale/nb/LC_MESSAGES/sphinx.js b/sphinx/locale/nb/LC_MESSAGES/sphinx.js new file mode 100644 index 000000000..89472ee60 --- /dev/null +++ b/sphinx/locale/nb/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "nb", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "", "Automatically generated list of changes in version %(version)s": "", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "", "Contents": "", "Copyright": "", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand 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.": "", "Full index on one page": "", "General Index": "", "Global Module Index": "", "Go": "", "Hide Search Matches": "", "Index": "", "Index – %(key)s": "", "Index pages by letter": "", "Indices and tables:": "", "Last updated on %(last_updated)s.": "", "Library changes": "", "Navigation": "", "Next topic": "", "Other changes": "", "Overview": "", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "", "Previous topic": "", "Quick search": "", "Search": "", "Search Page": "", "Search Results": "", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "", "Show Source": "", "Table Of Contents": "", "This Page": "", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "", "can be huge": "", "last updated": "", "lists all sections and subsections": "", "next chapter": "", "previous chapter": "", "quick access to all modules": "", "search": "", "search this documentation": "", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/locale/nb/LC_MESSAGES/sphinx.mo b/sphinx/locale/nb/LC_MESSAGES/sphinx.mo new file mode 100644 index 0000000000000000000000000000000000000000..178d1785aeb40f1fd26b88415b703f7d309f6efe GIT binary patch literal 11137 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 bcnh)lreX6<18?#+-!ydpNAv&nrs019I#-Q; literal 0 HcmV?d00001 diff --git a/sphinx/locale/nb/LC_MESSAGES/sphinx.po b/sphinx/locale/nb/LC_MESSAGES/sphinx.po new file mode 100644 index 000000000..cdd31369e --- /dev/null +++ b/sphinx/locale/nb/LC_MESSAGES/sphinx.po @@ -0,0 +1,914 @@ +# Translations template for Sphinx. +# Copyright (C) 2016 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Norwegian Bokmål (http://www.transifex.com/sphinx-doc/sphinx-1/language/nb/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.3.4\n" +"Language: nb\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:111 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:112 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/roles.py:187 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "" + +#: sphinx/builders/changes.py:75 +msgid "Builtins" +msgstr "" + +#: sphinx/builders/changes.py:77 +msgid "Module level" +msgstr "" + +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" +msgstr "" + +#: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 +msgid "General Index" +msgstr "" + +#: sphinx/builders/html.py:315 +msgid "index" +msgstr "" + +#: sphinx/builders/html.py:377 +msgid "next" +msgstr "" + +#: sphinx/builders/html.py:386 +msgid "previous" +msgstr "" + +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 +msgid " (in " +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/other.py:149 +msgid "Section author: " +msgstr "" + +#: sphinx/directives/other.py:151 +msgid "Module author: " +msgstr "" + +#: sphinx/directives/other.py:153 +msgid "Code author: " +msgstr "" + +#: sphinx/directives/other.py:155 +msgid "Author: " +msgstr "" + +#: sphinx/domains/__init__.py:277 +#, python-format +msgid "%s %s" +msgstr "" + +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 +msgid "Parameters" +msgstr "" + +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 +msgid "Returns" +msgstr "" + +#: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 +#: sphinx/domains/python.py:163 +msgid "Return type" +msgstr "" + +#: sphinx/domains/c.py:177 +#, python-format +msgid "%s (C function)" +msgstr "" + +#: sphinx/domains/c.py:179 +#, python-format +msgid "%s (C member)" +msgstr "" + +#: sphinx/domains/c.py:181 +#, python-format +msgid "%s (C macro)" +msgstr "" + +#: sphinx/domains/c.py:183 +#, python-format +msgid "%s (C type)" +msgstr "" + +#: sphinx/domains/c.py:185 +#, python-format +msgid "%s (C variable)" +msgstr "" + +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 +msgid "function" +msgstr "" + +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 +msgid "member" +msgstr "" + +#: sphinx/domains/c.py:244 +msgid "macro" +msgstr "" + +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 +msgid "type" +msgstr "" + +#: sphinx/domains/c.py:246 +msgid "variable" +msgstr "" + +#: sphinx/domains/cpp.py:4054 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 +msgid "Throws" +msgstr "" + +#: sphinx/domains/cpp.py:4205 +#, python-format +msgid "%s (C++ type)" +msgstr "" + +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 +#, python-format +msgid "%s (C++ member)" +msgstr "" + +#: sphinx/domains/cpp.py:4238 +#, python-format +msgid "%s (C++ function)" +msgstr "" + +#: sphinx/domains/cpp.py:4249 +#, python-format +msgid "%s (C++ class)" +msgstr "" + +#: sphinx/domains/cpp.py:4260 +#, python-format +msgid "%s (C++ enum)" +msgstr "" + +#: sphinx/domains/cpp.py:4281 +#, python-format +msgid "%s (C++ enumerator)" +msgstr "" + +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 +msgid "class" +msgstr "" + +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:4423 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 +#, python-format +msgid "%s() (built-in function)" +msgstr "" + +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 +#, python-format +msgid "%s() (%s method)" +msgstr "" + +#: sphinx/domains/javascript.py:109 +#, python-format +msgid "%s() (class)" +msgstr "" + +#: sphinx/domains/javascript.py:111 +#, python-format +msgid "%s (global variable or constant)" +msgstr "" + +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 +#, python-format +msgid "%s (%s attribute)" +msgstr "" + +#: sphinx/domains/javascript.py:122 +msgid "Arguments" +msgstr "" + +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 +msgid "data" +msgstr "" + +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 +msgid "attribute" +msgstr "" + +#: sphinx/domains/python.py:154 +msgid "Variables" +msgstr "" + +#: sphinx/domains/python.py:158 +msgid "Raises" +msgstr "" + +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 +#, python-format +msgid "%s() (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:311 +#, python-format +msgid "%s (built-in variable)" +msgstr "" + +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 +#, python-format +msgid "%s (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:328 +#, python-format +msgid "%s (built-in class)" +msgstr "" + +#: sphinx/domains/python.py:329 +#, python-format +msgid "%s (class in %s)" +msgstr "" + +#: sphinx/domains/python.py:369 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "" + +#: sphinx/domains/python.py:381 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "" + +#: sphinx/domains/python.py:384 +#, python-format +msgid "%s() (%s static method)" +msgstr "" + +#: sphinx/domains/python.py:394 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "" + +#: sphinx/domains/python.py:397 +#, python-format +msgid "%s() (%s class method)" +msgstr "" + +#: sphinx/domains/python.py:407 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "" + +#: sphinx/domains/python.py:488 +#, python-format +msgid "%s (module)" +msgstr "" + +#: sphinx/domains/python.py:545 +msgid "Python Module Index" +msgstr "" + +#: sphinx/domains/python.py:546 +msgid "modules" +msgstr "" + +#: sphinx/domains/python.py:592 +msgid "Deprecated" +msgstr "" + +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 +msgid "exception" +msgstr "" + +#: sphinx/domains/python.py:618 +msgid "method" +msgstr "" + +#: sphinx/domains/python.py:619 +msgid "class method" +msgstr "" + +#: sphinx/domains/python.py:620 +msgid "static method" +msgstr "" + +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 +msgid "module" +msgstr "" + +#: sphinx/domains/python.py:787 +msgid " (deprecated)" +msgstr "" + +#: sphinx/domains/rst.py:55 +#, python-format +msgid "%s (directive)" +msgstr "" + +#: sphinx/domains/rst.py:57 +#, python-format +msgid "%s (role)" +msgstr "" + +#: sphinx/domains/rst.py:106 +msgid "directive" +msgstr "" + +#: sphinx/domains/rst.py:107 +msgid "role" +msgstr "" + +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 +#, python-format +msgid "environment variable; %s" +msgstr "" + +#: sphinx/domains/std.py:186 +#, python-format +msgid "%scommand line option; %s" +msgstr "" + +#: sphinx/domains/std.py:434 +msgid "glossary term" +msgstr "" + +#: sphinx/domains/std.py:435 +msgid "grammar token" +msgstr "" + +#: sphinx/domains/std.py:436 +msgid "reference label" +msgstr "" + +#: sphinx/domains/std.py:438 +msgid "environment variable" +msgstr "" + +#: sphinx/domains/std.py:439 +msgid "program option" +msgstr "" + +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 +#: sphinx/themes/basic/genindex-split.html:11 +#: sphinx/themes/basic/genindex-split.html:14 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 +msgid "Index" +msgstr "" + +#: sphinx/domains/std.py:474 +msgid "Module Index" +msgstr "" + +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 +msgid "Search Page" +msgstr "" + +#: sphinx/environment/managers/indexentries.py:104 +#, python-format +msgid "see %s" +msgstr "" + +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 +#, python-format +msgid "alias of :class:`%s`" +msgstr "" + +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 +msgid "[source]" +msgstr "" + +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/ext/todo.py:56 +msgid "Todo" +msgstr "" + +#: sphinx/ext/todo.py:134 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:137 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:146 +msgid "original entry" +msgstr "" + +#: sphinx/ext/viewcode.py:166 +msgid "[docs]" +msgstr "" + +#: sphinx/ext/viewcode.py:180 +msgid "Module code" +msgstr "" + +#: sphinx/ext/viewcode.py:186 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "" + +#: sphinx/ext/viewcode.py:212 +msgid "Overview: module code" +msgstr "" + +#: sphinx/ext/viewcode.py:213 +msgid "<h1>All modules for which code is available</h1>" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/locale/__init__.py:159 +msgid "Attention" +msgstr "" + +#: sphinx/locale/__init__.py:160 +msgid "Caution" +msgstr "" + +#: sphinx/locale/__init__.py:161 +msgid "Danger" +msgstr "" + +#: sphinx/locale/__init__.py:162 +msgid "Error" +msgstr "" + +#: sphinx/locale/__init__.py:163 +msgid "Hint" +msgstr "" + +#: sphinx/locale/__init__.py:164 +msgid "Important" +msgstr "" + +#: sphinx/locale/__init__.py:165 +msgid "Note" +msgstr "" + +#: sphinx/locale/__init__.py:166 +msgid "See also" +msgstr "" + +#: sphinx/locale/__init__.py:167 +msgid "Tip" +msgstr "" + +#: sphinx/locale/__init__.py:168 +msgid "Warning" +msgstr "" + +#: sphinx/locale/__init__.py:172 +#, python-format +msgid "New in version %s" +msgstr "" + +#: sphinx/locale/__init__.py:173 +#, python-format +msgid "Changed in version %s" +msgstr "" + +#: sphinx/locale/__init__.py:174 +#, python-format +msgid "Deprecated since version %s" +msgstr "" + +#: sphinx/locale/__init__.py:180 +msgid "keyword" +msgstr "" + +#: sphinx/locale/__init__.py:181 +msgid "operator" +msgstr "" + +#: sphinx/locale/__init__.py:182 +msgid "object" +msgstr "" + +#: sphinx/locale/__init__.py:184 +msgid "statement" +msgstr "" + +#: sphinx/locale/__init__.py:185 +msgid "built-in function" +msgstr "" + +#: sphinx/themes/agogo/layout.html:46 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:11 sphinx/themes/scrolls/layout.html:35 +msgid "Table Of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 +#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 +#: sphinx/themes/basic/searchresults.html:10 +msgid "Search" +msgstr "" + +#: sphinx/themes/agogo/layout.html:54 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "" + +#: sphinx/themes/agogo/layout.html:81 sphinx/themes/basic/sourcelink.html:15 +msgid "Show Source" +msgstr "" + +#: sphinx/themes/basic/defindex.html:11 +msgid "Overview" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:17 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:20 +msgid "Indices and tables:" +msgstr "" + +#: sphinx/themes/basic/defindex.html:23 +msgid "Complete Table of Contents" +msgstr "" + +#: sphinx/themes/basic/defindex.html:24 +msgid "lists all sections and subsections" +msgstr "" + +#: sphinx/themes/basic/defindex.html:26 +msgid "search this documentation" +msgstr "" + +#: sphinx/themes/basic/defindex.html:28 +msgid "Global Module Index" +msgstr "" + +#: sphinx/themes/basic/defindex.html:29 +msgid "quick access to all modules" +msgstr "" + +#: sphinx/themes/basic/defindex.html:31 +msgid "all functions, classes, terms" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:33 +#, python-format +msgid "Index – %(key)s" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:61 +#: sphinx/themes/basic/genindex-split.html:24 +#: sphinx/themes/basic/genindex-split.html:38 +#: sphinx/themes/basic/genindex.html:72 +msgid "Full index on one page" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:16 +msgid "Index pages by letter" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:25 +msgid "can be huge" +msgstr "" + +#: sphinx/themes/basic/layout.html:29 +msgid "Navigation" +msgstr "" + +#: sphinx/themes/basic/layout.html:123 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/layout.html:132 +msgid "About these documents" +msgstr "" + +#: sphinx/themes/basic/layout.html:141 +msgid "Copyright" +msgstr "" + +#: sphinx/themes/basic/layout.html:186 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:188 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:192 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:195 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "" + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/relations.html:11 +msgid "Previous topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:13 +msgid "previous chapter" +msgstr "" + +#: sphinx/themes/basic/relations.html:16 +msgid "Next topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:18 +msgid "next chapter" +msgstr "" + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "" +"From here you can search these documents. Enter your search\n" +" words into the box below and click \"search\". Note that the search\n" +" function will automatically search for all of the words. Pages\n" +" containing fewer words won't appear in the result list." +msgstr "" + +#: sphinx/themes/basic/search.html:39 +#: sphinx/themes/basic/searchresults.html:17 +msgid "search" +msgstr "" + +#: sphinx/themes/basic/search.html:43 +#: sphinx/themes/basic/searchresults.html:21 +#: sphinx/themes/basic/static/searchtools.js_t:287 +msgid "Search Results" +msgstr "" + +#: sphinx/themes/basic/search.html:45 +#: sphinx/themes/basic/searchresults.html:23 +#: sphinx/themes/basic/static/searchtools.js_t:289 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:12 +msgid "Quick search" +msgstr "" + +#: sphinx/themes/basic/sourcelink.html:12 +msgid "This Page" +msgstr "" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 +msgid "Permalink to this headline" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 +msgid "Permalink to this definition" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js_t:208 +msgid "Hide Search Matches" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js_t:121 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js_t:126 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js_t:291 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js_t:344 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "" + +#: sphinx/themes/haiku/layout.html:24 +msgid "Contents" +msgstr "" + +#: sphinx/writers/html.py:389 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:393 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:395 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:717 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/latex.py:380 +msgid "Release" +msgstr "" + +#: sphinx/writers/latex.py:483 +msgid "page" +msgstr "" + +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 +msgid "Footnotes" +msgstr "" + +#: sphinx/writers/latex.py:1112 +msgid "continued from previous page" +msgstr "" + +#: sphinx/writers/latex.py:1118 +msgid "Continued on next page" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 +#, python-format +msgid "[image: %s]" +msgstr "" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 +msgid "[image]" +msgstr "" diff --git a/sphinx/locale/nb_NO/LC_MESSAGES/sphinx.js b/sphinx/locale/nb_NO/LC_MESSAGES/sphinx.js index b17448783..aa6e6944c 100644 --- a/sphinx/locale/nb_NO/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/nb_NO/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "nb_NO", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": "", "About these documents": "Om disse dokumenter", "Automatically generated list of changes in version %(version)s": "Automatisk generert liste over endringer i versjon %(version)s", "C API changes": "Endringer i C API", "Changes in Version %(version)s — %(docstitle)s": "Endringer i version %(version)s — %(docstitle)s", "Collapse sidebar": "Skjul sidepanelet", "Complete Table of Contents": "Komplett Innholdsfortegnelse", "Contents": "Innhold", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Lagd med <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Utvid sidepanelet", "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 kan du s\u00f8ke blant disse dokumentene. Angi s\u00f8keord nedfor og klikk \"s\u00f8k\".\n S\u00f8ket m\u00e5 treffe p\u00e5 samtlige s\u00f8keord.", "Full index on one page": "Hele innholdsfortegnelsen p\u00e5 en side", "General Index": "Hovedindex", "Global Module Index": "Global Modulindex", "Go": "G\u00e5", "Hide Search Matches": "Skjul s\u00f8keresultat", "Index": "Index", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "Innholdsfortegnelse per bokstav", "Indices and tables:": "Index og tabeller", "Last updated on %(last_updated)s.": "Sist oppdatert %(last_updated)s.", "Library changes": "Endringer i biblioteket", "Navigation": "Navigering", "Next topic": "Neste emne", "Other changes": "Andre endringer", "Overview": "Oversikt", "Permalink to this definition": "Permalink til denne definisjonen", "Permalink to this headline": "Permalink til denne oversikten", "Please activate JavaScript to enable the search\n functionality.": "Vennligst aktiver JavaScript for \u00e5 aktivere s\u00f8k.", "Preparing search...": "", "Previous topic": "Forrige tittel", "Quick search": "Hurtigs\u00f8k", "Search": "S\u00f8k", "Search Page": "S\u00f8keside", "Search Results": "S\u00f8keresultat", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "S\u00f8k blant %(docstitle)s", "Searching": "", "Show Source": "Vis kildekode", "Table Of Contents": "Innholdsfortegnelse", "This Page": "Denne siden", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "alla funksjoner, klasser, vilk\u00e5r", "can be huge": "kan bli stor", "last updated": "", "lists all sections and subsections": "liste over alle paragrafer og underparagrafer", "next chapter": "neste kapittel", "previous chapter": "Forrige kapittel", "quick access to all modules": "snarvei til alle moduler", "search": "s\u00f8k", "search this documentation": "s\u00f8k i dette dokumentet", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file +Documentation.addTranslations({"locale": "nb_NO", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "Om disse dokumenter", "Automatically generated list of changes in version %(version)s": "Automatisk generert liste over endringer i versjon %(version)s", "C API changes": "Endringer i C API", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "Skjul sidepanelet", "Complete Table of Contents": "Komplett Innholdsfortegnelse", "Contents": "Innhold", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Lagd med <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Utvid sidepanelet", "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 kan du s\u00f8ke blant disse dokumentene. Angi s\u00f8keord nedfor og klikk \"s\u00f8k\".\n S\u00f8ket m\u00e5 treffe p\u00e5 samtlige s\u00f8keord.", "Full index on one page": "Hele innholdsfortegnelsen p\u00e5 en side", "General Index": "Hovedindex", "Global Module Index": "Global Modulindex", "Go": "G\u00e5", "Hide Search Matches": "Skjul s\u00f8keresultat", "Index": "Index", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "Innholdsfortegnelse per bokstav", "Indices and tables:": "Index og tabeller", "Last updated on %(last_updated)s.": "Sist oppdatert %(last_updated)s.", "Library changes": "Endringer i biblioteket", "Navigation": "Navigering", "Next topic": "Neste emne", "Other changes": "Andre endringer", "Overview": "Oversikt", "Permalink to this definition": "Permalink til denne definisjonen", "Permalink to this headline": "Permalink til denne oversikten", "Please activate JavaScript to enable the search\n functionality.": "Vennligst aktiver JavaScript for \u00e5 aktivere s\u00f8k.", "Preparing search...": "", "Previous topic": "Forrige tittel", "Quick search": "Hurtigs\u00f8k", "Search": "S\u00f8k", "Search Page": "S\u00f8keside", "Search Results": "S\u00f8keresultat", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "S\u00f8k blant %(docstitle)s", "Searching": "", "Show Source": "Vis kildekode", "Table Of Contents": "Innholdsfortegnelse", "This Page": "Denne siden", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "alla funksjoner, klasser, vilk\u00e5r", "can be huge": "kan bli stor", "last updated": "", "lists all sections and subsections": "liste over alle paragrafer og underparagrafer", "next chapter": "neste kapittel", "previous chapter": "Forrige kapittel", "quick access to all modules": "snarvei til alle moduler", "search": "s\u00f8k", "search this documentation": "s\u00f8k i dette dokumentet", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/locale/nb_NO/LC_MESSAGES/sphinx.mo b/sphinx/locale/nb_NO/LC_MESSAGES/sphinx.mo index d2716e6cdc518952dfe0ddca1909b100195cbb4e..116610d9436e7d66428a10e49ddc36fa4d807078 100644 GIT binary patch delta 3912 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 DlN0hH delta 3511 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 U84T6;nCfxwX61y&XCL<b1(Fb&N&o-= diff --git a/sphinx/locale/nb_NO/LC_MESSAGES/sphinx.po b/sphinx/locale/nb_NO/LC_MESSAGES/sphinx.po index 0c36c5c47..a1790e43a 100644 --- a/sphinx/locale/nb_NO/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/nb_NO/LC_MESSAGES/sphinx.po @@ -7,61 +7,42 @@ msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/sphinx-doc/sphinx-1/language/nb_NO/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: nb_NO\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "se %s" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "se også %s" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python Enhancement Proposals; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "Innebygde" @@ -70,8 +51,11 @@ msgstr "Innebygde" msgid "Module level" msgstr "Modulnivå" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -82,18 +66,28 @@ msgstr "Hovedindex" msgid "index" msgstr "index" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "neste" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "forrige" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr "(i " +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "Seksjon forfatter: " @@ -110,23 +104,23 @@ msgstr "Kildekode forfatter: " msgid "Author: " msgstr "Forfatter: " -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Parametere" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "Returnere" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "Retur type" @@ -155,12 +149,12 @@ msgstr "%s (C-type)" msgid "%s (C variable)" msgstr "%s (C-variabel)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "funksjon" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "medlem" @@ -168,7 +162,7 @@ msgstr "medlem" msgid "macro" msgstr "makro" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "type" @@ -176,63 +170,72 @@ msgstr "type" msgid "variable" msgstr "variabel" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "Kaster" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (C++ type)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (C++ medlem)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (C++ funksjon)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (C++ klasse)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "klasse" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (innebygd funksjon)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (%s metode)" @@ -247,7 +250,7 @@ msgstr "%s() (klasse)" msgid "%s (global variable or constant)" msgstr "%s (global variabel eller konstant)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (%s attribut)" @@ -256,116 +259,116 @@ msgstr "%s (%s attribut)" msgid "Arguments" msgstr "Argument" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "data" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "attributt" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "Variabler" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "Hever" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (i modul %s)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (innebygd variabel)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (i modul %s)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (innebygd klasse)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (klasse i %s)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (%s.%s metode)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (%s.%s statisk metode)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (%s statisk metode)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "%s() (%s.%s klassemetode)" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "%s() (%s klassemetode)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (%s.%s attributt)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (modul)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "Python Modulindex" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "moduler" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "Foreldet" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "untak" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "metode" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "klassemetode" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "statisk metode" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "modul" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr " (foreldet)" @@ -387,120 +390,147 @@ msgstr "direktiv" msgid "role" msgstr "rolle" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "miljøvariabel; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%skommandolinje valg; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "ordliste" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "grammatikk token" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "referanse-etikett" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "miljøvariabel" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "programvalg" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "Index" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "Modulindex" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "Søkeside" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" -msgstr " Baser: %s" +msgid "see %s" +msgstr "se %s" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "se også %s" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "alias for :class:`%s`" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[kilde]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "Todo" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "opprinnelig oppføring" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[dokumentasjon]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "Modul kildekode" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "<h1>Kildekode for %s</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "Oversikt: modulkildekode" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "<h1>Alla moduler hvor kildekode finnes</h1>" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "Obs" @@ -581,7 +611,7 @@ msgstr "innebygde funksjoner" msgid "Table Of Contents" msgstr "Innholdsfortegnelse" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -639,15 +669,15 @@ msgstr "snarvei til alle moduler" msgid "all functions, classes, terms" msgstr "alla funksjoner, klasser, vilkår" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Index – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "Hele innholdsfortegnelsen på en side" @@ -663,35 +693,35 @@ msgstr "kan bli stor" msgid "Navigation" msgstr "Navigering" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "Søk blant %(docstitle)s" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "Om disse dokumenter" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "Copyright" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Copyright %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Sist oppdatert %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -740,13 +770,13 @@ msgstr "søk" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "Søkeresultat" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -763,13 +793,13 @@ msgstr "Denne siden" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "Endringer i version %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -788,12 +818,13 @@ msgstr "Endringer i C API" msgid "Other changes" msgstr "Andre endringer" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "Permalink til denne oversikten" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "Permalink til denne definisjonen" @@ -809,12 +840,12 @@ msgstr "" msgid "Preparing search..." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr "" @@ -831,48 +862,53 @@ msgstr "Skjul sidepanelet" msgid "Contents" msgstr "Innhold" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "Utgivelse" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "Fotnoter" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "fortsettelse fra forrige side" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "Fortsetter på neste side" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[bilde]" diff --git a/sphinx/locale/ne/LC_MESSAGES/sphinx.js b/sphinx/locale/ne/LC_MESSAGES/sphinx.js index 83b804f29..a92aafcb9 100644 --- a/sphinx/locale/ne/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/ne/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "ne", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": "", "About these documents": "\u092f\u0940 \u0921\u0915\u0941\u092e\u0947\u0928\u094d\u091f\u0939\u0930\u0941\u0915\u094b \u092c\u093e\u0930\u0947\u092e\u093e", "Automatically generated list of changes in version %(version)s": "\u092d\u0930\u094d\u0938\u0928 %(version)s \u092e\u093e \u092d\u090f\u0915\u093e \u092b\u0930\u0915 \u0939\u0930\u0941 \u0906\u092b\u0948 \u091c\u0947\u0928\u0947\u0930\u0947\u091f \u092d\u090f ", "C API changes": "C API \u0915\u093e \u092a\u0930\u093f\u0935\u0930\u094d\u0924\u0928\u0939\u0930\u0941 ", "Changes in Version %(version)s — %(docstitle)s": "%(version)s — %(docstitle)s \u092e\u093e \u092d\u090f\u0915\u093e \u092b\u0930\u0915\u0939\u0930\u0941 ", "Collapse sidebar": "\u0938\u093e\u0907\u0921\u092c\u0930 \u0938\u093e\u0928\u094b \u092c\u0928\u093e\u0909\u0928\u0941\u0939\u094b\u0938\u094d", "Complete Table of Contents": "\u092a\u0941\u0930\u093e \u0935\u093f\u0937\u092f\u0938\u0942\u091a\u0940", "Contents": "\u0935\u093f\u0937\u092f\u0938\u0942\u091a\u0940", "Copyright": "\u0915\u092a\u093f\u0930\u093e\u0907\u091f ", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand sidebar": "\u0938\u093e\u0907\u0921\u092c\u0930 \u0920\u0941\u0932\u094b \u092c\u0928\u093e\u0909\u0928\u0941\u0939\u094b\u0938\u094d", "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.": "\u092f\u0939\u093e\u0901\u092c\u093e\u091f \u0924\u092a\u093e\u0908\u0902\u0932\u0947 \u092f\u0940 \u0921\u094d\u0915\u0941\u092e\u0947\u0928\u094d\u091f\u0939\u0930\u0941 \u0916\u094b\u091c\u094d\u0928\u0938\u0915\u094d\u0928\u0941 \u0939\u0941\u0928\u094d\u091b \u0964 \u0916\u094b\u091c\u094d\u0928 \u0936\u092c\u094d\u0926\u0939\u0930\u0941\n\u0924\u0932\u0915\u094b \u092c\u0915\u094d\u0938\u092e\u093e \u0932\u0947\u0916\u094d\u200d\u0928\u0941\u0939\u094b\u0938 \u0930 \"\u0916\u094b\u091c\u094d\u0928\u0941\u0939\u094b\u0938\u094d\"\u0925\u093f\u091a\u094d\u0928\u0941\u0939\u094b\u0938 \u0964 \u0916\u094b\u091c\u094d\u0928\u0941\u0939\u094b\u0938\u094d\n\u092b\u0928\u094d\u0915\u094d\u0938\u0928\u0932\u0947 \u0906\u092b\u0948 \u0938\u092c\u0948 \u0936\u092c\u094d\u0926\u0939\u0930\u0941 \u0916\u094b\u091c\u094d\u091b \u0964 \n\u0925\u094b\u0930\u0948 \u0936\u092c\u094d\u0926\u0939\u0930\u0941 \u092d\u090f\u0915\u094b \u092a\u093e\u0928\u093e\u0939\u0930\u0941 \u0928\u0924\u093f\u091c\u093e\u092e\u093e \u0926\u0947\u0916\u093f\u0928\u094d\u0928 \u0964 ", "Full index on one page": "\u092a\u0941\u0930\u093e \u0905\u0928\u0941\u0938\u0941\u091a\u0940 \u090f\u0915\u0948 \u092a\u093e\u0928\u093e\u092e\u093e", "General Index": "\u0938\u093e\u092e\u093e\u0928\u094d\u092f \u0905\u0928\u0941\u0938\u0941\u091a\u0940", "Global Module Index": "\u0917\u094d\u0932\u094b\u092c\u0932 \u092e\u0921\u0941\u0932 \u0905\u0928\u0941\u0938\u0941\u091a\u0940", "Go": "\u091c\u093e\u0928\u0941\u0939\u094b\u0938\u094d", "Hide Search Matches": "\u0916\u094b\u091c\u0947\u0915\u094b \u0928\u0924\u093f\u091c\u093e\u0939\u0930\u0941 \u0932\u0941\u0915\u093e\u0909\u0928\u0941\u0939\u094b\u0938\u094d", "Index": "\u0905\u0928\u0941\u0938\u0941\u091a\u0940", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "\u0905\u0915\u094d\u0937\u0930 \u0905\u0928\u0941\u0938\u093e\u0930 \u0905\u0928\u0941\u0938\u0941\u091a\u0940\u0915\u093e \u092a\u093e\u0928\u093e", "Indices and tables:": "\u0907\u0928\u094d\u0921\u0940\u0938\u0940\u0938\u094d\u0938 \u0930 \u0924\u0932\u093f\u0915\u093e", "Last updated on %(last_updated)s.": "\u092f\u094b \u092d\u0928\u094d\u0926\u093e \u0905\u0917\u093e\u0921\u0940 %(last_updated)s \u092e\u093e \u0905\u092a\u0921\u0947\u091f \u092d\u090f\u0915\u094b", "Library changes": "\u0932\u093e\u0908\u092c\u094d\u0930\u0947\u0930\u0940\u0915\u093e \u092a\u0930\u093f\u0935\u0930\u094d\u0924\u0928\u0939\u0930\u0941", "Navigation": "\u0928\u0947\u092d\u093f\u0917\u0947\u0938\u0928 ", "Next topic": "\u092a\u091b\u093f\u0932\u094d\u0932\u094b \u0935\u093f\u0937\u092f", "Other changes": "\u0905\u0930\u0941 \u092a\u0930\u093f\u0935\u0930\u094d\u0924\u0928\u0939\u0930\u0941 ", "Overview": "\u092a\u0941\u0928\u0930\u093e\u0935\u0932\u094b\u0915\u0928 ", "Permalink to this definition": "\u092f\u094b \u0905\u0930\u094d\u0925\u0915\u094b \u0932\u093e\u0917\u093f \u092a\u0930\u094d\u092e\u093e\u0932\u093f\u0928\u094d\u0915", "Permalink to this headline": "\u092f\u094b \u0936\u093f\u0930\u094d\u0937\u0915\u0915\u094b \u0932\u093e\u0917\u093f \u092a\u0930\u094d\u092e\u093e\u0932\u093f\u0928\u094d\u0915 \u0964 ", "Please activate JavaScript to enable the search\n functionality.": "\u0916\u094b\u091c\u094d\u0928\u0947 \u0915\u093e\u0930\u094d\u092f \u0906\u0917\u093e\u0921\u0940 \u092c\u0922\u093e\u0909\u0928\u0915\u094b \u0932\u093e\u0917\u093f \u091c\u093e\u092d\u093e\u0938\u094d\u0915\u0943\u092a\u094d\u091f \u091a\u0932\u093e\u0908\u0926\u093f\u0928\u0941\u0939\u094b\u0938 ", "Preparing search...": "", "Previous topic": "\u0905\u0918\u093f\u0932\u094d\u0932\u094b \u0935\u093f\u0937\u092f ", "Quick search": "\u091b\u093f\u091f\u094d\u091f\u094b \u0916\u094b\u091c\u094d\u0928\u0941\u0939\u094b\u0938\u094d", "Search": "\u0916\u094b\u091c\u094d\u0928\u0941\u0939\u094b\u0938\u094d ", "Search Page": "\u092a\u093e\u0928\u093e\u092e\u093e \u0916\u094b\u091c\u094d\u0928\u0941\u0939\u094b\u0938\u094d", "Search Results": "\u0916\u094b\u091c\u0947\u0915\u094b \u0928\u0924\u093f\u091c\u093e", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "", "Show Source": "\u0938\u094d\u0930\u094b\u0924 \u0926\u0947\u0916\u093e\u0909\u0928\u0941\u0939\u094b\u0938\u094d ", "Table Of Contents": "\u0935\u093f\u0937\u092f\u0938\u0942\u091a\u0940", "This Page": "\u092f\u094b \u092a\u093e\u0928\u093e", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "\u0938\u092c\u0948 \u092b\u0928\u094d\u0915\u094d\u0938\u0928\u0938\u094d, \u0915\u0915\u094d\u0937\u093e\u0939\u0930\u0942 \u0930 \u091f\u0930\u094d\u092e\u0938\u094d", "can be huge": "\u0927\u0947\u0930\u0948 \u0920\u0941\u0932\u094b \u0939\u0941\u0928 \u0938\u0915\u094d\u091b", "last updated": "", "lists all sections and subsections": "\u0938\u092c\u0948 \u0938\u0947\u0915\u094d\u0938\u0928 \u0930 \u0938\u0935\u0938\u0947\u0915\u094d\u0938\u0928 \u0926\u0947\u0916\u093e\u0909\u0928\u0941\u0939\u094b\u0938\u094d", "next chapter": "\u092a\u091b\u093f\u0932\u094d\u0932\u094b \u0916\u0928\u094d\u0921", "previous chapter": "\u0905\u0918\u093f\u0932\u094d\u0932\u094b \u0916\u0928\u094d\u0921", "quick access to all modules": "\u0938\u092c\u0948 \u092e\u094b\u0926\u0941\u0932\u0947\u0938\u092e\u093e \u091b\u093f\u091f\u0948 \u091c\u093e\u0928\u0941\u0939\u094b\u0938\u094d", "search": "\u0916\u094b\u091c\u094d\u0928\u0941\u0939\u094b\u0938\u094d", "search this documentation": "\u092f\u094b \u0921\u0915\u0941\u092e\u0947\u0928\u094d\u091f \u0916\u094b\u091c\u094d\u0928\u0941\u0939\u094b\u0938\u094d", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file +Documentation.addTranslations({"locale": "ne", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "\u092f\u0940 \u0921\u0915\u0941\u092e\u0947\u0928\u094d\u091f\u0939\u0930\u0941\u0915\u094b \u092c\u093e\u0930\u0947\u092e\u093e", "Automatically generated list of changes in version %(version)s": "\u092d\u0930\u094d\u0938\u0928 %(version)s \u092e\u093e \u092d\u090f\u0915\u093e \u092b\u0930\u0915 \u0939\u0930\u0941 \u0906\u092b\u0948 \u091c\u0947\u0928\u0947\u0930\u0947\u091f \u092d\u090f ", "C API changes": "C API \u0915\u093e \u092a\u0930\u093f\u0935\u0930\u094d\u0924\u0928\u0939\u0930\u0941 ", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "\u0938\u093e\u0907\u0921\u092c\u0930 \u0938\u093e\u0928\u094b \u092c\u0928\u093e\u0909\u0928\u0941\u0939\u094b\u0938\u094d", "Complete Table of Contents": "\u092a\u0941\u0930\u093e \u0935\u093f\u0937\u092f\u0938\u0942\u091a\u0940", "Contents": "\u0935\u093f\u0937\u092f\u0938\u0942\u091a\u0940", "Copyright": "\u0915\u092a\u093f\u0930\u093e\u0907\u091f ", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand sidebar": "\u0938\u093e\u0907\u0921\u092c\u0930 \u0920\u0941\u0932\u094b \u092c\u0928\u093e\u0909\u0928\u0941\u0939\u094b\u0938\u094d", "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.": "\u092f\u0939\u093e\u0901\u092c\u093e\u091f \u0924\u092a\u093e\u0908\u0902\u0932\u0947 \u092f\u0940 \u0921\u094d\u0915\u0941\u092e\u0947\u0928\u094d\u091f\u0939\u0930\u0941 \u0916\u094b\u091c\u094d\u0928\u0938\u0915\u094d\u0928\u0941 \u0939\u0941\u0928\u094d\u091b \u0964 \u0916\u094b\u091c\u094d\u0928 \u0936\u092c\u094d\u0926\u0939\u0930\u0941\n\u0924\u0932\u0915\u094b \u092c\u0915\u094d\u0938\u092e\u093e \u0932\u0947\u0916\u094d\u200d\u0928\u0941\u0939\u094b\u0938 \u0930 \"\u0916\u094b\u091c\u094d\u0928\u0941\u0939\u094b\u0938\u094d\"\u0925\u093f\u091a\u094d\u0928\u0941\u0939\u094b\u0938 \u0964 \u0916\u094b\u091c\u094d\u0928\u0941\u0939\u094b\u0938\u094d\n\u092b\u0928\u094d\u0915\u094d\u0938\u0928\u0932\u0947 \u0906\u092b\u0948 \u0938\u092c\u0948 \u0936\u092c\u094d\u0926\u0939\u0930\u0941 \u0916\u094b\u091c\u094d\u091b \u0964 \n\u0925\u094b\u0930\u0948 \u0936\u092c\u094d\u0926\u0939\u0930\u0941 \u092d\u090f\u0915\u094b \u092a\u093e\u0928\u093e\u0939\u0930\u0941 \u0928\u0924\u093f\u091c\u093e\u092e\u093e \u0926\u0947\u0916\u093f\u0928\u094d\u0928 \u0964 ", "Full index on one page": "\u092a\u0941\u0930\u093e \u0905\u0928\u0941\u0938\u0941\u091a\u0940 \u090f\u0915\u0948 \u092a\u093e\u0928\u093e\u092e\u093e", "General Index": "\u0938\u093e\u092e\u093e\u0928\u094d\u092f \u0905\u0928\u0941\u0938\u0941\u091a\u0940", "Global Module Index": "\u0917\u094d\u0932\u094b\u092c\u0932 \u092e\u0921\u0941\u0932 \u0905\u0928\u0941\u0938\u0941\u091a\u0940", "Go": "\u091c\u093e\u0928\u0941\u0939\u094b\u0938\u094d", "Hide Search Matches": "\u0916\u094b\u091c\u0947\u0915\u094b \u0928\u0924\u093f\u091c\u093e\u0939\u0930\u0941 \u0932\u0941\u0915\u093e\u0909\u0928\u0941\u0939\u094b\u0938\u094d", "Index": "\u0905\u0928\u0941\u0938\u0941\u091a\u0940", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "\u0905\u0915\u094d\u0937\u0930 \u0905\u0928\u0941\u0938\u093e\u0930 \u0905\u0928\u0941\u0938\u0941\u091a\u0940\u0915\u093e \u092a\u093e\u0928\u093e", "Indices and tables:": "\u0907\u0928\u094d\u0921\u0940\u0938\u0940\u0938\u094d\u0938 \u0930 \u0924\u0932\u093f\u0915\u093e", "Last updated on %(last_updated)s.": "\u092f\u094b \u092d\u0928\u094d\u0926\u093e \u0905\u0917\u093e\u0921\u0940 %(last_updated)s \u092e\u093e \u0905\u092a\u0921\u0947\u091f \u092d\u090f\u0915\u094b", "Library changes": "\u0932\u093e\u0908\u092c\u094d\u0930\u0947\u0930\u0940\u0915\u093e \u092a\u0930\u093f\u0935\u0930\u094d\u0924\u0928\u0939\u0930\u0941", "Navigation": "\u0928\u0947\u092d\u093f\u0917\u0947\u0938\u0928 ", "Next topic": "\u092a\u091b\u093f\u0932\u094d\u0932\u094b \u0935\u093f\u0937\u092f", "Other changes": "\u0905\u0930\u0941 \u092a\u0930\u093f\u0935\u0930\u094d\u0924\u0928\u0939\u0930\u0941 ", "Overview": "\u092a\u0941\u0928\u0930\u093e\u0935\u0932\u094b\u0915\u0928 ", "Permalink to this definition": "\u092f\u094b \u0905\u0930\u094d\u0925\u0915\u094b \u0932\u093e\u0917\u093f \u092a\u0930\u094d\u092e\u093e\u0932\u093f\u0928\u094d\u0915", "Permalink to this headline": "\u092f\u094b \u0936\u093f\u0930\u094d\u0937\u0915\u0915\u094b \u0932\u093e\u0917\u093f \u092a\u0930\u094d\u092e\u093e\u0932\u093f\u0928\u094d\u0915 \u0964 ", "Please activate JavaScript to enable the search\n functionality.": "\u0916\u094b\u091c\u094d\u0928\u0947 \u0915\u093e\u0930\u094d\u092f \u0906\u0917\u093e\u0921\u0940 \u092c\u0922\u093e\u0909\u0928\u0915\u094b \u0932\u093e\u0917\u093f \u091c\u093e\u092d\u093e\u0938\u094d\u0915\u0943\u092a\u094d\u091f \u091a\u0932\u093e\u0908\u0926\u093f\u0928\u0941\u0939\u094b\u0938 ", "Preparing search...": "", "Previous topic": "\u0905\u0918\u093f\u0932\u094d\u0932\u094b \u0935\u093f\u0937\u092f ", "Quick search": "\u091b\u093f\u091f\u094d\u091f\u094b \u0916\u094b\u091c\u094d\u0928\u0941\u0939\u094b\u0938\u094d", "Search": "\u0916\u094b\u091c\u094d\u0928\u0941\u0939\u094b\u0938\u094d ", "Search Page": "\u092a\u093e\u0928\u093e\u092e\u093e \u0916\u094b\u091c\u094d\u0928\u0941\u0939\u094b\u0938\u094d", "Search Results": "\u0916\u094b\u091c\u0947\u0915\u094b \u0928\u0924\u093f\u091c\u093e", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "", "Show Source": "\u0938\u094d\u0930\u094b\u0924 \u0926\u0947\u0916\u093e\u0909\u0928\u0941\u0939\u094b\u0938\u094d ", "Table Of Contents": "\u0935\u093f\u0937\u092f\u0938\u0942\u091a\u0940", "This Page": "\u092f\u094b \u092a\u093e\u0928\u093e", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "\u0938\u092c\u0948 \u092b\u0928\u094d\u0915\u094d\u0938\u0928\u0938\u094d, \u0915\u0915\u094d\u0937\u093e\u0939\u0930\u0942 \u0930 \u091f\u0930\u094d\u092e\u0938\u094d", "can be huge": "\u0927\u0947\u0930\u0948 \u0920\u0941\u0932\u094b \u0939\u0941\u0928 \u0938\u0915\u094d\u091b", "last updated": "", "lists all sections and subsections": "\u0938\u092c\u0948 \u0938\u0947\u0915\u094d\u0938\u0928 \u0930 \u0938\u0935\u0938\u0947\u0915\u094d\u0938\u0928 \u0926\u0947\u0916\u093e\u0909\u0928\u0941\u0939\u094b\u0938\u094d", "next chapter": "\u092a\u091b\u093f\u0932\u094d\u0932\u094b \u0916\u0928\u094d\u0921", "previous chapter": "\u0905\u0918\u093f\u0932\u094d\u0932\u094b \u0916\u0928\u094d\u0921", "quick access to all modules": "\u0938\u092c\u0948 \u092e\u094b\u0926\u0941\u0932\u0947\u0938\u092e\u093e \u091b\u093f\u091f\u0948 \u091c\u093e\u0928\u0941\u0939\u094b\u0938\u094d", "search": "\u0916\u094b\u091c\u094d\u0928\u0941\u0939\u094b\u0938\u094d", "search this documentation": "\u092f\u094b \u0921\u0915\u0941\u092e\u0947\u0928\u094d\u091f \u0916\u094b\u091c\u094d\u0928\u0941\u0939\u094b\u0938\u094d", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/locale/ne/LC_MESSAGES/sphinx.mo b/sphinx/locale/ne/LC_MESSAGES/sphinx.mo index bc425459068499e8856873703bb19fb4493a3981..787ed75553e317abd079ea8c1899b4649c9db21a 100644 GIT binary patch delta 3955 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 OUOsJc;<)FD)PDi*Bp12> delta 3557 zcmZ|R4NR3)9LMnkYNCRWpn`DY0ptn_2x3@3lw=KGC{q@h*t!WOO5nU`zINwJO~KN9 zvdC&?sM&Hez0R_x+0ryuE?qBkBH>F@Q@3=kRZHvp^PX9*b$7X+^YT3B{LlZK=h5wT zXQu|*dv#u8_<YJ=5`S^GsrJt&GSV2nCW@aZ?1x=215+`_)*r!G>XmpqPRBT0h|#zj z`I>k5(KuVNhcN-On}RO*5_{q?d%-!>fWM*!?9N@fE(tY27C-7Q#6I{C#$XL<oZ0B$ z^QikbArqR9up92fKFn_pQ_zh+VPE_e6R;<vXo3vvhs79=l}JoxhV5U7y8dM>!1pm3 zPhmcW6SXETKxM8Jdtn*oGQXKfArV(#Z`_QEaF6vMMo>SBC3xJ{`w=y<nl$W+d8qsE z#-aGI?O%#~&1!zMkXF=qdoZBX9iX5I+p!$ap^iZTdFzh%paLvIt)LoNoSBB2crNPx zMQFl|X-18^f@LbeR#YapVL0x$^@F|0e`gxnXwU#BQ4?H1t>m(`D|c%E4?iiGha|y_ zM+G<;wI%ha3Fq7Ta@2LNqPAd@ZQqW%@6%ZFub>avhBj0{XHf%PM5XEvR6w0L(z-DL zwZi_Wr=|#%+Q(35$Zu^%osCv3#ofqIHwIG%;{uG@pF$d{qYSl@D%2L#qEb8qwSqae zzSQ=wK*lt#?ca<Vcn22a=cuhyw90T2vb)BMT3BEh1r2;3YN9c=qXLzgNvOaYPy;MM z1@<C#!dFlkYq9-rp~iU^HPKdV!o8^bMw1@RHx9WjV4koIQ$h`9CMvRdsFf{254NBJ z*og{kFKVEps58@!%G?>$mRv>!){|#e_r;>>9@G}5Vw|4;Yzll$DL=Y!A}W9y)ETI^ zE<jDxgj(S$)PyalH{nLxe-O3O!`APtZK(TBqXM~rk$V1ru@_uJP28Ciqdkm5U6_Pw zPeG-0pzSY0?d>SkDW8J6el{wA`N-ESw)Hnr8EZu?bSnn5!d(<NC*}ZZfD@<*PvKWQ z&lgZD{fOD*e$?I{MXmgMRAzohot3{(TNKMaXbaPk?Kg#}{zq)RCW-v3V*w2c#6^-| z*4z5Ws2dI<+iBWt|5a-g2SaDW%a0}+fqD!lpo5LpHK_Y{q5?Z?>m45Q@1@~48Wc$K z9iagWFq3)(vUu|xI@p2=a2M+OqqhINwNrBF-vAHtH5L5iV<Rf{n^BqCfxO$y#{mkt z6uw5XX0GFK?B|5`s0vf4PeG-A8P?$%WKI)Kr|wTd1vJjqYjGs?wWxs4U<qEsbS!4y z)E;<>LJ@`er~y92ay*QhFexqcxMZRN9Ev(TV^IS>jylz^+y3>K9?qK%@1^}Tvt?l# zX}%N3q9%R;nI~Y@QBW!_p-!<G5IT%8RxggGxfqAwGMtE?;0WxS5el#h74Xxjv($*J z!7N6SYBr*_U_WY0kK8c8>88NkrVAUc8?sPO!^5b^YfuBM#zD9p^#W-}W$ZjYfMy`8 zg9lNE?KSIG)Px6cEuKUj>IDpz#{6a#h5on$)o~2-@DkpJ$wZ;dc(Df-U{@?f1vUzG z`lq4p3!oOV4U6$x)Yjde9oo8V)EO9t0Tm`uP->T;2HuGgxCgaY2T*}^Sg)c2i^vJR z2cl8$jaXEm@u)4$K)tYvunEVY?)w3?koFw*Ulaap8?K<9&+FEh!J(C<;-j<=!*2Kz z>h!muPXC7(jpvY8gZT}IV{bYYSS2b0Rkl6{yHj7N|9>fU%V^L_-$D(v6Lki@K(c4r zFbcboU$yr|O_Yt1I0|(rD{Vc98fUMqe`7s?Hx`T<=SqNr_9}w>D>Z{q9YauCQ-)eW zy>0iSu3wHraSM*dlgM!~*}QFf;RIBM>QIkqGxF%0L#PE^L<OFgz$md4yr_u_QIU^D z1@t5u$8k!1{u+OwlkRsHM5e_(Q|<FlEppN`sv9Qz8*3ZuYBK%q?#Q>@tDcnL%BVNO zI!|txG1twB&JPuuozGlvjNfgIspxX!-r%1xyTjcdV@nds%bn`#EN22AQ_kmR%}tCu z6^!q_FU&pLry;naZ)KQ!AwDxWGQk_(BR4-gx4;>aS9s@L?z}`#X{er;UznRWD3?$7 zF+P7|cEwCzy}!=a*f6uusqjtr&7C#9))_yw_L<swv!?r=^*P1<o0Z^^#2#Uhw=DE{ zlJkEHEpvUI#lfqds_<JE8f<pn3v)|STawc=X4lO0*EZB=`W^3o)8%%gIME#&c6Ds{ zpkw1A$K2mgUE{9Li4CTv?d{@5WNu0PcPeg8jB%R=qz8{>t_usggD!`=D|1c;Hx0fP a=AOukcXy->bT8$lxFZuvf{TW1>-0BN#knQ` diff --git a/sphinx/locale/ne/LC_MESSAGES/sphinx.po b/sphinx/locale/ne/LC_MESSAGES/sphinx.po index d1be56a01..ccf9684fc 100644 --- a/sphinx/locale/ne/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/ne/LC_MESSAGES/sphinx.po @@ -4,65 +4,47 @@ # # Translators: # FIRST AUTHOR <EMAIL@ADDRESS>, 2011 +# Takeshi KOMIYA <i.tkomiya@gmail.com>, 2016 msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Nepali (http://www.transifex.com/sphinx-doc/sphinx-1/language/ne/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: ne\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "%s हेर्नुहोस्" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "%s पनि हेर्नुहोस् " - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python Enhancement Proposals; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "बिइल्टिन्स" @@ -71,8 +53,11 @@ msgstr "बिइल्टिन्स" msgid "Module level" msgstr "मडुलको तह" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -83,18 +68,28 @@ msgstr "सामान्य अनुसुची" msgid "index" msgstr "अनुसुची" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "पछिल्लो" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "अघिल्लो" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr "(in" +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "सेक्सनको लेखक" @@ -111,23 +106,23 @@ msgstr "Codeको लेखक " msgid "Author: " msgstr "लेखक" -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Parameters" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "Returns" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "Return type" @@ -156,12 +151,12 @@ msgstr "%s (C किसिम)" msgid "%s (C variable)" msgstr "%s (C चल)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "फन्क्सन" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "सदस्य" @@ -169,7 +164,7 @@ msgstr "सदस्य" msgid "macro" msgstr "बृहत" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "किसिम" @@ -177,63 +172,72 @@ msgstr "किसिम" msgid "variable" msgstr "चल" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "Throws" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (C++ किसिम)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (C++ सदस्य)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (C++कार्य)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (C++ कक्षा)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "कक्षा" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (built-in function)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (%s विधी)" @@ -248,7 +252,7 @@ msgstr "%s() (कक्षा)" msgid "%s (global variable or constant)" msgstr "%s (global variable or constant)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (%s attribute)" @@ -257,116 +261,116 @@ msgstr "%s (%s attribute)" msgid "Arguments" msgstr "Arguments" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "data" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "attribute" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "चलहरू" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "Raises" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (in मडुल %s)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (built-in चल)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (in मडुल %s)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (built-in कक्षा)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (कक्षा in %s)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (%s.%s विधी)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (%s.%s static विधी)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (%s static विधी)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "%s() (%s.%s कक्षा विधी)" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "%s() (%s कक्षा विधी)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (%s.%s attribute)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (मडुल)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "Python Module Index" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "modules" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "Deprecated" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "अपबाद" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "विधी" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "कक्षा विधी" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "static विधी" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "मडुल" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr "(deprecated)" @@ -388,120 +392,147 @@ msgstr "निर्देशिक" msgid "role" msgstr "भूमिका" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "environment variable; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%scommand line option; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "शब्द-अर्थमा भएको" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "grammar token" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "सन्दर्व सामग्री" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "environment variable" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "कार्यक्रमका बिकल्प" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "अनुसुची" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "मडुल अनुसुची" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "पानामा खोज्नुहोस्" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" -msgstr " Bases: %s" +msgid "see %s" +msgstr "%s हेर्नुहोस्" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "%s पनि हेर्नुहोस् " + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "alias of :class:`%s`" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[स्रोत]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "Todo" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "मौलिक इन्ट्री" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[docs]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "Module code" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "<h1>Source code for %s</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "पुनरावलोकन: module code" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "<h1>All modules for which code is available</h1>" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "ध्यानाकर्षण" @@ -582,7 +613,7 @@ msgstr "built-in फन्क्सन" msgid "Table Of Contents" msgstr "विषयसूची" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -640,15 +671,15 @@ msgstr "सबै मोदुलेसमा छिटै जानुहोस msgid "all functions, classes, terms" msgstr "सबै फन्क्सनस्, कक्षाहरू र टर्मस्" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Index – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "पुरा अनुसुची एकै पानामा" @@ -664,35 +695,35 @@ msgstr "धेरै ठुलो हुन सक्छ" msgid "Navigation" msgstr "नेभिगेसन " -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "यी डकुमेन्टहरुको बारेमा" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "कपिराइट " -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Copyright %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "यो भन्दा अगाडी %(last_updated)s मा अपडेट भएको" -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -741,13 +772,13 @@ msgstr "खोज्नुहोस्" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "खोजेको नतिजा" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -764,13 +795,13 @@ msgstr "यो पाना" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "%(version)s — %(docstitle)s मा भएका फरकहरु " +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -789,12 +820,13 @@ msgstr "C API का परिवर्तनहरु " msgid "Other changes" msgstr "अरु परिवर्तनहरु " -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "यो शिर्षकको लागि पर्मालिन्क । " -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "यो अर्थको लागि पर्मालिन्क" @@ -810,12 +842,12 @@ msgstr "" msgid "Preparing search..." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr "" @@ -832,48 +864,53 @@ msgstr "साइडबर सानो बनाउनुहोस्" msgid "Contents" msgstr "विषयसूची" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "रीलीज" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "फूट्नोट्स" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "अघिल्लो पानासँग जोडीएको" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "अर्को पानासँग जोडीएको" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[चित्र]" diff --git a/sphinx/locale/nl/LC_MESSAGES/sphinx.js b/sphinx/locale/nl/LC_MESSAGES/sphinx.js index 59504ce61..e8bddca5a 100644 --- a/sphinx/locale/nl/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/nl/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "nl", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": "", "About these documents": "Over deze documenten", "Automatically generated list of changes in version %(version)s": "Automatisch gegenereerde lijst van veranderingen in versie %(version)s", "C API changes": "Veranderingen in de C-API", "Changes in Version %(version)s — %(docstitle)s": "Veranderingen in versie %(version)s — %(docstitle)s", "Collapse sidebar": "", "Complete Table of Contents": "Volledige inhoudsopgave", "Contents": "Inhoud", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Aangemaakt met <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand 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.": "Hier kan u de documenten doorzoeken. Geef enkele trefwoorden\n in het veld hieronder en klik \"zoeken\". Merk op dat de zoekfunctie\n steeds naar alle woorden zoekt. Pagina's die minder woorden bevatten\n zullen niet tussen de resultaten verschijnen.", "Full index on one page": "Volledige index op een pagina", "General Index": "Algemene index", "Global Module Index": "Globale Module-index", "Go": "Ga", "Hide Search Matches": "Zoekresultaten verbergen", "Index": "Index", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "Index pagineerd per letter", "Indices and tables:": "Indices en tabellen:", "Last updated on %(last_updated)s.": "Laatste aanpassing op %(last_updated)s.", "Library changes": "Veranderingen in de bibliotheek", "Navigation": "Navigatie", "Next topic": "Volgend onderwerp", "Other changes": "Andere veranderingen", "Overview": "Overzicht", "Permalink to this definition": "Permalink naar deze definitie", "Permalink to this headline": "Permalink naar deze titel", "Please activate JavaScript to enable the search\n functionality.": "Activeer JavaSscript om de zoekfunctionaliteit in te schakelen.", "Preparing search...": "", "Previous topic": "Vorig onderwerp", "Quick search": "Snel zoeken", "Search": "Zoeken", "Search Page": "Zoekpagina", "Search Results": "Zoekresultaten", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "Zoeken in %(docstitle)s", "Searching": "", "Show Source": "Broncode weergeven", "Table Of Contents": "Inhoudsopgave", "This Page": "Deze pagina", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "alle functies, klasses en begrippen", "can be huge": "kan heel groot zijn", "last updated": "", "lists all sections and subsections": "geeft alle secties en subsecties weer", "next chapter": "volgend hoofdstuk", "previous chapter": "Vorig hoofdstuk", "quick access to all modules": "sneltoegang naar alle modules", "search": "zoeken", "search this documentation": "zoeken in deze documentatie", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file +Documentation.addTranslations({"locale": "nl", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", in", "About these documents": "Over deze documenten", "Automatically generated list of changes in version %(version)s": "Automatisch gegenereerde lijst van veranderingen in versie %(version)s", "C API changes": "Veranderingen in de C-API", "Changes in Version %(version)s — %(docstitle)s": "Wijzigingen in Versie %(version)s — %(docstitle)s", "Collapse sidebar": "Zijpaneel inklappen", "Complete Table of Contents": "Volledige inhoudsopgave", "Contents": "Inhoud", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Aangemaakt met <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Zijpaneel uitklappen", "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.": "Hier kan u de documenten doorzoeken. Geef enkele trefwoorden\n in het veld hieronder en klik \"zoeken\". Merk op dat de zoekfunctie\n steeds naar alle woorden zoekt. Pagina's die minder woorden bevatten\n zullen niet tussen de resultaten verschijnen.", "Full index on one page": "Volledige index op een pagina", "General Index": "Algemene index", "Global Module Index": "Globale Module-index", "Go": "Ga", "Hide Search Matches": "Zoekresultaten verbergen", "Index": "Index", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "Index pagineerd per letter", "Indices and tables:": "Indices en tabellen:", "Last updated on %(last_updated)s.": "Laatste aanpassing op %(last_updated)s.", "Library changes": "Veranderingen in de bibliotheek", "Navigation": "Navigatie", "Next topic": "Volgend onderwerp", "Other changes": "Andere veranderingen", "Overview": "Overzicht", "Permalink to this definition": "Permalink naar deze definitie", "Permalink to this headline": "Permalink naar deze titel", "Please activate JavaScript to enable the search\n functionality.": "Activeer JavaSscript om de zoekfunctionaliteit in te schakelen.", "Preparing search...": "Zoeken aan het voorbereiden...", "Previous topic": "Vorig onderwerp", "Quick search": "Snel zoeken", "Search": "Zoeken", "Search Page": "Zoekpagina", "Search Results": "Zoekresultaten", "Search finished, found %s page(s) matching the search query.": "Zoekopdracht voltooid, %s pagaina(s) gevonden die overeenkomen met de zoekterm.", "Search within %(docstitle)s": "Zoeken in %(docstitle)s", "Searching": "Bezig met zoeken", "Show Source": "Broncode weergeven", "Table Of Contents": "Inhoudsopgave", "This Page": "Deze pagina", "Welcome! This is": "Welkom! Dit is", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Uw zoekopdracht leverde geen resultaten op. Zorg ervoor dat alle woorden juist zijn gespeld en dat u voldoende categorie\u00ebn hebt geselecteerd.", "all functions, classes, terms": "alle functies, klasses en begrippen", "can be huge": "kan heel groot zijn", "last updated": "laatst bijgewerkt", "lists all sections and subsections": "geeft alle secties en subsecties weer", "next chapter": "volgend hoofdstuk", "previous chapter": "Vorig hoofdstuk", "quick access to all modules": "sneltoegang naar alle modules", "search": "zoeken", "search this documentation": "zoeken in deze documentatie", "the documentation for": "de documentatie voor"}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/locale/nl/LC_MESSAGES/sphinx.mo b/sphinx/locale/nl/LC_MESSAGES/sphinx.mo index 733867e58cb30e09b3c34cabd05756e978e00b1a..fba0bd491450cc3ec2a147be640b84a794b1c75e 100644 GIT binary patch delta 5123 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 delta 3848 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 V-5w~&wM%MS?6rcDl%Ojx{{<tv4~YN( diff --git a/sphinx/locale/nl/LC_MESSAGES/sphinx.po b/sphinx/locale/nl/LC_MESSAGES/sphinx.po index 1a419d8e8..29b92ef54 100644 --- a/sphinx/locale/nl/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/nl/LC_MESSAGES/sphinx.po @@ -3,66 +3,48 @@ # This file is distributed under the same license as the Sphinx project. # # Translators: +# Brecht Machiels <brecht@mos6581.org>, 2016 # FIRST AUTHOR <EMAIL@ADDRESS>, 2008 msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-25 10:46+0000\n" +"Last-Translator: Brecht Machiels <brecht@mos6581.org>\n" "Language-Team: Dutch (http://www.transifex.com/sphinx-doc/sphinx-1/language/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "Sectie %s" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" -msgstr "" +msgstr "Fig. %s" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" -msgstr "" +msgstr "Tabel %s" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" -msgstr "" +msgstr "Codefragment %s" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "%s %s documentatie" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "zie %s" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "zie %s" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python Enhancement Proposals; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "Builtins" @@ -71,9 +53,12 @@ msgstr "Builtins" msgid "Module level" msgstr "Moduleniveau" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" -msgstr "" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" +msgstr "%b %d, %Y" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 msgid "General Index" @@ -83,17 +68,27 @@ msgstr "Algemene index" msgid "index" msgstr "Index" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "volgende" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "vorige" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s documentatie" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " -msgstr "" +msgstr " (in " + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "Ongeldig onderschrift: %s" #: sphinx/directives/other.py:149 msgid "Section author: " @@ -105,29 +100,29 @@ msgstr "Auteur van deze module: " #: sphinx/directives/other.py:153 msgid "Code author: " -msgstr "" +msgstr "Auteur van deze broncode:" #: sphinx/directives/other.py:155 msgid "Author: " msgstr "Auteur: " -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" -msgstr "" +msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Parameters" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "Returns" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "Return type" @@ -156,12 +151,12 @@ msgstr "%s (C type)" msgid "%s (C variable)" msgstr "%s (C-variabele)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "functie" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "member" @@ -169,7 +164,7 @@ msgstr "member" msgid "macro" msgstr "macro" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "type" @@ -177,63 +172,72 @@ msgstr "type" msgid "variable" msgstr "variabele" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" -msgstr "" +msgstr "Sjabloonparameters" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" -msgstr "" +msgstr "Werpt" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (C++ type)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "%s (C++ concept)" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (C++ member)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (C++ functie)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (C++ klasse)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" -msgstr "" +msgstr "%s (C++ enum)" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" -msgstr "" +msgstr "%s (C++ enumerator)" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "klasse" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "concept" + +#: sphinx/domains/cpp.py:4422 msgid "enum" -msgstr "" +msgstr "enum" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" -msgstr "" +msgstr "enumerator" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (geïntegreerde functie)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (%s methode)" @@ -248,259 +252,286 @@ msgstr "%s() (klasse)" msgid "%s (global variable or constant)" msgstr "%s (globale variabele of constante)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (%s attribuut)" #: sphinx/domains/javascript.py:122 msgid "Arguments" -msgstr "" +msgstr "Argumenten" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" -msgstr "" +msgstr "data" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "attribuut" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" -msgstr "" +msgstr "Variabelen" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "Veroorzaakt" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (in module %s)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (geïntegreerde variabele)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (in module %s)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (geïntegreerde klasse)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (klasse in %s)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (%s.%s methode)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (%s.%s statische methode)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (%s statische methode)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" -msgstr "" +msgstr "%s() (%s.%s klassemethode)" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" -msgstr "" +msgstr "%s() (%s klassemethode)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (%s.%s attribuut)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (module)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" -msgstr "" +msgstr "Python-moduleïndex" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "modules" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "Verouderd" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "exceptie" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" -msgstr "" +msgstr "methode" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" -msgstr "" +msgstr "klassemethode" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "statische methode" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "module" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr " (verouderd)" #: sphinx/domains/rst.py:55 #, python-format msgid "%s (directive)" -msgstr "" +msgstr "%s (richtlijn)" #: sphinx/domains/rst.py:57 #, python-format msgid "%s (role)" -msgstr "" +msgstr "%s (rol)" #: sphinx/domains/rst.py:106 msgid "directive" -msgstr "" +msgstr "richtlijn" #: sphinx/domains/rst.py:107 msgid "role" -msgstr "" +msgstr "rol" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "omgevingsvariabele; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%sopdrachtregel optie; %s" -#: sphinx/domains/std.py:433 -msgid "glossary term" -msgstr "" - #: sphinx/domains/std.py:434 -msgid "grammar token" -msgstr "" +msgid "glossary term" +msgstr "woordenlijstterm" #: sphinx/domains/std.py:435 -msgid "reference label" -msgstr "" +msgid "grammar token" +msgstr "grammaticatoken" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:436 +msgid "reference label" +msgstr "verwijzingslabel" + +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "omgevingsvariabele" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" -msgstr "" +msgstr "programmaoptie" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "Index" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "Module-index" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "Zoekpagina" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" -msgstr "" +msgid "see %s" +msgstr "zie %s" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "zie %s" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "Symbolen" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "Basisklassen: %s" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" -msgstr "" +msgstr "alias voor :class:`%s`" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" -msgstr "" +msgstr "[grafiek: %s]" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" -msgstr "" +msgstr "[grafiek]" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "Permalink naar deze formule" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" -msgstr "" +msgstr "(in %s v%s)" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" -msgstr "" +msgstr "[broncode]" + +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "duplikaatlabel van formule %s, andere in %s" #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "Te doen" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" -msgstr "" +msgstr "<<origineel item>>" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" -msgstr "" +msgstr "(Het <<origineel item>> bevindt zich in %s, lijn %d.)" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "originele item" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" -msgstr "" +msgstr "[documentatie]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" -msgstr "" +msgstr "Modulebroncode" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" -msgstr "" +msgstr "<h1>Broncode voor %s</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" -msgstr "" +msgstr "Overzicht: module broncode" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" -msgstr "" +msgstr "<h1>Alle modules waarvoor de broncode beschikbaar is</h1>" + +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "Sleutelwoordargumenten" #: sphinx/locale/__init__.py:159 msgid "Attention" @@ -582,7 +613,7 @@ msgstr "ingebouwde functie" msgid "Table Of Contents" msgstr "Inhoudsopgave" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -602,15 +633,15 @@ msgstr "Overzicht" #: sphinx/themes/basic/defindex.html:15 msgid "Welcome! This is" -msgstr "" +msgstr "Welkom! Dit is" #: sphinx/themes/basic/defindex.html:16 msgid "the documentation for" -msgstr "" +msgstr "de documentatie voor" #: sphinx/themes/basic/defindex.html:17 msgid "last updated" -msgstr "" +msgstr "laatst bijgewerkt" #: sphinx/themes/basic/defindex.html:20 msgid "Indices and tables:" @@ -640,15 +671,15 @@ msgstr "sneltoegang naar alle modules" msgid "all functions, classes, terms" msgstr "alle functies, klasses en begrippen" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Index – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "Volledige index op een pagina" @@ -664,35 +695,35 @@ msgstr "kan heel groot zijn" msgid "Navigation" msgstr "Navigatie" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "Zoeken in %(docstitle)s" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "Over deze documenten" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "Copyright" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Copyright %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "© Copyright %(copyright)s." -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Laatste aanpassing op %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -741,17 +772,17 @@ msgstr "zoeken" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "Zoekresultaten" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." -msgstr "" +msgstr "Uw zoekopdracht leverde geen resultaten op. Zorg ervoor dat alle woorden juist zijn gespeld en dat u voldoende categorieën hebt geselecteerd." #: sphinx/themes/basic/searchbox.html:12 msgid "Quick search" @@ -764,13 +795,13 @@ msgstr "Deze pagina" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "Veranderingen in versie %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "Wijzigingen in Versie %(version)s — %(docstitle)s" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "%(filename)s — %(docstitle)s" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -789,12 +820,13 @@ msgstr "Veranderingen in de C-API" msgid "Other changes" msgstr "Andere veranderingen" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "Permalink naar deze titel" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "Permalink naar deze definitie" @@ -804,76 +836,81 @@ msgstr "Zoekresultaten verbergen" #: sphinx/themes/basic/static/searchtools.js_t:121 msgid "Searching" -msgstr "" +msgstr "Bezig met zoeken" #: sphinx/themes/basic/static/searchtools.js_t:126 msgid "Preparing search..." -msgstr "" +msgstr "Zoeken aan het voorbereiden..." -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." -msgstr "" +msgstr "Zoekopdracht voltooid, %s pagaina(s) gevonden die overeenkomen met de zoekterm." -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " -msgstr "" +msgstr ", in" #: sphinx/themes/classic/static/sidebar.js_t:83 msgid "Expand sidebar" -msgstr "" +msgstr "Zijpaneel uitklappen" #: sphinx/themes/classic/static/sidebar.js_t:96 #: sphinx/themes/classic/static/sidebar.js_t:124 msgid "Collapse sidebar" -msgstr "" +msgstr "Zijpaneel inklappen" #: sphinx/themes/haiku/layout.html:24 msgid "Contents" msgstr "Inhoud" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" -msgstr "" +msgstr "Permalink naar deze broncode" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" -msgstr "" +msgstr "Permallink naar deze afbeelding" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" -msgstr "" +msgstr "Permalink naar deze toctree" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" -msgstr "" +msgstr "Permalink naar deze tabel" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "Release" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" -msgstr "" +msgstr "pagina" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "Onbekende configuratiesleutel: latex_elements[%r] wordt genegeerd" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "Voetnoten" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "Vervolgd van vorige pagina" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "Vervolgd op volgende pagina" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" -msgstr "" +msgstr "[afbeelding: %s]" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[afbeelding]" diff --git a/sphinx/locale/no/LC_MESSAGES/sphinx.js b/sphinx/locale/no/LC_MESSAGES/sphinx.js new file mode 100644 index 000000000..bfabd34ce --- /dev/null +++ b/sphinx/locale/no/LC_MESSAGES/sphinx.js @@ -0,0 +1 @@ +Documentation.addTranslations({"locale": "nb_NO", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "", "Automatically generated list of changes in version %(version)s": "", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "", "Contents": "", "Copyright": "", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand 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.": "", "Full index on one page": "", "General Index": "", "Global Module Index": "", "Go": "", "Hide Search Matches": "", "Index": "", "Index – %(key)s": "", "Index pages by letter": "", "Indices and tables:": "", "Last updated on %(last_updated)s.": "", "Library changes": "", "Navigation": "", "Next topic": "", "Other changes": "", "Overview": "", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "", "Previous topic": "", "Quick search": "", "Search": "", "Search Page": "", "Search Results": "", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "", "Show Source": "", "Table Of Contents": "", "This Page": "", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "", "can be huge": "", "last updated": "", "lists all sections and subsections": "", "next chapter": "", "previous chapter": "", "quick access to all modules": "", "search": "", "search this documentation": "", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/locale/no/LC_MESSAGES/sphinx.mo b/sphinx/locale/no/LC_MESSAGES/sphinx.mo new file mode 100644 index 0000000000000000000000000000000000000000..6fb754638659859abe68bc9f5adba9e3877f55f5 GIT binary patch literal 11132 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 T$-qmzjh77F|IGY<y=3@bRgjD) literal 0 HcmV?d00001 diff --git a/sphinx/locale/no/LC_MESSAGES/sphinx.po b/sphinx/locale/no/LC_MESSAGES/sphinx.po new file mode 100644 index 000000000..a9cc10ed4 --- /dev/null +++ b/sphinx/locale/no/LC_MESSAGES/sphinx.po @@ -0,0 +1,914 @@ +# Translations template for Sphinx. +# Copyright (C) 2016 ORGANIZATION +# This file is distributed under the same license as the Sphinx project. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Sphinx\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" +"Language-Team: Norwegian (http://www.transifex.com/sphinx-doc/sphinx-1/language/no/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.3.4\n" +"Language: no\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 +#, python-format +msgid "Fig. %s" +msgstr "" + +#: sphinx/config.py:111 +#, python-format +msgid "Table %s" +msgstr "" + +#: sphinx/config.py:112 +#, python-format +msgid "Listing %s" +msgstr "" + +#: sphinx/roles.py:187 +#, python-format +msgid "Python Enhancement Proposals; PEP %s" +msgstr "" + +#: sphinx/builders/changes.py:75 +msgid "Builtins" +msgstr "" + +#: sphinx/builders/changes.py:77 +msgid "Module level" +msgstr "" + +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" +msgstr "" + +#: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 +msgid "General Index" +msgstr "" + +#: sphinx/builders/html.py:315 +msgid "index" +msgstr "" + +#: sphinx/builders/html.py:377 +msgid "next" +msgstr "" + +#: sphinx/builders/html.py:386 +msgid "previous" +msgstr "" + +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 +msgid " (in " +msgstr "" + +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + +#: sphinx/directives/other.py:149 +msgid "Section author: " +msgstr "" + +#: sphinx/directives/other.py:151 +msgid "Module author: " +msgstr "" + +#: sphinx/directives/other.py:153 +msgid "Code author: " +msgstr "" + +#: sphinx/directives/other.py:155 +msgid "Author: " +msgstr "" + +#: sphinx/domains/__init__.py:277 +#, python-format +msgid "%s %s" +msgstr "" + +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 +msgid "Parameters" +msgstr "" + +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 +msgid "Returns" +msgstr "" + +#: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 +#: sphinx/domains/python.py:163 +msgid "Return type" +msgstr "" + +#: sphinx/domains/c.py:177 +#, python-format +msgid "%s (C function)" +msgstr "" + +#: sphinx/domains/c.py:179 +#, python-format +msgid "%s (C member)" +msgstr "" + +#: sphinx/domains/c.py:181 +#, python-format +msgid "%s (C macro)" +msgstr "" + +#: sphinx/domains/c.py:183 +#, python-format +msgid "%s (C type)" +msgstr "" + +#: sphinx/domains/c.py:185 +#, python-format +msgid "%s (C variable)" +msgstr "" + +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 +msgid "function" +msgstr "" + +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 +msgid "member" +msgstr "" + +#: sphinx/domains/c.py:244 +msgid "macro" +msgstr "" + +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 +msgid "type" +msgstr "" + +#: sphinx/domains/c.py:246 +msgid "variable" +msgstr "" + +#: sphinx/domains/cpp.py:4054 +msgid "Template Parameters" +msgstr "" + +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 +msgid "Throws" +msgstr "" + +#: sphinx/domains/cpp.py:4205 +#, python-format +msgid "%s (C++ type)" +msgstr "" + +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 +#, python-format +msgid "%s (C++ member)" +msgstr "" + +#: sphinx/domains/cpp.py:4238 +#, python-format +msgid "%s (C++ function)" +msgstr "" + +#: sphinx/domains/cpp.py:4249 +#, python-format +msgid "%s (C++ class)" +msgstr "" + +#: sphinx/domains/cpp.py:4260 +#, python-format +msgid "%s (C++ enum)" +msgstr "" + +#: sphinx/domains/cpp.py:4281 +#, python-format +msgid "%s (C++ enumerator)" +msgstr "" + +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 +msgid "class" +msgstr "" + +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 +msgid "enum" +msgstr "" + +#: sphinx/domains/cpp.py:4423 +msgid "enumerator" +msgstr "" + +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 +#, python-format +msgid "%s() (built-in function)" +msgstr "" + +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 +#, python-format +msgid "%s() (%s method)" +msgstr "" + +#: sphinx/domains/javascript.py:109 +#, python-format +msgid "%s() (class)" +msgstr "" + +#: sphinx/domains/javascript.py:111 +#, python-format +msgid "%s (global variable or constant)" +msgstr "" + +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 +#, python-format +msgid "%s (%s attribute)" +msgstr "" + +#: sphinx/domains/javascript.py:122 +msgid "Arguments" +msgstr "" + +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 +msgid "data" +msgstr "" + +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 +msgid "attribute" +msgstr "" + +#: sphinx/domains/python.py:154 +msgid "Variables" +msgstr "" + +#: sphinx/domains/python.py:158 +msgid "Raises" +msgstr "" + +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 +#, python-format +msgid "%s() (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:311 +#, python-format +msgid "%s (built-in variable)" +msgstr "" + +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 +#, python-format +msgid "%s (in module %s)" +msgstr "" + +#: sphinx/domains/python.py:328 +#, python-format +msgid "%s (built-in class)" +msgstr "" + +#: sphinx/domains/python.py:329 +#, python-format +msgid "%s (class in %s)" +msgstr "" + +#: sphinx/domains/python.py:369 +#, python-format +msgid "%s() (%s.%s method)" +msgstr "" + +#: sphinx/domains/python.py:381 +#, python-format +msgid "%s() (%s.%s static method)" +msgstr "" + +#: sphinx/domains/python.py:384 +#, python-format +msgid "%s() (%s static method)" +msgstr "" + +#: sphinx/domains/python.py:394 +#, python-format +msgid "%s() (%s.%s class method)" +msgstr "" + +#: sphinx/domains/python.py:397 +#, python-format +msgid "%s() (%s class method)" +msgstr "" + +#: sphinx/domains/python.py:407 +#, python-format +msgid "%s (%s.%s attribute)" +msgstr "" + +#: sphinx/domains/python.py:488 +#, python-format +msgid "%s (module)" +msgstr "" + +#: sphinx/domains/python.py:545 +msgid "Python Module Index" +msgstr "" + +#: sphinx/domains/python.py:546 +msgid "modules" +msgstr "" + +#: sphinx/domains/python.py:592 +msgid "Deprecated" +msgstr "" + +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 +msgid "exception" +msgstr "" + +#: sphinx/domains/python.py:618 +msgid "method" +msgstr "" + +#: sphinx/domains/python.py:619 +msgid "class method" +msgstr "" + +#: sphinx/domains/python.py:620 +msgid "static method" +msgstr "" + +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 +msgid "module" +msgstr "" + +#: sphinx/domains/python.py:787 +msgid " (deprecated)" +msgstr "" + +#: sphinx/domains/rst.py:55 +#, python-format +msgid "%s (directive)" +msgstr "" + +#: sphinx/domains/rst.py:57 +#, python-format +msgid "%s (role)" +msgstr "" + +#: sphinx/domains/rst.py:106 +msgid "directive" +msgstr "" + +#: sphinx/domains/rst.py:107 +msgid "role" +msgstr "" + +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 +#, python-format +msgid "environment variable; %s" +msgstr "" + +#: sphinx/domains/std.py:186 +#, python-format +msgid "%scommand line option; %s" +msgstr "" + +#: sphinx/domains/std.py:434 +msgid "glossary term" +msgstr "" + +#: sphinx/domains/std.py:435 +msgid "grammar token" +msgstr "" + +#: sphinx/domains/std.py:436 +msgid "reference label" +msgstr "" + +#: sphinx/domains/std.py:438 +msgid "environment variable" +msgstr "" + +#: sphinx/domains/std.py:439 +msgid "program option" +msgstr "" + +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 +#: sphinx/themes/basic/genindex-split.html:11 +#: sphinx/themes/basic/genindex-split.html:14 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 +msgid "Index" +msgstr "" + +#: sphinx/domains/std.py:474 +msgid "Module Index" +msgstr "" + +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 +msgid "Search Page" +msgstr "" + +#: sphinx/environment/managers/indexentries.py:104 +#, python-format +msgid "see %s" +msgstr "" + +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 +#, python-format +msgid "alias of :class:`%s`" +msgstr "" + +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 +#, python-format +msgid "[graph: %s]" +msgstr "" + +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 +msgid "[graph]" +msgstr "" + +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 +#, python-format +msgid "(in %s v%s)" +msgstr "" + +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 +msgid "[source]" +msgstr "" + +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + +#: sphinx/ext/todo.py:56 +msgid "Todo" +msgstr "" + +#: sphinx/ext/todo.py:134 +msgid "<<original entry>>" +msgstr "" + +#: sphinx/ext/todo.py:137 +#, python-format +msgid "(The <<original entry>> is located in %s, line %d.)" +msgstr "" + +#: sphinx/ext/todo.py:146 +msgid "original entry" +msgstr "" + +#: sphinx/ext/viewcode.py:166 +msgid "[docs]" +msgstr "" + +#: sphinx/ext/viewcode.py:180 +msgid "Module code" +msgstr "" + +#: sphinx/ext/viewcode.py:186 +#, python-format +msgid "<h1>Source code for %s</h1>" +msgstr "" + +#: sphinx/ext/viewcode.py:212 +msgid "Overview: module code" +msgstr "" + +#: sphinx/ext/viewcode.py:213 +msgid "<h1>All modules for which code is available</h1>" +msgstr "" + +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + +#: sphinx/locale/__init__.py:159 +msgid "Attention" +msgstr "" + +#: sphinx/locale/__init__.py:160 +msgid "Caution" +msgstr "" + +#: sphinx/locale/__init__.py:161 +msgid "Danger" +msgstr "" + +#: sphinx/locale/__init__.py:162 +msgid "Error" +msgstr "" + +#: sphinx/locale/__init__.py:163 +msgid "Hint" +msgstr "" + +#: sphinx/locale/__init__.py:164 +msgid "Important" +msgstr "" + +#: sphinx/locale/__init__.py:165 +msgid "Note" +msgstr "" + +#: sphinx/locale/__init__.py:166 +msgid "See also" +msgstr "" + +#: sphinx/locale/__init__.py:167 +msgid "Tip" +msgstr "" + +#: sphinx/locale/__init__.py:168 +msgid "Warning" +msgstr "" + +#: sphinx/locale/__init__.py:172 +#, python-format +msgid "New in version %s" +msgstr "" + +#: sphinx/locale/__init__.py:173 +#, python-format +msgid "Changed in version %s" +msgstr "" + +#: sphinx/locale/__init__.py:174 +#, python-format +msgid "Deprecated since version %s" +msgstr "" + +#: sphinx/locale/__init__.py:180 +msgid "keyword" +msgstr "" + +#: sphinx/locale/__init__.py:181 +msgid "operator" +msgstr "" + +#: sphinx/locale/__init__.py:182 +msgid "object" +msgstr "" + +#: sphinx/locale/__init__.py:184 +msgid "statement" +msgstr "" + +#: sphinx/locale/__init__.py:185 +msgid "built-in function" +msgstr "" + +#: sphinx/themes/agogo/layout.html:46 sphinx/themes/basic/globaltoc.html:10 +#: sphinx/themes/basic/localtoc.html:11 sphinx/themes/scrolls/layout.html:35 +msgid "Table Of Contents" +msgstr "" + +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 +#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 +#: sphinx/themes/basic/searchresults.html:10 +msgid "Search" +msgstr "" + +#: sphinx/themes/agogo/layout.html:54 sphinx/themes/basic/searchbox.html:15 +msgid "Go" +msgstr "" + +#: sphinx/themes/agogo/layout.html:81 sphinx/themes/basic/sourcelink.html:15 +msgid "Show Source" +msgstr "" + +#: sphinx/themes/basic/defindex.html:11 +msgid "Overview" +msgstr "" + +#: sphinx/themes/basic/defindex.html:15 +msgid "Welcome! This is" +msgstr "" + +#: sphinx/themes/basic/defindex.html:16 +msgid "the documentation for" +msgstr "" + +#: sphinx/themes/basic/defindex.html:17 +msgid "last updated" +msgstr "" + +#: sphinx/themes/basic/defindex.html:20 +msgid "Indices and tables:" +msgstr "" + +#: sphinx/themes/basic/defindex.html:23 +msgid "Complete Table of Contents" +msgstr "" + +#: sphinx/themes/basic/defindex.html:24 +msgid "lists all sections and subsections" +msgstr "" + +#: sphinx/themes/basic/defindex.html:26 +msgid "search this documentation" +msgstr "" + +#: sphinx/themes/basic/defindex.html:28 +msgid "Global Module Index" +msgstr "" + +#: sphinx/themes/basic/defindex.html:29 +msgid "quick access to all modules" +msgstr "" + +#: sphinx/themes/basic/defindex.html:31 +msgid "all functions, classes, terms" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:33 +#, python-format +msgid "Index – %(key)s" +msgstr "" + +#: sphinx/themes/basic/genindex-single.html:61 +#: sphinx/themes/basic/genindex-split.html:24 +#: sphinx/themes/basic/genindex-split.html:38 +#: sphinx/themes/basic/genindex.html:72 +msgid "Full index on one page" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:16 +msgid "Index pages by letter" +msgstr "" + +#: sphinx/themes/basic/genindex-split.html:25 +msgid "can be huge" +msgstr "" + +#: sphinx/themes/basic/layout.html:29 +msgid "Navigation" +msgstr "" + +#: sphinx/themes/basic/layout.html:123 +#, python-format +msgid "Search within %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/layout.html:132 +msgid "About these documents" +msgstr "" + +#: sphinx/themes/basic/layout.html:141 +msgid "Copyright" +msgstr "" + +#: sphinx/themes/basic/layout.html:186 +#, python-format +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:188 +#, python-format +msgid "© Copyright %(copyright)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:192 +#, python-format +msgid "Last updated on %(last_updated)s." +msgstr "" + +#: sphinx/themes/basic/layout.html:195 +#, python-format +msgid "" +"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " +"%(sphinx_version)s." +msgstr "" + +#: sphinx/themes/basic/opensearch.xml:4 +#, python-format +msgid "Search %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/relations.html:11 +msgid "Previous topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:13 +msgid "previous chapter" +msgstr "" + +#: sphinx/themes/basic/relations.html:16 +msgid "Next topic" +msgstr "" + +#: sphinx/themes/basic/relations.html:18 +msgid "next chapter" +msgstr "" + +#: sphinx/themes/basic/search.html:27 +msgid "" +"Please activate JavaScript to enable the search\n" +" functionality." +msgstr "" + +#: sphinx/themes/basic/search.html:32 +msgid "" +"From here you can search these documents. Enter your search\n" +" words into the box below and click \"search\". Note that the search\n" +" function will automatically search for all of the words. Pages\n" +" containing fewer words won't appear in the result list." +msgstr "" + +#: sphinx/themes/basic/search.html:39 +#: sphinx/themes/basic/searchresults.html:17 +msgid "search" +msgstr "" + +#: sphinx/themes/basic/search.html:43 +#: sphinx/themes/basic/searchresults.html:21 +#: sphinx/themes/basic/static/searchtools.js_t:287 +msgid "Search Results" +msgstr "" + +#: sphinx/themes/basic/search.html:45 +#: sphinx/themes/basic/searchresults.html:23 +#: sphinx/themes/basic/static/searchtools.js_t:289 +msgid "" +"Your search did not match any documents. Please make sure that all words are" +" spelled correctly and that you've selected enough categories." +msgstr "" + +#: sphinx/themes/basic/searchbox.html:12 +msgid "Quick search" +msgstr "" + +#: sphinx/themes/basic/sourcelink.html:12 +msgid "This Page" +msgstr "" + +#: sphinx/themes/basic/changes/frameset.html:5 +#: sphinx/themes/basic/changes/versionchanges.html:12 +#, python-format +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/rstsource.html:5 +#, python-format +msgid "%(filename)s — %(docstitle)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:17 +#, python-format +msgid "Automatically generated list of changes in version %(version)s" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:18 +msgid "Library changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:23 +msgid "C API changes" +msgstr "" + +#: sphinx/themes/basic/changes/versionchanges.html:25 +msgid "Other changes" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 +msgid "Permalink to this headline" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 +msgid "Permalink to this definition" +msgstr "" + +#: sphinx/themes/basic/static/doctools.js_t:208 +msgid "Hide Search Matches" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js_t:121 +msgid "Searching" +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js_t:126 +msgid "Preparing search..." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js_t:291 +#, python-format +msgid "Search finished, found %s page(s) matching the search query." +msgstr "" + +#: sphinx/themes/basic/static/searchtools.js_t:344 +msgid ", in " +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:83 +msgid "Expand sidebar" +msgstr "" + +#: sphinx/themes/classic/static/sidebar.js_t:96 +#: sphinx/themes/classic/static/sidebar.js_t:124 +msgid "Collapse sidebar" +msgstr "" + +#: sphinx/themes/haiku/layout.html:24 +msgid "Contents" +msgstr "" + +#: sphinx/writers/html.py:389 +msgid "Permalink to this code" +msgstr "" + +#: sphinx/writers/html.py:393 +msgid "Permalink to this image" +msgstr "" + +#: sphinx/writers/html.py:395 +msgid "Permalink to this toctree" +msgstr "" + +#: sphinx/writers/html.py:717 +msgid "Permalink to this table" +msgstr "" + +#: sphinx/writers/latex.py:380 +msgid "Release" +msgstr "" + +#: sphinx/writers/latex.py:483 +msgid "page" +msgstr "" + +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 +msgid "Footnotes" +msgstr "" + +#: sphinx/writers/latex.py:1112 +msgid "continued from previous page" +msgstr "" + +#: sphinx/writers/latex.py:1118 +msgid "Continued on next page" +msgstr "" + +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 +#, python-format +msgid "[image: %s]" +msgstr "" + +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 +msgid "[image]" +msgstr "" diff --git a/sphinx/locale/pl/LC_MESSAGES/sphinx.js b/sphinx/locale/pl/LC_MESSAGES/sphinx.js index 3b87f74f1..7454c0606 100644 --- a/sphinx/locale/pl/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/pl/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "pl", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", w ", "About these documents": "O tych dokumentach", "Automatically generated list of changes in version %(version)s": "Automatycznie wygenerowana lista zmian w wersji %(version)s", "C API changes": "Zmiany w C API", "Changes in Version %(version)s — %(docstitle)s": "Zmiany w wersji %(version)s — %(docstitle)s", "Collapse sidebar": "Zwi\u0144 pasek boczny", "Complete Table of Contents": "Kompletny spis tre\u015bci", "Contents": "Tre\u015b\u0107", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Utworzone przy pomocy <a href=\"http://sphinx-doc.org/\">Sphinx</a>'a %(sphinx_version)s.", "Expand sidebar": "Rozwi\u0144 pasek boczny", "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.": "St\u0105d mo\u017cesz przeszuka\u0107 dokumentacj\u0119. Wprowad\u017a szukane\n s\u0142owa w poni\u017cszym okienku i kliknij \"Szukaj\". Zwr\u00f3\u0107 uwag\u0119, \u017ce\n funkcja szukaj\u0105ca b\u0119dzie automatycznie szuka\u0142a wszystkich s\u0142\u00f3w. Strony\n nie zawieraj\u0105ce wszystkich wpisanych s\u0142\u00f3w nie znajd\u0105 si\u0119 na wynikowej li\u015bcie.", "Full index on one page": "Ca\u0142y indeks na jednej stronie", "General Index": "Indeks og\u00f3lny", "Global Module Index": "Globalny indeks modu\u0142\u00f3w", "Go": "Szukaj", "Hide Search Matches": "Ukryj wyniki wyszukiwania", "Index": "Indeks", "Index – %(key)s": "Indeks – %(key)s", "Index pages by letter": "Strony indeksu alfabetycznie", "Indices and tables:": "Indeksy i tablice:", "Last updated on %(last_updated)s.": "Ostatnia modyfikacja %(last_updated)s.", "Library changes": "Zmiany w bibliotekach", "Navigation": "Nawigacja", "Next topic": "Nast\u0119pny temat", "Other changes": "Inne zmiany", "Overview": "Przegl\u0105d", "Permalink to this definition": "Sta\u0142y odno\u015bnik do tej definicji", "Permalink to this headline": "Sta\u0142y odno\u015bnik do tego nag\u0142\u00f3wka", "Please activate JavaScript to enable the search\n functionality.": "Aby umo\u017cliwi\u0107 wyszukiwanie, prosz\u0119 w\u0142\u0105czy\u0107 JavaScript.", "Preparing search...": "Inicjalizacja wyszukiwania...", "Previous topic": "Poprzedni temat", "Quick search": "Szybkie wyszukiwanie", "Search": "Szukaj", "Search Page": "Wyszukiwanie", "Search Results": "Wyniki wyszukiwania", "Search finished, found %s page(s) matching the search query.": "Wyszukiwanie zako\u0144czone. Liczba znalezionych stron pasuj\u0105cych do zapytania: %s.", "Search within %(docstitle)s": "Szukaj po\u015br\u00f3d %(docstitle)s", "Searching": "Wyszukiwanie", "Show Source": "Poka\u017c \u017ar\u00f3d\u0142o", "Table Of Contents": "Spis tre\u015bci", "This Page": "Ta strona", "Welcome! This is": "Witaj! To jest", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Twoje wyszukiwanie nie da\u0142o \u017cadnych wynik\u00f3w. Upewnij si\u0119, \u017ce wszystkie s\u0142owa s\u0105 wpisane prawid\u0142owo i \u017ce wybra\u0142e\u015b dostateczn\u0105 ilo\u015b\u0107 kategorii.", "all functions, classes, terms": "wszystkie funkcje, klasy, terminy", "can be huge": "mo\u017ce by\u0107 ogromny", "last updated": "ostatnio aktualizowana", "lists all sections and subsections": "wszystkie rozdzia\u0142y i podrozdzia\u0142y", "next chapter": "nast\u0119pny rozdzia\u0142", "previous chapter": "poprzedni rozdzia\u0142", "quick access to all modules": "szybki dost\u0119p do wszystkich modu\u0142\u00f3w", "search": "szukaj", "search this documentation": "przeszukaj t\u0119 dokumentacj\u0119", "the documentation for": "dokumentacja do"}, "plural_expr": "(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)"}); \ No newline at end of file +Documentation.addTranslations({"locale": "pl", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", w ", "About these documents": "O tych dokumentach", "Automatically generated list of changes in version %(version)s": "Automatycznie wygenerowana lista zmian w wersji %(version)s", "C API changes": "Zmiany w C API", "Changes in Version %(version)s — %(docstitle)s": "Zmiany w wersji %(version)s — %(docstitle)s", "Collapse sidebar": "Zwi\u0144 pasek boczny", "Complete Table of Contents": "Kompletny spis tre\u015bci", "Contents": "Tre\u015b\u0107", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Utworzone przy pomocy <a href=\"http://sphinx-doc.org/\">Sphinx</a>'a %(sphinx_version)s.", "Expand sidebar": "Rozwi\u0144 pasek boczny", "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.": "St\u0105d mo\u017cesz przeszuka\u0107 dokumentacj\u0119. Wprowad\u017a szukane\n s\u0142owa w poni\u017cszym okienku i kliknij \"Szukaj\". Zwr\u00f3\u0107 uwag\u0119, \u017ce\n funkcja szukaj\u0105ca b\u0119dzie automatycznie szuka\u0142a wszystkich s\u0142\u00f3w. Strony\n nie zawieraj\u0105ce wszystkich wpisanych s\u0142\u00f3w nie znajd\u0105 si\u0119 na wynikowej li\u015bcie.", "Full index on one page": "Ca\u0142y indeks na jednej stronie", "General Index": "Indeks og\u00f3lny", "Global Module Index": "Globalny indeks modu\u0142\u00f3w", "Go": "Szukaj", "Hide Search Matches": "Ukryj wyniki wyszukiwania", "Index": "Indeks", "Index – %(key)s": "Indeks – %(key)s", "Index pages by letter": "Strony indeksu alfabetycznie", "Indices and tables:": "Indeksy i tablice:", "Last updated on %(last_updated)s.": "Ostatnia modyfikacja %(last_updated)s.", "Library changes": "Zmiany w bibliotekach", "Navigation": "Nawigacja", "Next topic": "Nast\u0119pny temat", "Other changes": "Inne zmiany", "Overview": "Przegl\u0105d", "Permalink to this definition": "Sta\u0142y odno\u015bnik do tej definicji", "Permalink to this headline": "Sta\u0142y odno\u015bnik do tego nag\u0142\u00f3wka", "Please activate JavaScript to enable the search\n functionality.": "Aby umo\u017cliwi\u0107 wyszukiwanie, prosz\u0119 w\u0142\u0105czy\u0107 JavaScript.", "Preparing search...": "Inicjalizacja wyszukiwania...", "Previous topic": "Poprzedni temat", "Quick search": "Szybkie wyszukiwanie", "Search": "Szukaj", "Search Page": "Wyszukiwanie", "Search Results": "Wyniki wyszukiwania", "Search finished, found %s page(s) matching the search query.": "Wyszukiwanie zako\u0144czone. Liczba znalezionych stron pasuj\u0105cych do zapytania: %s.", "Search within %(docstitle)s": "Szukaj po\u015br\u00f3d %(docstitle)s", "Searching": "Wyszukiwanie", "Show Source": "Poka\u017c \u017ar\u00f3d\u0142o", "Table Of Contents": "Spis tre\u015bci", "This Page": "Ta strona", "Welcome! This is": "Witaj! To jest", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Twoje wyszukiwanie nie da\u0142o \u017cadnych wynik\u00f3w. Upewnij si\u0119, \u017ce wszystkie s\u0142owa s\u0105 wpisane prawid\u0142owo i \u017ce wybra\u0142e\u015b dostateczn\u0105 ilo\u015b\u0107 kategorii.", "all functions, classes, terms": "wszystkie funkcje, klasy, terminy", "can be huge": "mo\u017ce by\u0107 ogromny", "last updated": "ostatnio aktualizowana", "lists all sections and subsections": "wszystkie rozdzia\u0142y i podrozdzia\u0142y", "next chapter": "nast\u0119pny rozdzia\u0142", "previous chapter": "poprzedni rozdzia\u0142", "quick access to all modules": "szybki dost\u0119p do wszystkich modu\u0142\u00f3w", "search": "szukaj", "search this documentation": "przeszukaj t\u0119 dokumentacj\u0119", "the documentation for": "dokumentacja do"}, "plural_expr": "(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)"}); \ No newline at end of file diff --git a/sphinx/locale/pl/LC_MESSAGES/sphinx.mo b/sphinx/locale/pl/LC_MESSAGES/sphinx.mo index 8395c168a945db1b3a3bb9e9b0922c7d9ed33f37..59a21c78ac7a0ff116c81c0fa21e2e5edfe148ad 100644 GIT binary patch delta 3950 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 delta 3467 zcmZ|QdrZ}39LMqJAc`UgB687#{I~|<g%gT})|6^eN_ov|*-_9m1oNPTmz{ZEij^KS zo7$SBxvA4S+A6PGl3MDTTU(}KUQ!EJG0i{JviFDctlJhloY(KUf1mI3{NU5^JD>G8 z#)ZFW_&Ln4o8S00D*gQv6=e(`6U|pNcEQ$|gX!4ImWN{}%44u2zJ&3(5MyvH@-bWZ z(mcDdy)k}skOy@*fgSLy?Qk76;ce7}k&IG5H)?_&e5t(%6Yyz_#d6d<bJ4+NsPWs7 z1<l9U4v%62>zmU&Xy6Z+h_^8rJ1~nD$iXf+0F!VG5|f!_+ZUqxufamxfvI>23owkR zwQwOSbHx~kC793pW&#ggu?{=qc2tCitjDn}<umvwp0njHL`|$F10&Fb8vii%!Dnpy zQsiUS@}-T`qvkt=ex>dh4_dGhOYu7D8WfVZNPGkpU<qmmWyt2t4AjE4sPT)?xQtna znzxQ^D!_VFCO^P1Y_R3yapXUoit|)xf{UmHnov7wwni{o6QuB!h8`pdW+W=WDX1f< zL@hYqmS08nTaP+|ZMObH)VRZ)$iIUA!d9F|1#}HH(G66p?w|r{#g*2;WYi8bQEyFu zRBFef?vT&A3UxQ?u^0~`Q?*Q{495GJHIs)7R6_}BClgUeFddcRS*RVnV#`ZydmS>T z3E1}SsEPOD0Q?Mfbc$9Pb|a^2vQZoJ_v1km4@50A)HaMlW#&0lU{$CImY@P#jjeDU zDq|aL`)1TU@1qvljVtj8YTOXgqxD80{ru*6TQN0MVP>Nun}^!j5=_Ajr~p1f1$G2A z(HYd8X+&l23hGFjQGs>foz=KbsB#MG2-7iM?|)Ao_?Tk8)NukTfO6CwsI)FXEwmD~ z!#7Y1Zb1Dd+-lp8qjq}Q`nB~uYTRX1AWayh_y1Sh;dj)+;oKOVVKl0v8&#i%N@;i7 z-XC?gPoZx4R8;@Dr~u|8AG6q&H=#0CkJ{*N^lOKo@W4GW$50b|hg$FwUf_LhLfwHc zSxtdmK=u0>wey>(%p{O^9hn;ykOz5#%^=jcQK*bfK?O3)P5yNj3v7oK*7c~swxSje zqIQ1F)_;SV=qhT#o5=k#ZMi5i6}4a?I`{-?{8ZG!HK+_MNg@9lu-bNb5A`1JLpE)` zLIv;>@-ct##VHwgw@?6mQ9CR~)sMzPti)8@iv6(xwNV$9%3Ks`-j04A)FBHq(2JUI z87jgJsMKyjU7qcz{(Efu4b)C=qcYOk2_0n|dMM|h>c^wzorc=*Jk)&tH9Y7~>f5LV z_v09BKn+NtQ7Owu?Qj6<a*al%ej;k3mr-}77Q4H+bjYU7E-r`yJc-KaIn?;yLS?_X z$AcC~VEbxFx8|ZE%}0*c3`PZ1hS^wyy0q`0Qo9$m)5EB{a}sst-=Z#K6Kb8isDL6e zwP8Pt@Su(kw%l6Ogo986hN3bv7Iil!+wwwWF0%sJtl449r;yVy&8Q4?%nDt?d>lY| zIO;CFhB2&fcJe@9a{!g%i>TDzL8Uf^?aD;d4pXrW_OKS9#ucI3N1`s*3pgCBQ44-< z+pnN9*^DjkfA|BT48)-p%0TTn4>e(5)PQ1JKN=$_PeNsC8iwO+TVI13=SQWw4maXP zR7U&dgxVj=A^*BG!>CZhIE=t@Tb_yh88@}46tA)ELDc_%{iwiBVQc&zweVF`>TjX~ zi^~mdC=pdoLj|6lOa66<JXGj*4#u|VMFlbgwZLrD9a)BLa6Rg-Y(`zuU8o~GiVEaM z)Iz_Y`roqNMa>)5J=8DK&x6h?7S%Bm6+j+pfj+kWaqAFN{}HIvPDPH<%(3;GPz&!t z&9@Kr_8h==cowyh%NU8CTejjpYQfmN(EoJ@6=^0K$8n0izH(oYljRF6h{}kcS?2Y< z*x$*@DXW^|tDat6QJ(7y9E^H5SQ&l56+WeER&AhHOhM?OG1VPh6qDo%)W?o$-7+wE zFZN(q;6kTIlS@mTva%k|IDSkiKYx`1UE?nWlR6)D1+FDj1?v*WxB^W{xxpusv%}iw z7xc_8bRP5+^?fKXuWO3Ro<5GJfO2q4*I}+CPcKiTVjfcA_0>9)z4NMS%3DIe?f#$8 z3scqwW<;k4?x!q|tC%y{@l|^p7JHp(6;+eH6_vrax<&nGSHZ^AVpqVEHqP$o^|YR? r0@pK3y8Lq!|K3utcUH73I4Qe*SfD0nd2nE^-xWB~JulchuYK5`g~xw( diff --git a/sphinx/locale/pl/LC_MESSAGES/sphinx.po b/sphinx/locale/pl/LC_MESSAGES/sphinx.po index 8b680469c..721912176 100644 --- a/sphinx/locale/pl/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/pl/LC_MESSAGES/sphinx.po @@ -9,61 +9,42 @@ msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-14 13:58+0000\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-24 21:36+0000\n" "Last-Translator: Tawez\n" "Language-Team: Polish (http://www.transifex.com/sphinx-doc/sphinx-1/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: pl\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "Rozdział %s" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "Rys. %s" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "Tabela %s" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "Listing %s" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "%s %s - dokumentacja" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "zobacz %s" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "zobacz także %s" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "Symbole" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python Enhancement Proposals; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "MMMM dd, YYYY" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "Wbudowane" @@ -72,9 +53,12 @@ msgstr "Wbudowane" msgid "Module level" msgstr "Poziom modułu" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" -msgstr "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" +msgstr "%d %b %Y" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 msgid "General Index" @@ -84,18 +68,28 @@ msgstr "Indeks ogólny" msgid "index" msgstr "indeks" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "dalej" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "wstecz" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s - dokumentacja" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr " (w " +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "Nieprawidłowy podpis: %s" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "Autor rozdziału: " @@ -112,23 +106,23 @@ msgstr "Autor kodu: " msgid "Author: " msgstr "Autor: " -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Parametry" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "Zwraca" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "Typ zwracany" @@ -157,12 +151,12 @@ msgstr "%s (typ C)" msgid "%s (C variable)" msgstr "%s (zmienna C)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "funkcja" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "pole" @@ -170,7 +164,7 @@ msgstr "pole" msgid "macro" msgstr "makro" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "typ" @@ -178,63 +172,72 @@ msgstr "typ" msgid "variable" msgstr "zmienna" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "Parametry szablonu" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "Wyrzuca" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (typ C++)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "%s (koncepcja C++)" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (pole C++)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (funkcja C++)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (klasa C++)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" -msgstr "%s (C++ enum)" +msgstr "%s (enum C++)" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" -msgstr "%s (C++ enumerator)" +msgstr "%s (enumerator C++)" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "klasa" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "koncepcja" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "enum" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "enumerator" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (funkcja wbudowana)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (%s metoda)" @@ -247,9 +250,9 @@ msgstr "%s() (klasa)" #: sphinx/domains/javascript.py:111 #, python-format msgid "%s (global variable or constant)" -msgstr "%s (zmienna lub stała globalna)" +msgstr "%s (zmienna globalna lub stała)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (%s atrybut)" @@ -258,116 +261,116 @@ msgstr "%s (%s atrybut)" msgid "Arguments" msgstr "Argumenty" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "dane" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "atrybut" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "Zmienne" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "Wyrzuca" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (w module %s)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (zmienna wbudowana)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (w module %s)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (klasa wbudowana)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (klasa w module %s)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (%s.%s metoda)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (%s.%s metoda statyczna)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (%s metoda statyczna)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "%s() (%s.%s metoda klasy)" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "%s() (%s metoda klasy)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (atrybut %s.%s)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (moduł)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "Indeks modułów pythona" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "moduły" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "Niezalecane" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "wyjątek" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "metoda" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "metoda klasy" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "statyczna metoda" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "moduł" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr " (niezalecane)" @@ -389,120 +392,147 @@ msgstr "dyrektywa" msgid "role" msgstr "rola" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "zmienna środowiskowa; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%sopcja linii komend; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "termin glosariusza" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "symbol gramatyki" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "etykieta odsyłacza" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "zmienna środowiskowa" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "opcja programu" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "Indeks" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "Indeks modułów" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "Wyszukiwanie" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" -msgstr " Klasy bazowe: %s" +msgid "see %s" +msgstr "zobacz %s" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "zobacz także %s" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "Symbole" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "Klasy bazowe: %s" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "alias klasy :class:`%s`" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "[wykres: %s]" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "[wykres]" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "Stały odnośnik do tego równania" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "(w %s v%s)" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[źródło]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "zduplikowana etykieta równania %s, inne wystąpienie w %s" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "Todo" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "<<oryginalny wpis>>" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "(<<Oryginalny wpis>> znajduje się w pliku %s, w linii %d.)" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "oryginalny wpis" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[dokumenty]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "Kod modułu" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "<h1>Kod źródłowy modułu %s</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "Przeglądanie: kod modułu" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "<h1>Wszystkie moduły, dla których jest dostępny kod</h1>" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "Argumenty Nazwane" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "Uwaga" @@ -583,7 +613,7 @@ msgstr "funkcja wbudowana" msgid "Table Of Contents" msgstr "Spis treści" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -641,15 +671,15 @@ msgstr "szybki dostęp do wszystkich modułów" msgid "all functions, classes, terms" msgstr "wszystkie funkcje, klasy, terminy" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Indeks – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "Cały indeks na jednej stronie" @@ -665,35 +695,35 @@ msgstr "może być ogromny" msgid "Navigation" msgstr "Nawigacja" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "Szukaj pośród %(docstitle)s" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "O tych dokumentach" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "Copyright" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Copyright %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "© Copyright %(copyright)s." -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Ostatnia modyfikacja %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -742,13 +772,13 @@ msgstr "szukaj" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "Wyniki wyszukiwania" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -765,13 +795,13 @@ msgstr "Ta strona" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "Zmiany w wersji %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "Zmiany w wersji %(version)s — %(docstitle)s" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "%(filename)s — %(docstitle)s" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -790,12 +820,13 @@ msgstr "Zmiany w C API" msgid "Other changes" msgstr "Inne zmiany" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "Stały odnośnik do tego nagłówka" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "Stały odnośnik do tej definicji" @@ -811,12 +842,12 @@ msgstr "Wyszukiwanie" msgid "Preparing search..." msgstr "Inicjalizacja wyszukiwania..." -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "Wyszukiwanie zakończone. Liczba znalezionych stron pasujących do zapytania: %s." -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr ", w " @@ -833,48 +864,53 @@ msgstr "Zwiń pasek boczny" msgid "Contents" msgstr "Treść" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "Stały odnośnik do tego bloku kodu" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "Stały odnośnik do tego obrazu" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "Stały odnośnik do tego toctree" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "Stały odnośnik do tej tabeli" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "Wydanie" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "strona" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "Nieznany klucz konfiguracyjny: latex_elements[%r] jest ignorowany." + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "Przypisy" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "kontynuacja poprzedniej strony" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "Kontynuacja na następnej stronie" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "[obraz: %s]" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[obraz]" diff --git a/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.js b/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.js index e4bdbb332..98843fbf8 100644 --- a/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "pt_BR", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", em ", "About these documents": "Sobre esses documentos", "Automatically generated list of changes in version %(version)s": "Lista de altera\u00e7\u00f5es na vers\u00e3o %(version)s, gerada automaticamente", "C API changes": "Altera\u00e7\u00f5es na API C", "Changes in Version %(version)s — %(docstitle)s": "Altera\u00e7\u00f5es na Vers\u00e3o%(version)s — %(docstitle)s", "Collapse sidebar": "Recolher painel lateral", "Complete Table of Contents": "Tabela Completa dos Conte\u00fados", "Contents": "Conte\u00fados", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Criado usando <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Expandir painel lateral", "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.": "Aqui pode-se fazer buscas nesses documentos. Preencha sua \npalavras de busca na caixa abaixo e clicar em \"Buscar\". Notar que a busca\nir\u00e1 procurar automaticamente por todas as palavras. P\u00e1ginas \ncontendo menos palavras n\u00e3o ir\u00e3o aparecer na lista de resultados.", "Full index on one page": "\u00cdndice completo em p\u00e1gina \u00fanica", "General Index": "\u00cdndice Geral", "Global Module Index": "\u00cdndice Global de M\u00f3dulos", "Go": "Ir", "Hide Search Matches": "Esconder Resultados da Busca", "Index": "\u00cdndice", "Index – %(key)s": "\u00cdndice – %(key)s", "Index pages by letter": "P\u00e1ginas de \u00edndice por letra", "Indices and tables:": "\u00cdndices e Tabelas:", "Last updated on %(last_updated)s.": "\u00daltima atualiza\u00e7\u00e3o em %(last_updated)s.", "Library changes": "Altera\u00e7\u00f5es na biblioteca", "Navigation": "Navega\u00e7\u00e3o", "Next topic": "Pr\u00f3ximo t\u00f3pico", "Other changes": "Outras altera\u00e7\u00f5es", "Overview": "Vis\u00e3o geral", "Permalink to this definition": "Link permanente para esta defini\u00e7\u00e3o", "Permalink to this headline": "Link permanente para este t\u00edtulo", "Please activate JavaScript to enable the search\n functionality.": "Por favor, ativar JavaScript para habilitar a\nfuncionalidade de busca.", "Preparing search...": "Preparando a busca...", "Previous topic": "T\u00f3pico anterior", "Quick search": "Busca r\u00e1pida", "Search": "Buscar", "Search Page": "P\u00e1gina de Busca", "Search Results": "Resultados da Busca", "Search finished, found %s page(s) matching the search query.": "Busca conclu\u00edda. %s p\u00e1gina(s) que atendem a consulta.", "Search within %(docstitle)s": "Pesquisar dentro de %(docstitle)s", "Searching": "Buscando", "Show Source": "Exibir Fonte", "Table Of Contents": "Tabela de Conte\u00fado", "This Page": "Essa P\u00e1gina", "Welcome! This is": "Bem Vindo! \u00c9 isso a\u00ed.", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Sua busca n\u00e3o encontrou nenhum documento. Por favor, confirme se todas as palavras est\u00e3o grafadas corretamente e se voc\u00ea selecionou categorias suficientes.", "all functions, classes, terms": "todas fun\u00e7\u00f5es, classes, termos", "can be huge": "pode ser enorme", "last updated": "\u00faltima atualiza\u00e7\u00e3o", "lists all sections and subsections": "Listar todas se\u00e7\u00f5es e subse\u00e7\u00f5es", "next chapter": "pr\u00f3ximo cap\u00edtulo", "previous chapter": "cap\u00edtulo anterior", "quick access to all modules": "acesso r\u00e1pido para todos os m\u00f3dulos", "search": "buscar", "search this documentation": "Buscar nessa documenta\u00e7\u00e3o", "the documentation for": "documenta\u00e7\u00e3o para"}, "plural_expr": "(n > 1)"}); \ No newline at end of file +Documentation.addTranslations({"locale": "pt_BR", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", em ", "About these documents": "Sobre esses documentos", "Automatically generated list of changes in version %(version)s": "Lista de altera\u00e7\u00f5es na vers\u00e3o %(version)s, gerada automaticamente", "C API changes": "Altera\u00e7\u00f5es na API C", "Changes in Version %(version)s — %(docstitle)s": "Modifica\u00e7\u00f5es na vers\u00e3o %(version)s — %(docstitle)s", "Collapse sidebar": "Recolher painel lateral", "Complete Table of Contents": "Tabela Completa dos Conte\u00fados", "Contents": "Conte\u00fados", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Criado usando <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Expandir painel lateral", "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.": "Aqui pode-se fazer buscas nesses documentos. Preencha sua \npalavras de busca na caixa abaixo e clicar em \"Buscar\". Notar que a busca\nir\u00e1 procurar automaticamente por todas as palavras. P\u00e1ginas \ncontendo menos palavras n\u00e3o ir\u00e3o aparecer na lista de resultados.", "Full index on one page": "\u00cdndice completo em p\u00e1gina \u00fanica", "General Index": "\u00cdndice Geral", "Global Module Index": "\u00cdndice Global de M\u00f3dulos", "Go": "Ir", "Hide Search Matches": "Esconder Resultados da Busca", "Index": "\u00cdndice", "Index – %(key)s": "\u00cdndice – %(key)s", "Index pages by letter": "P\u00e1ginas de \u00edndice por letra", "Indices and tables:": "\u00cdndices e Tabelas:", "Last updated on %(last_updated)s.": "\u00daltima atualiza\u00e7\u00e3o em %(last_updated)s.", "Library changes": "Altera\u00e7\u00f5es na biblioteca", "Navigation": "Navega\u00e7\u00e3o", "Next topic": "Pr\u00f3ximo t\u00f3pico", "Other changes": "Outras altera\u00e7\u00f5es", "Overview": "Vis\u00e3o geral", "Permalink to this definition": "Link permanente para esta defini\u00e7\u00e3o", "Permalink to this headline": "Link permanente para este t\u00edtulo", "Please activate JavaScript to enable the search\n functionality.": "Por favor, ativar JavaScript para habilitar a\nfuncionalidade de busca.", "Preparing search...": "Preparando a busca...", "Previous topic": "T\u00f3pico anterior", "Quick search": "Busca r\u00e1pida", "Search": "Buscar", "Search Page": "P\u00e1gina de Busca", "Search Results": "Resultados da Busca", "Search finished, found %s page(s) matching the search query.": "Busca conclu\u00edda. %s p\u00e1gina(s) que atendem a consulta.", "Search within %(docstitle)s": "Pesquisar dentro de %(docstitle)s", "Searching": "Buscando", "Show Source": "Exibir Fonte", "Table Of Contents": "Tabela de Conte\u00fado", "This Page": "Essa P\u00e1gina", "Welcome! This is": "Bem Vindo! \u00c9 isso a\u00ed.", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Sua busca n\u00e3o encontrou nenhum documento. Por favor, confirme se todas as palavras est\u00e3o grafadas corretamente e se voc\u00ea selecionou categorias suficientes.", "all functions, classes, terms": "todas fun\u00e7\u00f5es, classes, termos", "can be huge": "pode ser enorme", "last updated": "\u00faltima atualiza\u00e7\u00e3o", "lists all sections and subsections": "Listar todas se\u00e7\u00f5es e subse\u00e7\u00f5es", "next chapter": "pr\u00f3ximo cap\u00edtulo", "previous chapter": "cap\u00edtulo anterior", "quick access to all modules": "acesso r\u00e1pido para todos os m\u00f3dulos", "search": "buscar", "search this documentation": "Buscar nessa documenta\u00e7\u00e3o", "the documentation for": "documenta\u00e7\u00e3o para"}, "plural_expr": "(n > 1)"}); \ No newline at end of file diff --git a/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.mo b/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.mo index 73c921db2584778972c9db06c4f4b032578c68b0..ee74d81e31f906ea385389282f0422f3b44a3615 100644 GIT binary patch delta 3932 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 delta 3505 zcmZwIdrZ}39LMqJAYQqsfZROj4;2JOQxGH&Qgfy$S*D_)EeBXAg7cW>^(5F#g_Zu) zIm>3^Z8_)iSlSj|(gIy`<<`t;m{P;CKeUx|m8<uM^Q^4Jj_37ze!u7P{eGY4cidUB zx!B(l6}rvvcZz>r{>5}s>z}{yaAWwG2)-gP5j$cU_QRpJ{R~FaF2<g?0Ap}9cE>Hq z$L!%t^Blo2WBjI(3w1b;k$A;+xP_YV9%{mFj8Z=@YJv>D^gIt^@hR+q<*0d<qJyuY z#_vZKG$*htp2JwyHy63k!0#~*?_mN)GK&^S!$cf~@mP$+WER=yt5N+oV-6m|zIYR} zFodYJa1N?+V=)RR;4s!VC0z8zI_!l9Q4yZBHe(msm#`48+IAvQ6RYWuopCs7{G&Jm zr`YG~kdN8ImlA0}&36+0DqRy7TCfF+@D}PA<WRS6Sbz#}0xE+tBsnu5weWJ(__b&} z#%w~(TSuA-umM%c_b~)Nwe998>L1FDYuwNTH&6@QMrCr>+L_UsAc?PJ9F7#hJc|mj z6tyK)s0CNr_6AhH?Wir-Z|@&PjXM=h{T1{Dd*d1^pf=P*KcPzX8!Dg<9BB<qKxH@p z_15I0N;?yEhJ4mdsI$?4W3dsLs(mt5FvicU1GwmqdN2W%$!ydXRG><{2$jJrw!O|i zuS4cEu6=$GHSsYVg=bM)r)X7SFS5HP6_uEOBo~@^G-{#A_Q5n%W#*s)t42*wiwdkB zJK$DS#dg@|yHN8SKrM6xH{xm3xJi^p>rF-a`OWk8#=PJSvltcG3RGsbn1nk}0epxG z>@;ekOQ<u`f~wqis4cmR3M`U$R^y^k?IhF|_QM#x|3kRoW5)8OjwPr7%28*a%DM`* z&_+~-Z=x35f%+xfXP-BtGQDX1%6bhot`!x?Z4B4@f5&!sfLb_|6QezhKy~z@?kA&4 zI><iHNA2yCs8c=<)qg1}fR)I{)Y$ghsERe95<P-`W%v;noD<W8n&2DMf;X{+_xUy| z(+jMo2`-~5(Td9a2ip#(?%J{_RG<S<XD1gG;ACt++^BUcywqP4F5`v<)Y^_)ZHK+6 z367%n{4@LfYy13`eSQx)U#1%eMg5Xd3uK`J9E1Fnm@-rV%TQ-vT@v*tc=HA~H1H6r z-H3hg3M!-fwjIGu&XvhPEiexCd@5?87cmDnVqZLixp)JWXd*XNxl~j@8GbGbxp)le zW7eQD*@cSm7;3Lhp$^Y^9EV?`wkXyKZe3s0^K8`k0@T9OPz%+g0^f~V=LBkg|79-p zlX?@iP$-Qej6@xx*{Fp|QI)Agosrj36V{^^-iO-4!`Q{ce=ewsH1VZM{fPR7ypJIm z-M{@c^_y5OG+`DhqFmI3kE0ftgjC;@qRzrv9E96Y6P`wu_9|*`+fWPsg33H(K+s;+ zG}Kn-W0>CmBKu$#DuYT4#nq?<Yfuw!M+X~F3!X!gG+$r}{%qUvG#uJ_))FKZvkJ%K zZq(b>hCNu{Jg^-iQ-c|0qB1B#RieaNih7L}*!D{7M7tJMsg0-v_Mid};7Dvj1^Oqp z|Beg{R%8(Rl}P~?%5Wm;49u{;fSPDND&jS$ep|5<zKfxF5H;>FY738JNBjg8STnwZ z-=fC*(}F*6b!pUJ1K#3>9_&X&7(iwEG3qpbjt;hB7Yt1gW*UL&*9R5QP}JULqcVO1 z6<`HwT$ODvL#?|io%$=Y_1xe`&g{ajcpNq04C?*9fGX{E?2LC%TXY{az7r=>d+bGJ zJ{lF!cvSx)>vYt-bFB0HT<DZmqXyL22OCfeZb41ZVDBG7^*@H%nkMA<n5(GFJ%fV* zM5E?QK)tpOYMxQ3ijA}F;nTR#z}ct?t57AY!LGO-jpI0D=laThc}|MYT@~IxW?|V} z-%I&UN?KWUsc%WelFIUQpW7I|+igqg6{w9k;0Z0QUbNgD+C3|H;c>iywcX=AZbOf0 z9oq*7{^-#d;$Dv~OeiXH%E~gFS^SwI{{C*cy<=_$;(ML*xNWi3fx5V2k9#{lJuopL zH6(0U){tR2PUi5u>|A$6@1*v2u9KOWmpvk|r}uPE*uxS3>P>#+{~|UiJ`xIkJ7n_m z!t$ymbI%?)+feOJNva97Cbj-2k$}f}+T%W#T$nzla!L7O_5GmS=TyygW|S}XF)k%- zDHj#hRp~w_HJIqR<oFIDXLq_iGooE@N<reoDgHa*z|535k9#*YF0eQCcaQsCT76)3 Qy6bTh1`i3mIyf=pFWDB7>i_@% diff --git a/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.po b/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.po index b920ec68e..e42ebaa17 100644 --- a/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.po @@ -3,67 +3,50 @@ # This file is distributed under the same license as the Sphinx project. # # Translators: +# Claudio Rogerio Carvalho Filho <excriptbrasil@gmail.com>, 2016 # FIRST AUTHOR <roger.demetrescu@gmail.com>, 2008 # gilberto dos santos alves <gsavix@gmail.com>, 2015-2016 +# Takeshi KOMIYA <i.tkomiya@gmail.com>, 2016 msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-08 22:54+0000\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-26 18:05+0000\n" "Last-Translator: gilberto dos santos alves <gsavix@gmail.com>\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/sphinx-doc/sphinx-1/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "Seção %s" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "Fig. %s" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "Tabela %s" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "Listagem %s" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "%s %s documentação" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "veja %s" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "veja também %s" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "Símbolos" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Propostas Estendidas Python; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "MMMM dd, YYYY" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "Internos" @@ -72,9 +55,12 @@ msgstr "Internos" msgid "Module level" msgstr "Nível do Módulo" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" -msgstr "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" +msgstr "%b %d, %Y" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 msgid "General Index" @@ -84,18 +70,28 @@ msgstr "Índice Geral" msgid "index" msgstr "índice" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "próximo" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "anterior" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "documentação %s %s" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr " (em " +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "Legenda inválida: %s" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "Autor da seção: " @@ -112,23 +108,23 @@ msgstr "Autor do código: " msgid "Author: " msgstr "Autor: " -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Parâmetros" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "Retorna" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "Tipo de retorno" @@ -157,12 +153,12 @@ msgstr "%s (tipo C)" msgid "%s (C variable)" msgstr "%s (variável C)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "função" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "membro" @@ -170,7 +166,7 @@ msgstr "membro" msgid "macro" msgstr "macro" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "tipo" @@ -178,63 +174,72 @@ msgstr "tipo" msgid "variable" msgstr "variável" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "Parâmetros do Modelo" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "Lança" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (tipo C++)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "%s (conceito C++)" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (membro C++)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (função C++)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (classe C++)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "%s (C++ enum)" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "%s (C++ enumerador)" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "classe" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "conceito" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "enum" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "enumerador" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (função interna)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (método %s)" @@ -249,7 +254,7 @@ msgstr "%s() (classe)" msgid "%s (global variable or constant)" msgstr "%s (variável global ou constante)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (atributo %s)" @@ -258,116 +263,116 @@ msgstr "%s (atributo %s)" msgid "Arguments" msgstr "Argumentos" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "dado" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "atributo" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "Variáveis" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "Levanta" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (no módulo %s)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (variável interna)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (no módulo %s)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (classe interna)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (classe em %s)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (método %s.%s)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (método estático %s.%s)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (método estático %s)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "%s() (método de classe %s.%s)" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "%s() (método de classe %s)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (atributo %s.%s)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (módulo)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "Índice de Módulos Python" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "módulos" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "Obsoleto" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "exceção" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "método" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "método de classe" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "método estático" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "módulo" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr " (obsoleto)" @@ -389,120 +394,147 @@ msgstr "diretiva" msgid "role" msgstr "papel" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "váriavel de ambiente; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%s opção de linha de comando; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "Glossário de Termos" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "termo gramatical" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "marca referencial" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "váriavel de ambiente" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "opção do programa" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "Índice" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "Índice do Módulo" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "Página de Busca" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" -msgstr " Bases: %s" +msgid "see %s" +msgstr "veja %s" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "veja também %s" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "Símbolos" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "Base: %s" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "apelido de :class:`%s`" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "[gráfico: %s]" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "[gráfico]" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "Permalink para essa equação" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "(em %s v%s)" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[código fonte]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "Rótulo de equação %s, duplicado outra instância em %s" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "Por fazer" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "<<original entry>>" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "(A <<original entry>> está localizada na %s, linha %d.)" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "entrada original" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[documentos]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "Código do módulo" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "<h1>Código fonte para %s</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "Visão geral: código do módulo" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "<h1>Todos os módulos onde este código está disponível</h1>" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "Chaves e Argumentos " + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "Atenção" @@ -583,7 +615,7 @@ msgstr "função interna" msgid "Table Of Contents" msgstr "Tabela de Conteúdo" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -641,15 +673,15 @@ msgstr "acesso rápido para todos os módulos" msgid "all functions, classes, terms" msgstr "todas funções, classes, termos" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Índice – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "Índice completo em página única" @@ -665,35 +697,35 @@ msgstr "pode ser enorme" msgid "Navigation" msgstr "Navegação" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "Pesquisar dentro de %(docstitle)s" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "Sobre esses documentos" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "Copyright" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Copyright %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "© Copyright %(copyright)s." -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Última atualização em %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -742,13 +774,13 @@ msgstr "buscar" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "Resultados da Busca" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -765,13 +797,13 @@ msgstr "Essa Página" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "Alterações na Versão%(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "Modificações na versão %(version)s — %(docstitle)s" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "%(filename)s — %(docstitle)s" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -790,12 +822,13 @@ msgstr "Alterações na API C" msgid "Other changes" msgstr "Outras alterações" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "Link permanente para este título" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "Link permanente para esta definição" @@ -811,12 +844,12 @@ msgstr "Buscando" msgid "Preparing search..." msgstr "Preparando a busca..." -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "Busca concluída. %s página(s) que atendem a consulta." -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr ", em " @@ -833,48 +866,53 @@ msgstr "Recolher painel lateral" msgid "Contents" msgstr "Conteúdos" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "Link Permanente para esse código" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "Link Permanente para essa imagem" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "Link permanente para esse \"toctree\"" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "Link Permanente para essa tabela" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "Release" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "página" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "Chave configuração desconhecida: latex_elements[%r] será ignorado." + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "Notas de rodapé" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "continuação da página anterior" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "Continuação na próxima página" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "[imagem: %s]" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[imagem]" diff --git a/sphinx/locale/pt_PT/LC_MESSAGES/sphinx.js b/sphinx/locale/pt_PT/LC_MESSAGES/sphinx.js index f51c53edc..5b8458604 100644 --- a/sphinx/locale/pt_PT/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/pt_PT/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "pt_PT", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", em", "About these documents": "Sobre estes documentos", "Automatically generated list of changes in version %(version)s": "Lista de altera\u00e7\u00f5es gerada automaticamente na vers\u00e3o %(version)s", "C API changes": "Altera\u00e7\u00f5es na API C", "Changes in Version %(version)s — %(docstitle)s": "Altera\u00e7\u00f5es na Vers\u00e3o%(version)s — %(docstitle)s", "Collapse sidebar": "Recolher painel lateral", "Complete Table of Contents": "Tabela de Conte\u00fados Completa", "Contents": "Conte\u00fado", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Criado utilizando <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Expandir painel lateral", "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.": "A partir daqui pode pesquisar estes documentos. Preencha as\npalavras de pesquisa na caixa abaixo e clique em \"pesquisar\".\nNote que a fun\u00e7\u00e3o de pesquisa ir\u00e1 procurar automaticamente\npor todas as palavras. P\u00e1ginas que contenham menos palavras\nn\u00e3o ir\u00e3o aparecer na lista de resultados.", "Full index on one page": "\u00cdndice completo numa p\u00e1gina", "General Index": "\u00cdndice Geral", "Global Module Index": "\u00cdndice Global de M\u00f3dulos", "Go": "Ir", "Hide Search Matches": "Esconder Resultados da Pesquisa", "Index": "\u00cdndice", "Index – %(key)s": "\u00cdndice – %(key)s", "Index pages by letter": "Paginas de \u00edndice por letra", "Indices and tables:": "\u00cdndices e tabelas:", "Last updated on %(last_updated)s.": "\u00daltima actualiza\u00e7\u00e3o em %(last_updated)s.", "Library changes": "Altera\u00e7\u00f5es na biblioteca", "Navigation": "Navega\u00e7\u00e3o", "Next topic": "Pr\u00f3ximo t\u00f3pico", "Other changes": "Outras altera\u00e7\u00f5es", "Overview": "Vis\u00e3o geral", "Permalink to this definition": "Link permanente para esta defini\u00e7\u00e3o", "Permalink to this headline": "Link permanente para este t\u00edtulo", "Please activate JavaScript to enable the search\n functionality.": "Por favor ligue o JavaScript para habilitar a\nfuncionalidade de pesquisa.", "Preparing search...": "A preparar a pesquisa...", "Previous topic": "T\u00f3pico anterior", "Quick search": "Pesquisa r\u00e1pida", "Search": "Pesquisar", "Search Page": "P\u00e1gina de Pesquisa", "Search Results": "Resultados da Pesquisa", "Search finished, found %s page(s) matching the search query.": "Pesquisa conclu\u00edda, foram encontrada(s) %s p\u00e1gina(s) que combinam com a consulta feita.", "Search within %(docstitle)s": "Pesquisar dentro de %(docstitle)s", "Searching": "A Pesquisar", "Show Source": "Exibir Fonte", "Table Of Contents": "Tabela de Conte\u00fados", "This Page": "Esta P\u00e1gina", "Welcome! This is": "Bem Vindo(a)! Esta \u00e9", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "A sua pesquisa n\u00e3o encontrou nenhum documento. Por favor, confirme que todas as palavras est\u00e3o escritas corretamente e que selecionou categorias suficientes.", "all functions, classes, terms": "todas as fun\u00e7\u00f5es, classes, termos", "can be huge": "pode ser enorme", "last updated": "\u00faltima actualiza\u00e7\u00e3o", "lists all sections and subsections": "Listar todas as sec\u00e7\u00f5es e subsec\u00e7\u00f5es", "next chapter": "pr\u00f3ximo cap\u00edtulo", "previous chapter": "cap\u00edtulo anterior", "quick access to all modules": "acesso r\u00e1pido a todos os m\u00f3dulos", "search": "pesquisar", "search this documentation": "Pesquisar esta documenta\u00e7\u00e3o", "the documentation for": "a documenta\u00e7\u00e3o de"}, "plural_expr": "(n != 1)"}); \ No newline at end of file +Documentation.addTranslations({"locale": "pt_PT", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": ", em", "About these documents": "Sobre estes documentos", "Automatically generated list of changes in version %(version)s": "Lista de altera\u00e7\u00f5es gerada automaticamente na vers\u00e3o %(version)s", "C API changes": "Altera\u00e7\u00f5es na API C", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "Recolher painel lateral", "Complete Table of Contents": "Tabela de Conte\u00fados Completa", "Contents": "Conte\u00fado", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Criado utilizando <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Expandir painel lateral", "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.": "A partir daqui pode pesquisar estes documentos. Preencha as\npalavras de pesquisa na caixa abaixo e clique em \"pesquisar\".\nNote que a fun\u00e7\u00e3o de pesquisa ir\u00e1 procurar automaticamente\npor todas as palavras. P\u00e1ginas que contenham menos palavras\nn\u00e3o ir\u00e3o aparecer na lista de resultados.", "Full index on one page": "\u00cdndice completo numa p\u00e1gina", "General Index": "\u00cdndice Geral", "Global Module Index": "\u00cdndice Global de M\u00f3dulos", "Go": "Ir", "Hide Search Matches": "Esconder Resultados da Pesquisa", "Index": "\u00cdndice", "Index – %(key)s": "\u00cdndice – %(key)s", "Index pages by letter": "Paginas de \u00edndice por letra", "Indices and tables:": "\u00cdndices e tabelas:", "Last updated on %(last_updated)s.": "\u00daltima actualiza\u00e7\u00e3o em %(last_updated)s.", "Library changes": "Altera\u00e7\u00f5es na biblioteca", "Navigation": "Navega\u00e7\u00e3o", "Next topic": "Pr\u00f3ximo t\u00f3pico", "Other changes": "Outras altera\u00e7\u00f5es", "Overview": "Vis\u00e3o geral", "Permalink to this definition": "Link permanente para esta defini\u00e7\u00e3o", "Permalink to this headline": "Link permanente para este t\u00edtulo", "Please activate JavaScript to enable the search\n functionality.": "Por favor ligue o JavaScript para habilitar a\nfuncionalidade de pesquisa.", "Preparing search...": "A preparar a pesquisa...", "Previous topic": "T\u00f3pico anterior", "Quick search": "Pesquisa r\u00e1pida", "Search": "Pesquisar", "Search Page": "P\u00e1gina de Pesquisa", "Search Results": "Resultados da Pesquisa", "Search finished, found %s page(s) matching the search query.": "Pesquisa conclu\u00edda, foram encontrada(s) %s p\u00e1gina(s) que combinam com a consulta feita.", "Search within %(docstitle)s": "Pesquisar dentro de %(docstitle)s", "Searching": "A Pesquisar", "Show Source": "Exibir Fonte", "Table Of Contents": "Tabela de Conte\u00fados", "This Page": "Esta P\u00e1gina", "Welcome! This is": "Bem Vindo(a)! Esta \u00e9", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "A sua pesquisa n\u00e3o encontrou nenhum documento. Por favor, confirme que todas as palavras est\u00e3o escritas corretamente e que selecionou categorias suficientes.", "all functions, classes, terms": "todas as fun\u00e7\u00f5es, classes, termos", "can be huge": "pode ser enorme", "last updated": "\u00faltima actualiza\u00e7\u00e3o", "lists all sections and subsections": "Listar todas as sec\u00e7\u00f5es e subsec\u00e7\u00f5es", "next chapter": "pr\u00f3ximo cap\u00edtulo", "previous chapter": "cap\u00edtulo anterior", "quick access to all modules": "acesso r\u00e1pido a todos os m\u00f3dulos", "search": "pesquisar", "search this documentation": "Pesquisar esta documenta\u00e7\u00e3o", "the documentation for": "a documenta\u00e7\u00e3o de"}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/locale/pt_PT/LC_MESSAGES/sphinx.mo b/sphinx/locale/pt_PT/LC_MESSAGES/sphinx.mo index 3f664cff446566b9e00b48b6e80ddb6b4eee5772..8f5bb99584c081ffe819f161938843a5aa6d956f 100644 GIT binary patch delta 3920 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 Y=XczX^L4{^Kf(?E@3tR%8|pIt3(z3}x&QzG delta 3521 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 diff --git a/sphinx/locale/pt_PT/LC_MESSAGES/sphinx.po b/sphinx/locale/pt_PT/LC_MESSAGES/sphinx.po index e64c81c3c..74be2b0fb 100644 --- a/sphinx/locale/pt_PT/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/pt_PT/LC_MESSAGES/sphinx.po @@ -4,65 +4,47 @@ # # Translators: # Pedro Algarvio <pedro@algarvio.me>, 2013 +# Takeshi KOMIYA <i.tkomiya@gmail.com>, 2016 msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/sphinx-doc/sphinx-1/language/pt_PT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: pt_PT\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "Documentação %s %s" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "ver %s" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "ver também %s" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "Símbolos" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python Enhancement Proposals; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "Internos" @@ -71,8 +53,11 @@ msgstr "Internos" msgid "Module level" msgstr "Módulos" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -83,18 +68,28 @@ msgstr "Índice Geral" msgid "index" msgstr "índice" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "próximo" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "anterior" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "Documentação %s %s" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr " (em " +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "Autor da secção: " @@ -111,23 +106,23 @@ msgstr "Autor do código: " msgid "Author: " msgstr "Autor: " -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Parâmetros" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "Retorno" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "Tipo de retorno" @@ -156,12 +151,12 @@ msgstr "%s (tipo C)" msgid "%s (C variable)" msgstr "%s (variável C)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "função" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "membro" @@ -169,7 +164,7 @@ msgstr "membro" msgid "macro" msgstr "macro" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "tipo" @@ -177,63 +172,72 @@ msgstr "tipo" msgid "variable" msgstr "variável" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "Gera" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (tipo C++)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (membro C++)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (função C++)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (classe C++)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "classe" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (função interna)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (método %s)" @@ -248,7 +252,7 @@ msgstr "%s() (classe)" msgid "%s (global variable or constant)" msgstr "%s (variável global ou constante)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (atributo %s)" @@ -257,116 +261,116 @@ msgstr "%s (atributo %s)" msgid "Arguments" msgstr "Parâmetros" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "dados" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "atributo" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "Variáveis" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "Levanta" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (no módulo %s)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (variável interna)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (no módulo %s)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (classe interna)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (classe em %s)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (método %s.%s)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (método estático %s.%s)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (método estático %s)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "%s() (método de classe %s.%s)" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "%s() (método de classe %s)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (atributo %s.%s)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (módulo)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "Índice de Módulos do Python" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "módulos" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "Obsoleto" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "excepção" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "método" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "método de classe" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "método estático" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "módulo" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr " (obsoleto)" @@ -388,120 +392,147 @@ msgstr "directiva" msgid "role" msgstr "papel" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "variável de ambiente; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%sopção de linha de comando; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "Termo de glossário" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "token de gramática" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "rótulo de referência" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "variável de ambiente" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "opção de programa" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "Índice" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "Índice de Módulos" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "Página de Pesquisa" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" -msgstr " Bases: %s" +msgid "see %s" +msgstr "ver %s" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "ver também %s" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "Símbolos" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "pseudónimo de :class:`%s`" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "[gráfico: %s]" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "[gráfico]" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "(em %s v%s)" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[código fonte]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "Por fazer" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "entrada original" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[documentos]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "Código do módulo" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "<h1>Código fonte de %s</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "Visão geral: código do módulo" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "<h1>Todos os módulos onde este código está disponível</h1>" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "Atenção" @@ -582,7 +613,7 @@ msgstr "função interna" msgid "Table Of Contents" msgstr "Tabela de Conteúdos" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -640,15 +671,15 @@ msgstr "acesso rápido a todos os módulos" msgid "all functions, classes, terms" msgstr "todas as funções, classes, termos" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Índice – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "Índice completo numa página" @@ -664,35 +695,35 @@ msgstr "pode ser enorme" msgid "Navigation" msgstr "Navegação" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "Pesquisar dentro de %(docstitle)s" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "Sobre estes documentos" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "Copyright" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Copyright %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Última actualização em %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -741,13 +772,13 @@ msgstr "pesquisar" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "Resultados da Pesquisa" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -764,13 +795,13 @@ msgstr "Esta Página" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "Alterações na Versão%(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -789,12 +820,13 @@ msgstr "Alterações na API C" msgid "Other changes" msgstr "Outras alterações" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "Link permanente para este título" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "Link permanente para esta definição" @@ -810,12 +842,12 @@ msgstr "A Pesquisar" msgid "Preparing search..." msgstr "A preparar a pesquisa..." -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "Pesquisa concluída, foram encontrada(s) %s página(s) que combinam com a consulta feita." -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr ", em" @@ -832,48 +864,53 @@ msgstr "Recolher painel lateral" msgid "Contents" msgstr "Conteúdo" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "Versão" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "Notas de rodapé" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "continuação da página anterior" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "Continuação na próxima página" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "[imagem: %s]" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[imagem]" diff --git a/sphinx/locale/ro/LC_MESSAGES/sphinx.js b/sphinx/locale/ro/LC_MESSAGES/sphinx.js index 2ec87345d..5a5571f7e 100644 --- a/sphinx/locale/ro/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/ro/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "ro", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Drepturi de autor</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Drepturi de autor %(copyright)s.", ", in ": ", \u00een", "About these documents": "Despre aceste documente", "Automatically generated list of changes in version %(version)s": "Lista de schimb\u0103ri generat\u0103 automat pentru versiunea %(version)s", "C API changes": "Schimb\u0103ri \u00een API C", "Changes in Version %(version)s — %(docstitle)s": "Schimb\u0103ri \u00een Versiunea %(version)s — %(docstitle)s", "Collapse sidebar": "Ascundere bar\u0103 lateral\u0103", "Complete Table of Contents": "Cuprinsul Complet", "Contents": "Cuprins", "Copyright": "Drepturi de autor", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Generat cu <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Expandare bar\u0103 lateral\u0103", "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.": "Aici po\u021bi c\u0103uta aceste documente. Completeaz\u0103 cuvintele\n\u00een c\u0103su\u021ba de mai jos \u0219i apas\u0103 \"caut\u0103\". Func\u021bia de c\u0103utare\nva c\u0103uta automat dup\u0103 toate cuvintele. Paginile\ncare con\u021bin mai pu\u021bine cuvinte nu vor ap\u0103rea \u00een lista de rezultate.", "Full index on one page": "Index complet", "General Index": "Index General", "Global Module Index": "Index Module Globale", "Go": "Caut\u0103", "Hide Search Matches": "Ascunde Rezultatele C\u0103ut\u0103rii", "Index": "Index", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "Indexeaz\u0103 paginile dupa liter\u0103", "Indices and tables:": "Indici \u0219i tabele:", "Last updated on %(last_updated)s.": "Ultima actualizare la %(last_updated)s.", "Library changes": "Schimb\u0103ri \u00een bibliotec\u0103", "Navigation": "Navigare", "Next topic": "Subiectul urm\u0103tor", "Other changes": "Alte schimb\u0103ri", "Overview": "Prezentare general\u0103", "Permalink to this definition": "Link permanent la aceast\u0103 defini\u021bie", "Permalink to this headline": "Link permanent la acest titlu", "Please activate JavaScript to enable the search\n functionality.": "Activeaz\u0103 JavaScript pentru a permite\nfunc\u021bia de c\u0103utare.", "Preparing search...": "Se preg\u0103te\u0219te c\u0103utarea...", "Previous topic": "Subiectul precedent", "Quick search": "C\u0103utare rapid\u0103", "Search": "C\u0103utare", "Search Page": "Pagin\u0103 de C\u0103utare", "Search Results": "Rezultatele C\u0103ut\u0103rii", "Search finished, found %s page(s) matching the search query.": "C\u0103utare finalizat\u0103, au fost g\u0103site %s pagini care au corespuns c\u0103ut\u0103rii.", "Search within %(docstitle)s": "Caut\u0103 \u00een %(docstitle)s", "Searching": "C\u0103utare", "Show Source": "Vezi Sursa", "Table Of Contents": "Cuprins", "This Page": "Aceast\u0103 Pagin\u0103", "Welcome! This is": "Bine ai venit! Acesta este", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "C\u0103utarea nu a identificat nici un document. Te rog s\u0103 te asiguri c\u0103 toate cuvintele sunt scrise corect \u0219i c\u0103 ai selectat suficiente categorii.", "all functions, classes, terms": "toate func\u021biile, clasele, termenii", "can be huge": "poate fi extrem de mare", "last updated": "ultima actualizare", "lists all sections and subsections": "lista tuturor sec\u021biunilor si a subsec\u021biunilor", "next chapter": "capitolul urm\u0103tor", "previous chapter": "capitolul precedent", "quick access to all modules": "acces rapid la toate modulele", "search": "c\u0103utare", "search this documentation": "caut\u0103 \u00een aceast\u0103 documenta\u021bie", "the documentation for": "documenta\u021bia pentru"}, "plural_expr": "(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1))"}); \ No newline at end of file +Documentation.addTranslations({"locale": "ro", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": ", \u00een", "About these documents": "Despre aceste documente", "Automatically generated list of changes in version %(version)s": "Lista de schimb\u0103ri generat\u0103 automat pentru versiunea %(version)s", "C API changes": "Schimb\u0103ri \u00een API C", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "Ascundere bar\u0103 lateral\u0103", "Complete Table of Contents": "Cuprinsul Complet", "Contents": "Cuprins", "Copyright": "Drepturi de autor", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Generat cu <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Expandare bar\u0103 lateral\u0103", "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.": "Aici po\u021bi c\u0103uta aceste documente. Completeaz\u0103 cuvintele\n\u00een c\u0103su\u021ba de mai jos \u0219i apas\u0103 \"caut\u0103\". Func\u021bia de c\u0103utare\nva c\u0103uta automat dup\u0103 toate cuvintele. Paginile\ncare con\u021bin mai pu\u021bine cuvinte nu vor ap\u0103rea \u00een lista de rezultate.", "Full index on one page": "Index complet", "General Index": "Index General", "Global Module Index": "Index Module Globale", "Go": "Caut\u0103", "Hide Search Matches": "Ascunde Rezultatele C\u0103ut\u0103rii", "Index": "Index", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "Indexeaz\u0103 paginile dupa liter\u0103", "Indices and tables:": "Indici \u0219i tabele:", "Last updated on %(last_updated)s.": "Ultima actualizare la %(last_updated)s.", "Library changes": "Schimb\u0103ri \u00een bibliotec\u0103", "Navigation": "Navigare", "Next topic": "Subiectul urm\u0103tor", "Other changes": "Alte schimb\u0103ri", "Overview": "Prezentare general\u0103", "Permalink to this definition": "Link permanent la aceast\u0103 defini\u021bie", "Permalink to this headline": "Link permanent la acest titlu", "Please activate JavaScript to enable the search\n functionality.": "Activeaz\u0103 JavaScript pentru a permite\nfunc\u021bia de c\u0103utare.", "Preparing search...": "Se preg\u0103te\u0219te c\u0103utarea...", "Previous topic": "Subiectul precedent", "Quick search": "C\u0103utare rapid\u0103", "Search": "C\u0103utare", "Search Page": "Pagin\u0103 de C\u0103utare", "Search Results": "Rezultatele C\u0103ut\u0103rii", "Search finished, found %s page(s) matching the search query.": "C\u0103utare finalizat\u0103, au fost g\u0103site %s pagini care au corespuns c\u0103ut\u0103rii.", "Search within %(docstitle)s": "Caut\u0103 \u00een %(docstitle)s", "Searching": "C\u0103utare", "Show Source": "Vezi Sursa", "Table Of Contents": "Cuprins", "This Page": "Aceast\u0103 Pagin\u0103", "Welcome! This is": "Bine ai venit! Acesta este", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "C\u0103utarea nu a identificat nici un document. Te rog s\u0103 te asiguri c\u0103 toate cuvintele sunt scrise corect \u0219i c\u0103 ai selectat suficiente categorii.", "all functions, classes, terms": "toate func\u021biile, clasele, termenii", "can be huge": "poate fi extrem de mare", "last updated": "ultima actualizare", "lists all sections and subsections": "lista tuturor sec\u021biunilor si a subsec\u021biunilor", "next chapter": "capitolul urm\u0103tor", "previous chapter": "capitolul precedent", "quick access to all modules": "acces rapid la toate modulele", "search": "c\u0103utare", "search this documentation": "caut\u0103 \u00een aceast\u0103 documenta\u021bie", "the documentation for": "documenta\u021bia pentru"}, "plural_expr": "(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1))"}); \ No newline at end of file diff --git a/sphinx/locale/ro/LC_MESSAGES/sphinx.mo b/sphinx/locale/ro/LC_MESSAGES/sphinx.mo index 50b1b0f16a2eba5f02739b37dc2daf175dab1918..388d7ac4525581e7019f02f3e5d5051354cae49c 100644 GIT binary patch delta 3913 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 T?6han*Vz8e&SYz2Yu3L3TaWcR delta 3583 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 diff --git a/sphinx/locale/ro/LC_MESSAGES/sphinx.po b/sphinx/locale/ro/LC_MESSAGES/sphinx.po index 01b56c264..d872130a3 100644 --- a/sphinx/locale/ro/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/ro/LC_MESSAGES/sphinx.po @@ -4,65 +4,47 @@ # # Translators: # Razvan Stefanescu <razvan.stefanescu@gmail.com>, 2015-2016 +# Takeshi KOMIYA <i.tkomiya@gmail.com>, 2016 msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Romanian (http://www.transifex.com/sphinx-doc/sphinx-1/language/ro/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: ro\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "Fig. %s" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "Tabelul %s" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "Cod %s" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "%s %s documentație" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "vezi %s" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "vezi și %s" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "Simboluri" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Propuneri de Îmbunătățire Python; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "Integrate" @@ -71,8 +53,11 @@ msgstr "Integrate" msgid "Module level" msgstr "Nivelul modul" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -83,18 +68,28 @@ msgstr "Index General" msgid "index" msgstr "index" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "următor" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "precedent" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s documentație" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr "(în" +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "Autorul secțiunii:" @@ -111,23 +106,23 @@ msgstr "Autorul codului:" msgid "Author: " msgstr "Autor:" -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Parametrii" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "Întoarce" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "Tipul întors" @@ -156,12 +151,12 @@ msgstr "%s (tip C)" msgid "%s (C variable)" msgstr "%s (variabilă C)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "funcție" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "membru" @@ -169,7 +164,7 @@ msgstr "membru" msgid "macro" msgstr "macro" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "tip" @@ -177,63 +172,72 @@ msgstr "tip" msgid "variable" msgstr "variabilă" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "Generează" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (tip C++)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (membru C++)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (funcție C++)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (clasă C++)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "%s (enumerator C++)" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "%s (enumerator C++)" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "clasă" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "enumerator" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "enumerator" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (funcție integrată)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (metoda %s)" @@ -248,7 +252,7 @@ msgstr "%s() (clasă)" msgid "%s (global variable or constant)" msgstr "%s (variabilă globală sau constantă)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (atribut %s)" @@ -257,116 +261,116 @@ msgstr "%s (atribut %s)" msgid "Arguments" msgstr "Argumente" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "data" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "atribut" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "Variabile" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "Generează" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (în modulul %s)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (variabilă integrată)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (în modulul %s)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (clasă integrată)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (clasa în %s)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (metoda %s.%s)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (metoda statică %s.%s)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (metoda statică %s)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "%s() (metoda clasei %s.%s)" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "%s() (metoda clasei %s)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (atributul %s.%s)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (modul)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "Indexul de Module Python" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "module" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "Învechit" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "excepție" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "metodă" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "metoda clasei" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "metodă statică" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "modul" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr "(învechit)" @@ -388,120 +392,147 @@ msgstr "directivă" msgid "role" msgstr "rol" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "variabilă de mediu; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%sopțiune în linia de comandă; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "termen de glosar" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "element de gramatică" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "etichetă de referință" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "variabilă de mediu" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "opțiune a programului" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "Index" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "Index al modulelor" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "Pagină de Căutare" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" -msgstr " Baze: %s" +msgid "see %s" +msgstr "vezi %s" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "vezi și %s" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "Simboluri" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "alias pentru :class:`%s`" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "[grafic: %s]" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "[grafic]" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "(în %s v%s)" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[sursă]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "De făcut" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "înregistrarea inițială" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[documentație]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "Codul modulului" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "<h1>Codul sursă pentru %s</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "Prezentare generală: codul modulului" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "<h1>Toate modulele pentru care este disponibil codul sursă</h1>" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "Atenție" @@ -582,7 +613,7 @@ msgstr "funcție integrată" msgid "Table Of Contents" msgstr "Cuprins" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -640,15 +671,15 @@ msgstr "acces rapid la toate modulele" msgid "all functions, classes, terms" msgstr "toate funcțiile, clasele, termenii" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Index – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "Index complet" @@ -664,35 +695,35 @@ msgstr "poate fi extrem de mare" msgid "Navigation" msgstr "Navigare" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "Caută în %(docstitle)s" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "Despre aceste documente" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "Drepturi de autor" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">Drepturi de autor</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Drepturi de autor %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Ultima actualizare la %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -741,13 +772,13 @@ msgstr "căutare" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "Rezultatele Căutării" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -764,13 +795,13 @@ msgstr "Această Pagină" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "Schimbări în Versiunea %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -789,12 +820,13 @@ msgstr "Schimbări în API C" msgid "Other changes" msgstr "Alte schimbări" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "Link permanent la acest titlu" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "Link permanent la această definiție" @@ -810,12 +842,12 @@ msgstr "Căutare" msgid "Preparing search..." msgstr "Se pregătește căutarea..." -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "Căutare finalizată, au fost găsite %s pagini care au corespuns căutării." -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr ", în" @@ -832,48 +864,53 @@ msgstr "Ascundere bară laterală" msgid "Contents" msgstr "Cuprins" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "Link permanent la acest cod" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "Link permanent la această imagine" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "Link permanent la acest cuprins" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "Link permanent la acest tabel" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "Versiune" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "Note de subsol" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "continuare din pagina precedentă" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "Se continuă pe pagina următoare" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "[figura: %s]" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[figură]" diff --git a/sphinx/locale/ru/LC_MESSAGES/sphinx.js b/sphinx/locale/ru/LC_MESSAGES/sphinx.js index f62c43d48..41853c805 100644 --- a/sphinx/locale/ru/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/ru/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "ru", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">\u0410\u0432\u0442\u043e\u0440\u0441\u043a\u0438\u0435 \u043f\u0440\u0430\u0432\u0430</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", \u0432", "About these documents": "\u041e\u0431 \u044d\u0442\u0438\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0445", "Automatically generated list of changes in version %(version)s": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 %(version)s", "C API changes": "\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 API C", "Changes in Version %(version)s — %(docstitle)s": "\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 %(version)s — %(docstitle)s", "Collapse sidebar": "\u0421\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0431\u043e\u043a\u043e\u0432\u0443\u044e \u043f\u0430\u043d\u0435\u043b\u044c", "Complete Table of Contents": "\u041f\u043e\u043b\u043d\u043e\u0435 \u043e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435", "Contents": "\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435", "Copyright": "\u0410\u0432\u0442\u043e\u0440\u0441\u043a\u0438\u0435 \u043f\u0440\u0430\u0432\u0430", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "\u0421\u043e\u0437\u0434\u0430\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "\u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0431\u043e\u043a\u043e\u0432\u0443\u044e \u043f\u0430\u043d\u0435\u043b\u044c", "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.": "\u0417\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u0438\u0441\u043a \u043f\u043e \u0432\u0441\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0430\u043c \u044d\u0442\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430 \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435 \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u00ab\u0438\u0441\u043a\u0430\u0442\u044c\u00bb. \u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0441\u0442\u044c \u0432\u0441\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0441\u043b\u043e\u0432\u0430. \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0433\u0434\u0435 \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u044c \u044d\u0442\u0438\u0445 \u0441\u043b\u043e\u0432, \u043e\u0442\u043e\u0431\u0440\u0430\u043d\u044b \u043d\u0435 \u0431\u0443\u0434\u0443\u0442.", "Full index on one page": "\u041f\u043e\u043b\u043d\u044b\u0439 \u0430\u043b\u0444\u0430\u0432\u0438\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435", "General Index": "\u0410\u043b\u0444\u0430\u0432\u0438\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c", "Global Module Index": "\u0410\u043b\u0444\u0430\u0432\u0438\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0434\u0443\u043b\u0435\u0439", "Go": "\u0418\u0441\u043a\u0430\u0442\u044c", "Hide Search Matches": "\u0421\u043d\u044f\u0442\u044c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435", "Index": "\u0410\u043b\u0444\u0430\u0432\u0438\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c", "Index – %(key)s": "\u0410\u043b\u0444\u0430\u0432\u0438\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c – %(key)s", "Index pages by letter": "\u0423\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u043f\u043e \u0431\u0443\u043a\u0432\u0430\u043c \u0430\u043b\u0444\u0430\u0432\u0438\u0442\u0430", "Indices and tables:": "\u0422\u0430\u0431\u043b\u0438\u0446\u044b \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438:", "Last updated on %(last_updated)s.": "\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043e: %(last_updated)s.", "Library changes": "\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435", "Navigation": "\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f", "Next topic": "\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437\u0434\u0435\u043b", "Other changes": "\u0414\u0440\u0443\u0433\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f", "Overview": "\u041e\u0431\u0437\u043e\u0440", "Permalink to this definition": "\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u044d\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435", "Permalink to this headline": "\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a", "Please activate JavaScript to enable the search\n functionality.": "\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e\u0438\u0441\u043a\u0430 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 JavaScript \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.", "Preparing search...": "\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043f\u043e\u0438\u0441\u043a\u0430\u2026", "Previous topic": "\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0440\u0430\u0437\u0434\u0435\u043b", "Quick search": "\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u043f\u043e\u0438\u0441\u043a", "Search": "\u041f\u043e\u0438\u0441\u043a", "Search Page": "\u041f\u043e\u0438\u0441\u043a", "Search Results": "\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u043e\u0438\u0441\u043a\u0430", "Search finished, found %s page(s) matching the search query.": "\u041f\u043e\u0438\u0441\u043a \u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043d, \u043d\u0430\u0439\u0434\u0435\u043d\u043e %s \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u044e\u0449\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u0443.", "Search within %(docstitle)s": "\u041f\u043e\u0438\u0441\u043a \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435 \u00ab%(docstitle)s\u00bb", "Searching": "\u0418\u0434\u0451\u0442 \u043f\u043e\u0438\u0441\u043a", "Show Source": "\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442", "Table Of Contents": "\u041e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435", "This Page": "\u042d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430", "Welcome! This is": "\u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c! \u042d\u0442\u043e", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "\u041f\u043e \u0432\u0430\u0448\u0435\u043c\u0443 \u043f\u043e\u0438\u0441\u043a\u0443 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0447\u0442\u043e \u0432\u0441\u0435 \u0441\u043b\u043e\u0432\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0431\u0435\u0437 \u043e\u0448\u0438\u0431\u043e\u043a, \u0438 \u0447\u0442\u043e \u0432\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0439.", "all functions, classes, terms": "\u0432\u0441\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043b\u0430\u0441\u0441\u044b, \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b", "can be huge": "\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u043c", "last updated": "\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435", "lists all sections and subsections": "\u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432 \u0438 \u043f\u043e\u0434\u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432", "next chapter": "\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0433\u043b\u0430\u0432\u0430", "previous chapter": "\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f \u0433\u043b\u0430\u0432\u0430", "quick access to all modules": "\u0441\u0432\u043e\u0434\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439", "search": "\u0438\u0441\u043a\u0430\u0442\u044c", "search this documentation": "\u043f\u043e\u0438\u0441\u043a \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438", "the documentation for": "\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f"}, "plural_expr": "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3)"}); \ No newline at end of file +Documentation.addTranslations({"locale": "ru", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", \u0432", "About these documents": "\u041e\u0431 \u044d\u0442\u0438\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0445", "Automatically generated list of changes in version %(version)s": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 %(version)s", "C API changes": "\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 API C", "Changes in Version %(version)s — %(docstitle)s": "\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 %(version)s — %(docstitle)s", "Collapse sidebar": "\u0421\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0431\u043e\u043a\u043e\u0432\u0443\u044e \u043f\u0430\u043d\u0435\u043b\u044c", "Complete Table of Contents": "\u041f\u043e\u043b\u043d\u043e\u0435 \u043e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435", "Contents": "\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435", "Copyright": "\u0410\u0432\u0442\u043e\u0440\u0441\u043a\u0438\u0435 \u043f\u0440\u0430\u0432\u0430", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "\u0421\u043e\u0437\u0434\u0430\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "\u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0431\u043e\u043a\u043e\u0432\u0443\u044e \u043f\u0430\u043d\u0435\u043b\u044c", "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.": "\u0417\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u0438\u0441\u043a \u043f\u043e \u0432\u0441\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0430\u043c \u044d\u0442\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430 \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435 \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u00ab\u0438\u0441\u043a\u0430\u0442\u044c\u00bb. \u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0441\u0442\u044c \u0432\u0441\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0441\u043b\u043e\u0432\u0430. \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0433\u0434\u0435 \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u044c \u044d\u0442\u0438\u0445 \u0441\u043b\u043e\u0432, \u043e\u0442\u043e\u0431\u0440\u0430\u043d\u044b \u043d\u0435 \u0431\u0443\u0434\u0443\u0442.", "Full index on one page": "\u041f\u043e\u043b\u043d\u044b\u0439 \u0430\u043b\u0444\u0430\u0432\u0438\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435", "General Index": "\u0410\u043b\u0444\u0430\u0432\u0438\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c", "Global Module Index": "\u0410\u043b\u0444\u0430\u0432\u0438\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0434\u0443\u043b\u0435\u0439", "Go": "\u0418\u0441\u043a\u0430\u0442\u044c", "Hide Search Matches": "\u0421\u043d\u044f\u0442\u044c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435", "Index": "\u0410\u043b\u0444\u0430\u0432\u0438\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c", "Index – %(key)s": "\u0410\u043b\u0444\u0430\u0432\u0438\u0442\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c – %(key)s", "Index pages by letter": "\u0423\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u043f\u043e \u0431\u0443\u043a\u0432\u0430\u043c \u0430\u043b\u0444\u0430\u0432\u0438\u0442\u0430", "Indices and tables:": "\u0422\u0430\u0431\u043b\u0438\u0446\u044b \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438:", "Last updated on %(last_updated)s.": "\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043e: %(last_updated)s.", "Library changes": "\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435", "Navigation": "\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f", "Next topic": "\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437\u0434\u0435\u043b", "Other changes": "\u0414\u0440\u0443\u0433\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f", "Overview": "\u041e\u0431\u0437\u043e\u0440", "Permalink to this definition": "\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u044d\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435", "Permalink to this headline": "\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a", "Please activate JavaScript to enable the search\n functionality.": "\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e\u0438\u0441\u043a\u0430 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435 JavaScript \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.", "Preparing search...": "\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043f\u043e\u0438\u0441\u043a\u0430\u2026", "Previous topic": "\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0440\u0430\u0437\u0434\u0435\u043b", "Quick search": "\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u043f\u043e\u0438\u0441\u043a", "Search": "\u041f\u043e\u0438\u0441\u043a", "Search Page": "\u041f\u043e\u0438\u0441\u043a", "Search Results": "\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u043e\u0438\u0441\u043a\u0430", "Search finished, found %s page(s) matching the search query.": "\u041f\u043e\u0438\u0441\u043a \u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043d, \u043d\u0430\u0439\u0434\u0435\u043d\u043e %s \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u044e\u0449\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u0443.", "Search within %(docstitle)s": "\u041f\u043e\u0438\u0441\u043a \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435 \u00ab%(docstitle)s\u00bb", "Searching": "\u0418\u0434\u0451\u0442 \u043f\u043e\u0438\u0441\u043a", "Show Source": "\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442", "Table Of Contents": "\u041e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435", "This Page": "\u042d\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430", "Welcome! This is": "\u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c! \u042d\u0442\u043e", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "\u041f\u043e \u0432\u0430\u0448\u0435\u043c\u0443 \u043f\u043e\u0438\u0441\u043a\u0443 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u0447\u0442\u043e \u0432\u0441\u0435 \u0441\u043b\u043e\u0432\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0431\u0435\u0437 \u043e\u0448\u0438\u0431\u043e\u043a, \u0438 \u0447\u0442\u043e \u0432\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0439.", "all functions, classes, terms": "\u0432\u0441\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043b\u0430\u0441\u0441\u044b, \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b", "can be huge": "\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u043c", "last updated": "\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435", "lists all sections and subsections": "\u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432 \u0438 \u043f\u043e\u0434\u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432", "next chapter": "\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0433\u043b\u0430\u0432\u0430", "previous chapter": "\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f \u0433\u043b\u0430\u0432\u0430", "quick access to all modules": "\u0441\u0432\u043e\u0434\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439", "search": "\u0438\u0441\u043a\u0430\u0442\u044c", "search this documentation": "\u043f\u043e\u0438\u0441\u043a \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438", "the documentation for": "\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f"}, "plural_expr": "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3)"}); \ No newline at end of file diff --git a/sphinx/locale/ru/LC_MESSAGES/sphinx.mo b/sphinx/locale/ru/LC_MESSAGES/sphinx.mo index 5342631db1ee8fc9d21e419848b0da426272a891..97a4c2f186a478f8f5065a0584257fdab8c1865a 100644 GIT binary patch delta 4282 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 XU+*nR%W>|2(%#M1I^#zxmbm^2l}9f* delta 3595 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 diff --git a/sphinx/locale/ru/LC_MESSAGES/sphinx.po b/sphinx/locale/ru/LC_MESSAGES/sphinx.po index 5b10606b6..eee2e4b02 100644 --- a/sphinx/locale/ru/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/ru/LC_MESSAGES/sphinx.po @@ -4,68 +4,50 @@ # # Translators: # Dmitry Shachnev <mitya57@gmail.com>, 2013 -# ferm32 <ferm32@gmail.com>, 2014 +# ferm32 <ferm32@gmail.com>, 2014,2016 # FIRST AUTHOR <EMAIL@ADDRESS>, 2013 +# Konstantin Molchanov <moigagoo@live.com>, 2016 # PyHedgehog <pywebmail@list.ru>, 2015 msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-15 11:26+0000\n" +"Last-Translator: Konstantin Molchanov <moigagoo@live.com>\n" "Language-Team: Russian (http://www.transifex.com/sphinx-doc/sphinx-1/language/ru/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: ru\n" "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "Раздел %s" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "Рис. %s" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "Таблица %s" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "Список %s" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "Документация %s %s" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "см. %s" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "также см. %s" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "Символы" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Предложения об улучшениях Python; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "Встроенные функции" @@ -74,9 +56,12 @@ msgstr "Встроенные функции" msgid "Module level" msgstr "Модуль" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" -msgstr "" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" +msgstr "%b %d, %Y" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 msgid "General Index" @@ -86,18 +71,28 @@ msgstr "Алфавитный указатель" msgid "index" msgstr "указатель" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "вперёд" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "назад" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "Документация %s %s" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr " (в " +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "Некорректная подпись: %s" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "Автор раздела: " @@ -114,23 +109,23 @@ msgstr "Автор кода:" msgid "Author: " msgstr "Автор: " -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Параметры" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "Результат" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "Тип результата" @@ -159,12 +154,12 @@ msgstr "%s (тип C)" msgid "%s (C variable)" msgstr "%s (переменная C)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "функция" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "поле" @@ -172,7 +167,7 @@ msgstr "поле" msgid "macro" msgstr "макрос" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "тип" @@ -180,63 +175,72 @@ msgstr "тип" msgid "variable" msgstr "переменная" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" -msgstr "" +msgstr "Параметры шаблона" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "Бросает исключение" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (тип C++)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "%s (концепт C++)" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (поле C++)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (функция C++)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (класс C++)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "%s (перечисляемый тип C++)" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "%s (функция-перечислитель C++)" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "класс" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "концепт" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "перечисляемый тип" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "перечислитель" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (встроенная функция)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (метод %s)" @@ -251,7 +255,7 @@ msgstr "%s() (класс)" msgid "%s (global variable or constant)" msgstr "%s (глобальная переменная или константа)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (атрибут %s)" @@ -260,116 +264,116 @@ msgstr "%s (атрибут %s)" msgid "Arguments" msgstr "Аргументы" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "данные" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "атрибут" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "Переменные" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "Исключение" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (в модуле %s)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (встроенная переменная)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (в модуле %s)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (встроенный класс)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (класс в %s)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (метод %s.%s)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (статический метод %s.%s)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (статический метод %s)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "%s() (метод класса %s.%s)" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "%s() (метод класса %s)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (атрибут %s.%s)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (модуль)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "Содержание модулей Python" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "модули" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "Не рекомендуется" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "исключение" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "метод" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "метод класса" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "статический метод" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "модуль" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr "(использование не рекомендуется)" @@ -391,120 +395,147 @@ msgstr "директива" msgid "role" msgstr "роль" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "переменная окружения; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "Опция командной строки %s; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "элемент словаря" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "токен грамматики" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "текст ссылки" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "переменная окружения" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "опция программы" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "Алфавитный указатель" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "Состав модуля" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "Поиск" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" +msgid "see %s" +msgstr "см. %s" + +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "также см. %s" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "Символы" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" msgstr " Базовые классы: %s" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "псевдоним класса :class:`%s`" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "[иллюстрация: %s]" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "[иллюстрация]" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "Ссылка на это уравнение" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "(в %s v%s)" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[исходный код]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "повторяющаяся метка уравнения %s, также используется в %s" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "План" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" -msgstr "" +msgstr "<<исходная запись>>" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" -msgstr "" +msgstr "(<<Исходная запись>> находится в %s, строка %d.)" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "исходный элемент" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[документация]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "Код модуля" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "<h1>Исходный код %s</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "Обзор: исходный код модуля" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "<h1>Все модули, в которых есть код</h1>" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "Именованные аргументы" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "Внимание" @@ -585,7 +616,7 @@ msgstr "базовая функция" msgid "Table Of Contents" msgstr "Оглавление" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -643,15 +674,15 @@ msgstr "сводный список всех модулей" msgid "all functions, classes, terms" msgstr "все функции, классы, переменные и константы" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Алфавитный указатель – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "Полный алфавитный указатель на одной странице" @@ -667,35 +698,35 @@ msgstr "может быть очень большим" msgid "Navigation" msgstr "Навигация" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "Поиск в документе «%(docstitle)s»" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "Об этих документах" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "Авторские права" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">Авторские права</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Copyright %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "© Copyright %(copyright)s." -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Обновлено: %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -744,13 +775,13 @@ msgstr "искать" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "Результаты поиска" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -767,13 +798,13 @@ msgstr "Эта страница" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "Изменения в версии %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "Изменения в версии %(version)s — %(docstitle)s" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "%(filename)s — %(docstitle)s" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -792,12 +823,13 @@ msgstr "Изменения в API C" msgid "Other changes" msgstr "Другие изменения" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "Ссылка на этот заголовок" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "Ссылка на это определение" @@ -813,12 +845,12 @@ msgstr "Идёт поиск" msgid "Preparing search..." msgstr "Подготовка поиска…" -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "Поиск завершён, найдено %s страниц, удовлетворяющих запросу." -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr ", в" @@ -835,48 +867,53 @@ msgstr "Свернуть боковую панель" msgid "Contents" msgstr "Содержание" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "Постоянная ссылка на код" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "Постоянная ссылка на рисунок" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "Постоянная ссылка на оглавление" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "Постоянная ссылка на таблицу" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "Выпуск" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" -msgstr "" +msgstr "страница" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "Неизвестный ключ конфигурации: latex_elements[%r] игнорируется." + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "Сноски" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "продолжение с предыдущей страницы" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "Продолжается на следующей странице" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "[рисунок: %s]" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[рисунок]" diff --git a/sphinx/locale/si/LC_MESSAGES/sphinx.js b/sphinx/locale/si/LC_MESSAGES/sphinx.js index 287e31845..c754a1180 100644 --- a/sphinx/locale/si/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/si/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "si", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "\u0db8\u0dd9\u0db8 \u0dbd\u0dda\u0d9b\u0dab \u0d9c\u0dd0\u0db1", "Automatically generated list of changes in version %(version)s": "", "C API changes": "C API \u0dc0\u0dd9\u0db1\u0dc3\u0dca\u0d9a\u0db8\u0dca", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "\u0dc3\u0db8\u0dca\u0db4\u0dd6\u0dbb\u0dca\u0dab \u0db4\u0da7\u0dd4\u0db1", "Contents": "\u0d85\u0db1\u0dca\u0dad\u0dbb\u0dca\u0d9c\u0dad\u0dba", "Copyright": "", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand 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.": "", "Full index on one page": "", "General Index": "", "Global Module Index": "", "Go": "\u0dba\u0db1\u0dca\u0db1", "Hide Search Matches": "", "Index": "", "Index – %(key)s": "", "Index pages by letter": "", "Indices and tables:": "", "Last updated on %(last_updated)s.": "", "Library changes": "\u0db4\u0dd4\u0dc3\u0dca\u0dad\u0d9a\u0dcf\u0dbd \u0dc0\u0dd9\u0db1\u0dc3\u0dca\u0d9a\u0db8\u0dca", "Navigation": "\u0d9c\u0db8\u0db1\u0dca \u0d9a\u0dd2\u0dbb\u0dd3\u0db8", "Next topic": "\u0d8a\u0dc5\u0d9f \u0db8\u0dcf\u0dad\u0dd8\u0d9a\u0dcf\u0dc0", "Other changes": "\u0dc0\u0dd9\u0db1\u0dad\u0dca \u0dc0\u0dd9\u0db1\u0dc3\u0dca\u0d9a\u0db8\u0dca", "Overview": "", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "\u0dc3\u0dd9\u0dc0\u0dd4\u0db8 \u0dc3\u0dd6\u0daf\u0dcf\u0db1\u0db8\u0dca \u0d9a\u0dbb\u0db8\u0dd2\u0db1\u0dca....", "Previous topic": "\u0db4\u0dd9\u0dbb \u0db8\u0dcf\u0dad\u0dd8\u0d9a\u0dcf\u0dc0", "Quick search": "\u0d89\u0d9a\u0dca\u0db8\u0db1\u0dca \u0dc3\u0dd9\u0dc0\u0dd4\u0db8", "Search": "\u0dc3\u0ddc\u0dba\u0db1\u0dca\u0db1", "Search Page": "\u0dc3\u0dd9\u0dc0\u0dd4\u0db8\u0dca \u0db4\u0dd2\u0da7\u0dd4\u0dc0", "Search Results": "\u0dc3\u0dd9\u0dc0\u0dd4\u0db8\u0dca \u0db4\u0dca\u200d\u0dbb\u0dad\u0dd2\u0db5\u0dbd", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "\u0dc3\u0ddc\u0dba\u0db8\u0dd2\u0db1\u0dca...", "Show Source": "\u0db8\u0dd6\u0dbd\u0dba \u0db4\u0dd9\u0db1\u0dca\u0dc0\u0db1\u0dca\u0db1", "Table Of Contents": "\u0db4\u0da7\u0dd4\u0db1", "This Page": "\u0db8\u0dd9\u0db8 \u0db4\u0dd2\u0da7\u0dd4\u0dc0", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "", "can be huge": "\u0dc0\u0dd2\u0dc1\u0dcf\u0dbd \u0dc0\u0dd2\u0dba \u0dc4\u0dd0\u0d9a", "last updated": "\u0d85\u0dc0\u0dc3\u0db1\u0dca\u0dc0\u0dbb\u0da7 \u0dba\u0dcf\u0dc0\u0dad\u0dca\u0d9a\u0dcf\u0dbd \u0d9a\u0dbd", "lists all sections and subsections": "", "next chapter": "\u0d8a\u0dc5\u0d9f \u0db4\u0dbb\u0dd2\u0da0\u0dca\u0da1\u0dda\u0daf\u0dba", "previous chapter": "\u0db4\u0dd9\u0dbb \u0db4\u0dbb\u0dd2\u0da0\u0dca\u0da1\u0dda\u0daf\u0dba", "quick access to all modules": "", "search": "\u0dc3\u0ddc\u0dba\u0db1\u0dca\u0db1", "search this documentation": "", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file +Documentation.addTranslations({"locale": "si", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "\u0db8\u0dd9\u0db8 \u0dbd\u0dda\u0d9b\u0dab \u0d9c\u0dd0\u0db1", "Automatically generated list of changes in version %(version)s": "", "C API changes": "C API \u0dc0\u0dd9\u0db1\u0dc3\u0dca\u0d9a\u0db8\u0dca", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "\u0dc3\u0db8\u0dca\u0db4\u0dd6\u0dbb\u0dca\u0dab \u0db4\u0da7\u0dd4\u0db1", "Contents": "\u0d85\u0db1\u0dca\u0dad\u0dbb\u0dca\u0d9c\u0dad\u0dba", "Copyright": "", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "", "Expand 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.": "", "Full index on one page": "", "General Index": "", "Global Module Index": "", "Go": "\u0dba\u0db1\u0dca\u0db1", "Hide Search Matches": "", "Index": "", "Index – %(key)s": "", "Index pages by letter": "", "Indices and tables:": "", "Last updated on %(last_updated)s.": "", "Library changes": "\u0db4\u0dd4\u0dc3\u0dca\u0dad\u0d9a\u0dcf\u0dbd \u0dc0\u0dd9\u0db1\u0dc3\u0dca\u0d9a\u0db8\u0dca", "Navigation": "\u0d9c\u0db8\u0db1\u0dca \u0d9a\u0dd2\u0dbb\u0dd3\u0db8", "Next topic": "\u0d8a\u0dc5\u0d9f \u0db8\u0dcf\u0dad\u0dd8\u0d9a\u0dcf\u0dc0", "Other changes": "\u0dc0\u0dd9\u0db1\u0dad\u0dca \u0dc0\u0dd9\u0db1\u0dc3\u0dca\u0d9a\u0db8\u0dca", "Overview": "", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "", "Preparing search...": "\u0dc3\u0dd9\u0dc0\u0dd4\u0db8 \u0dc3\u0dd6\u0daf\u0dcf\u0db1\u0db8\u0dca \u0d9a\u0dbb\u0db8\u0dd2\u0db1\u0dca....", "Previous topic": "\u0db4\u0dd9\u0dbb \u0db8\u0dcf\u0dad\u0dd8\u0d9a\u0dcf\u0dc0", "Quick search": "\u0d89\u0d9a\u0dca\u0db8\u0db1\u0dca \u0dc3\u0dd9\u0dc0\u0dd4\u0db8", "Search": "\u0dc3\u0ddc\u0dba\u0db1\u0dca\u0db1", "Search Page": "\u0dc3\u0dd9\u0dc0\u0dd4\u0db8\u0dca \u0db4\u0dd2\u0da7\u0dd4\u0dc0", "Search Results": "\u0dc3\u0dd9\u0dc0\u0dd4\u0db8\u0dca \u0db4\u0dca\u200d\u0dbb\u0dad\u0dd2\u0db5\u0dbd", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "", "Searching": "\u0dc3\u0ddc\u0dba\u0db8\u0dd2\u0db1\u0dca...", "Show Source": "\u0db8\u0dd6\u0dbd\u0dba \u0db4\u0dd9\u0db1\u0dca\u0dc0\u0db1\u0dca\u0db1", "Table Of Contents": "\u0db4\u0da7\u0dd4\u0db1", "This Page": "\u0db8\u0dd9\u0db8 \u0db4\u0dd2\u0da7\u0dd4\u0dc0", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "", "can be huge": "\u0dc0\u0dd2\u0dc1\u0dcf\u0dbd \u0dc0\u0dd2\u0dba \u0dc4\u0dd0\u0d9a", "last updated": "\u0d85\u0dc0\u0dc3\u0db1\u0dca\u0dc0\u0dbb\u0da7 \u0dba\u0dcf\u0dc0\u0dad\u0dca\u0d9a\u0dcf\u0dbd \u0d9a\u0dbd", "lists all sections and subsections": "", "next chapter": "\u0d8a\u0dc5\u0d9f \u0db4\u0dbb\u0dd2\u0da0\u0dca\u0da1\u0dda\u0daf\u0dba", "previous chapter": "\u0db4\u0dd9\u0dbb \u0db4\u0dbb\u0dd2\u0da0\u0dca\u0da1\u0dda\u0daf\u0dba", "quick access to all modules": "", "search": "\u0dc3\u0ddc\u0dba\u0db1\u0dca\u0db1", "search this documentation": "", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/locale/si/LC_MESSAGES/sphinx.mo b/sphinx/locale/si/LC_MESSAGES/sphinx.mo index 5bbca467525df846749ab663623377bfd5737f0a..04e88115628022414b9e3495e2641777e871adcc 100644 GIT binary patch delta 3897 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 delta 3502 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 E1J6E{t^fc4 diff --git a/sphinx/locale/si/LC_MESSAGES/sphinx.po b/sphinx/locale/si/LC_MESSAGES/sphinx.po index 2d63d7a80..e68069e08 100644 --- a/sphinx/locale/si/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/si/LC_MESSAGES/sphinx.po @@ -8,61 +8,42 @@ msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Sinhala (http://www.transifex.com/sphinx-doc/sphinx-1/language/si/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: si\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "%s %s ලේඛණය" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "%s බලන්න" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "%s ද බලන්න" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "සංකේත" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "" @@ -71,8 +52,11 @@ msgstr "" msgid "Module level" msgstr "" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -83,18 +67,28 @@ msgstr "" msgid "index" msgstr "" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "ඊළඟ" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "පෙර" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s ලේඛණය" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr "" +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "" @@ -111,23 +105,23 @@ msgstr "කේත ලේඛක:" msgid "Author: " msgstr "ලේඛක:" -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "පරාමිතීන්" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "" @@ -156,12 +150,12 @@ msgstr "" msgid "%s (C variable)" msgstr "" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "ක්‍රියාව" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "සාමාජික" @@ -169,7 +163,7 @@ msgstr "සාමාජික" msgid "macro" msgstr "මැක්‍රෝ" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "වර්ගය" @@ -177,63 +171,72 @@ msgstr "වර්ගය" msgid "variable" msgstr "විචල්‍යය" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "" @@ -248,7 +251,7 @@ msgstr "" msgid "%s (global variable or constant)" msgstr "" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "" @@ -257,116 +260,116 @@ msgstr "" msgid "Arguments" msgstr "" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "දත්ත" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "විචල්‍ය" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr "" @@ -388,120 +391,147 @@ msgstr "" msgid "role" msgstr "" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "සෙවුම් පිටුව" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" +msgid "see %s" +msgstr "%s බලන්න" + +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "%s ද බලන්න" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "සංකේත" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" msgstr "" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "[graph: %s]" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "[graph]" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "(%s හි%s)" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[source]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "කිරීමට තිබෙන" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[docs]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "" @@ -582,7 +612,7 @@ msgstr "" msgid "Table Of Contents" msgstr "පටුන" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -640,15 +670,15 @@ msgstr "" msgid "all functions, classes, terms" msgstr "" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "" @@ -664,35 +694,35 @@ msgstr "විශාල විය හැක" msgid "Navigation" msgstr "ගමන් කිරීම" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "මෙම ලේඛණ ගැන" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." +msgid "© Copyright %(copyright)s." msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "" -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -741,13 +771,13 @@ msgstr "සොයන්න" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "සෙවුම් ප්‍රතිඵල" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -764,12 +794,12 @@ msgstr "මෙම පිටුව" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 @@ -789,12 +819,13 @@ msgstr "C API වෙනස්කම්" msgid "Other changes" msgstr "වෙනත් වෙනස්කම්" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "" @@ -810,12 +841,12 @@ msgstr "සොයමින්..." msgid "Preparing search..." msgstr "සෙවුම සූදානම් කරමින්...." -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr "" @@ -832,48 +863,53 @@ msgstr "" msgid "Contents" msgstr "අන්තර්ගතය" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "නිකුත් කිරීම" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "[image: %s]" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[image]" diff --git a/sphinx/locale/sk/LC_MESSAGES/sphinx.js b/sphinx/locale/sk/LC_MESSAGES/sphinx.js index 30ef2aba6..0ca4ad44c 100644 --- a/sphinx/locale/sk/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/sk/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "sk", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", v ", "About these documents": "O t\u00fdchto dokumentoch", "Automatically generated list of changes in version %(version)s": "Automaticky generovan\u00fd zoznam zmien vo verzii %(version)s", "C API changes": "Zmeny API C", "Changes in Version %(version)s — %(docstitle)s": "Zmeny vo verzii %(version)s — %(docstitle)s", "Collapse sidebar": "Zbali\u0165 bo\u010dn\u00fd panel", "Complete Table of Contents": "Celkov\u00fd obsah", "Contents": "Obsah", "Copyright": "Autorsk\u00e9 pr\u00e1vo", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Vytvoren\u00e9 pomocou <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Rozbali\u0165 bo\u010dn\u00fd panel", "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.": "Tu m\u00f4\u017eete h\u013eada\u0165 v tejto dokument\u00e1cii. Zadajte h\u013eadan\u00e9 slov\u00e1\ndo pol\u00ed\u010dka ni\u017e\u0161ie a kliknite na \"h\u013eada\u0165\". Pam\u00e4tajte, \u017ee funkcia\nh\u013eadania bude automaticky h\u013eada\u0165 v\u0161etky slov\u00e1. Strany, ktor\u00e9\nobsahuj\u00fa len niektor\u00e9 zo slov, nebud\u00fa v zozname v\u00fdsledkov.", "Full index on one page": "Cel\u00fd index na jednej strane", "General Index": "V\u0161eobecn\u00fd index", "Global Module Index": "Celkov\u00fd index modulov", "Go": "OK", "Hide Search Matches": "Skry\u0165 v\u00fdsledky h\u013eadania", "Index": "Index", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "Indexov\u00e9 str\u00e1nky po p\u00edsmen\u00e1ch", "Indices and tables:": "Indexy a tabu\u013eky", "Last updated on %(last_updated)s.": "Naposledy aktualizovan\u00e9 %(last_updated)s.", "Library changes": "Zmeny kni\u017enice", "Navigation": "Navig\u00e1cia", "Next topic": "\u010eal\u0161ia t\u00e9ma", "Other changes": "Ostatn\u00e9 zmeny", "Overview": "Preh\u013ead", "Permalink to this definition": "Trval\u00fd odkaz na t\u00fato defin\u00edciu", "Permalink to this headline": "Trval\u00fd odkaz na tento nadpis", "Please activate JavaScript to enable the search\n functionality.": "Pros\u00edm, na zapnutie funkcie h\u013eadania,aktivujte\nJavaScript .", "Preparing search...": "Pr\u00edprava h\u013eadania...", "Previous topic": "Predo\u0161l\u00e1 t\u00e9ma", "Quick search": "R\u00fdchle h\u013eadanie", "Search": "H\u013eada\u0165", "Search Page": "Str\u00e1nka h\u013eadania", "Search Results": "V\u00fdsledky h\u013eadania", "Search finished, found %s page(s) matching the search query.": "H\u013eadanie dokon\u010den\u00e9, n\u00e1jden\u00e9 %s strana(y), ktor\u00e9 vyhovuj\u00fa h\u013eadan\u00e9mu v\u00fdrazu.", "Search within %(docstitle)s": "H\u013eada\u0165 v %(docstitle)s", "Searching": "H\u013eadanie", "Show Source": "Zobrazi\u0165 zdroj", "Table Of Contents": "Obsah", "This Page": "T\u00e1to str\u00e1nka", "Welcome! This is": "Vitajte! Toto je", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "V\u00e1\u0161mu h\u013eadaniu nezodpoved\u00e1 \u017eiadny dokument. Pros\u00edm, skontrolujte, \u017ee v\u0161etky zadan\u00e9 slov\u00e1 s\u00fa spr\u00e1vne nap\u00edsan\u00e9 a \u017ee ste zvolili vhodn\u00e9 kateg\u00f3rie.", "all functions, classes, terms": "v\u0161etky funkcie, triedy, term\u00edny", "can be huge": "m\u00f4\u017ee by\u0165 rozsiahle", "last updated": "posledn\u00e1 aktualiz\u00e1cia", "lists all sections and subsections": "zoznam v\u0161etk\u00fdch sekci\u00ed a podsekci\u00ed", "next chapter": "\u010fal\u0161ia kapitola", "previous chapter": "predo\u0161l\u00e1 kapitola", "quick access to all modules": "r\u00fdchly pr\u00edstup ku v\u0161etk\u00fdm modulom", "search": "h\u013eada\u0165", "search this documentation": "h\u013eada\u0165 v tejto dokument\u00e1cii", "the documentation for": "dokument\u00e1cia"}, "plural_expr": "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2"}); \ No newline at end of file +Documentation.addTranslations({"locale": "sk", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", v ", "About these documents": "O dokument\u00e1cii", "Automatically generated list of changes in version %(version)s": "Automaticky generovan\u00fd zoznam zmien vo verzii %(version)s", "C API changes": "Zmeny API C", "Changes in Version %(version)s — %(docstitle)s": "Zmeny vo verzii %(version)s — %(docstitle)s", "Collapse sidebar": "Zbali\u0165 bo\u010dn\u00fd panel", "Complete Table of Contents": "Celkov\u00fd obsah", "Contents": "Obsah", "Copyright": "Autorsk\u00e9 pr\u00e1vo", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Vytvoren\u00e9 pomocou <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Rozbali\u0165 bo\u010dn\u00fd panel", "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.": "Tu m\u00f4\u017eete h\u013eada\u0165 v tejto dokument\u00e1cii. Zadajte h\u013eadan\u00e9 slov\u00e1\ndo pol\u00ed\u010dka ni\u017e\u0161ie a kliknite na \"h\u013eada\u0165\". Pam\u00e4tajte, \u017ee funkcia\nh\u013eadania bude automaticky h\u013eada\u0165 v\u0161etky slov\u00e1. Strany, ktor\u00e9\nobsahuj\u00fa len niektor\u00e9 zo slov, nebud\u00fa v zozname v\u00fdsledkov.", "Full index on one page": "Cel\u00fd index na jednej strane", "General Index": "V\u0161eobecn\u00fd index", "Global Module Index": "Celkov\u00fd index modulov", "Go": "OK", "Hide Search Matches": "Skry\u0165 v\u00fdsledky h\u013eadania", "Index": "Index", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "Indexov\u00e9 str\u00e1nky po p\u00edsmen\u00e1ch", "Indices and tables:": "Indexy a tabu\u013eky", "Last updated on %(last_updated)s.": "Naposledy aktualizovan\u00e9 %(last_updated)s.", "Library changes": "Zmeny kni\u017enice", "Navigation": "Navig\u00e1cia", "Next topic": "\u010eal\u0161ia t\u00e9ma", "Other changes": "Ostatn\u00e9 zmeny", "Overview": "Preh\u013ead", "Permalink to this definition": "Trval\u00fd odkaz na t\u00fato defin\u00edciu", "Permalink to this headline": "Trval\u00fd odkaz na tento nadpis", "Please activate JavaScript to enable the search\n functionality.": "Pros\u00edm, na zapnutie funkcie h\u013eadania,aktivujte\nJavaScript .", "Preparing search...": "Pr\u00edprava h\u013eadania...", "Previous topic": "Predo\u0161l\u00e1 t\u00e9ma", "Quick search": "R\u00fdchle h\u013eadanie", "Search": "H\u013eada\u0165", "Search Page": "Str\u00e1nka h\u013eadania", "Search Results": "V\u00fdsledky h\u013eadania", "Search finished, found %s page(s) matching the search query.": "H\u013eadanie dokon\u010den\u00e9, n\u00e1jden\u00e9 %s strana(y), ktor\u00e9 vyhovuj\u00fa h\u013eadan\u00e9mu v\u00fdrazu.", "Search within %(docstitle)s": "H\u013eada\u0165 v %(docstitle)s", "Searching": "H\u013eadanie", "Show Source": "Zobrazi\u0165 zdroj", "Table Of Contents": "Obsah", "This Page": "T\u00e1to str\u00e1nka", "Welcome! This is": "Vitajte! Toto je", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "V\u00e1\u0161mu h\u013eadaniu nezodpoved\u00e1 \u017eiadny dokument. Pros\u00edm, skontrolujte, \u017ee v\u0161etky zadan\u00e9 slov\u00e1 s\u00fa spr\u00e1vne nap\u00edsan\u00e9 a \u017ee ste zvolili vhodn\u00e9 kateg\u00f3rie.", "all functions, classes, terms": "v\u0161etky funkcie, triedy, term\u00edny", "can be huge": "m\u00f4\u017ee by\u0165 rozsiahle", "last updated": "posledn\u00e1 aktualiz\u00e1cia", "lists all sections and subsections": "zoznam v\u0161etk\u00fdch sekci\u00ed a podsekci\u00ed", "next chapter": "\u010fal\u0161ia kapitola", "previous chapter": "predo\u0161l\u00e1 kapitola", "quick access to all modules": "r\u00fdchly pr\u00edstup ku v\u0161etk\u00fdm modulom", "search": "h\u013eada\u0165", "search this documentation": "h\u013eada\u0165 v tejto dokument\u00e1cii", "the documentation for": "dokument\u00e1cia"}, "plural_expr": "(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2"}); \ No newline at end of file diff --git a/sphinx/locale/sk/LC_MESSAGES/sphinx.mo b/sphinx/locale/sk/LC_MESSAGES/sphinx.mo index 9cbffc96dac6b51e720c04e596064c093991a5b8..fb04101f3352ef30262225598854421b462861ab 100644 GIT binary patch delta 3885 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 Y_`=5rM-Mne8Ve1?orG$Bx;8iKzfY3}tpET3 delta 3450 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 diff --git a/sphinx/locale/sk/LC_MESSAGES/sphinx.po b/sphinx/locale/sk/LC_MESSAGES/sphinx.po index d685b82be..9b3087439 100644 --- a/sphinx/locale/sk/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/sk/LC_MESSAGES/sphinx.po @@ -5,65 +5,47 @@ # Translators: # FIRST AUTHOR <EMAIL@ADDRESS>, 2008 # Slavko <linux@slavino.sk>, 2013-2016 +# Takeshi KOMIYA <i.tkomiya@gmail.com>, 2016 msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 15:33+0000\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 15:22+0000\n" "Last-Translator: Slavko <linux@slavino.sk>\n" "Language-Team: Slovak (http://www.transifex.com/sphinx-doc/sphinx-1/language/sk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: sk\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "Sekcia %s" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "Obr. %s" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "Tabuľka %s" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "Výpis %s" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "Dokumentácia %s %s" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "viď %s" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "viď aj %s" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "Symboly" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python Enhancement Proposals; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "dd. MMMM YYYY" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "Zabudované funkcie" @@ -72,9 +54,12 @@ msgstr "Zabudované funkcie" msgid "Module level" msgstr "Úroveň modulu" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" -msgstr "dd. MMM YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" +msgstr "%d. %b %Y" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 msgid "General Index" @@ -84,18 +69,28 @@ msgstr "Všeobecný index" msgid "index" msgstr "index" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "ďalší" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "predošlý" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "Dokumentácia %s %s" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr "(v" +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "Neplatný popis: %s" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "Autor sekcie:" @@ -112,23 +107,23 @@ msgstr "Autor kódu:" msgid "Author: " msgstr "Autor:" -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Parametre" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "Vracia" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "Návratový typ" @@ -157,12 +152,12 @@ msgstr "%s (typ C)" msgid "%s (C variable)" msgstr "%s (premenná C)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "funkcia" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "člen" @@ -170,7 +165,7 @@ msgstr "člen" msgid "macro" msgstr "makro" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "typ" @@ -178,63 +173,72 @@ msgstr "typ" msgid "variable" msgstr "premenná" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "Parametre šablóny" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "Vyvoláva" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (typ C++)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "%s (koncept C++)" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (člen C++)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (funkcia C++)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (trieda C++)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "%s (enum C++)" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "%s (enumerátor C++)" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "trieda" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "koncept" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "enum" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "enumerátor" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (zabudovaná funkcia)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (metóda %s)" @@ -249,7 +253,7 @@ msgstr "%s() (trieda)" msgid "%s (global variable or constant)" msgstr "%s (globálna premenná alebo konštanta)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (atribút %s)" @@ -258,116 +262,116 @@ msgstr "%s (atribút %s)" msgid "Arguments" msgstr "Argumenty" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "dáta" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "atribút" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "Premenné" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "Vyzdvihuje" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (v module %s)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (zabudovaná premenná)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (v module %s)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (zabudovaná trieda)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (trieda v %s)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (metóda %s.%s)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (statická metóda %s.%s)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (statická metóda %s)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "%s() (metóda triedy %s.%s)" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "%s() (metóda triedy %s)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (atribút %s.%s)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (modul)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "Index modulov Python" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "moduly" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "Zastarané" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "výnimka" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "metóda" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "metóda triedy" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "statická metóda" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "modul" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr " (zastarané)" @@ -389,120 +393,147 @@ msgstr "direktíva" msgid "role" msgstr "rola" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "premenná prostredia; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%s voľba príkazového riadka; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "termín glosára" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "jazykový token" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "menovka odkazu" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "premenná prostredia" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "voľba programu" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "Index" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "Index modulov" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "Stránka hľadania" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" -msgstr " Základné: %s" +msgid "see %s" +msgstr "viď %s" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "viď aj %s" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "Symboly" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "Základ: %s" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "alias pre :class:`%s`" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "[graf: %s]" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "[graf]" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "Trvalý odkaz na tento vzorec" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "(v %s v%s)" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[zdroj]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "duplicitná menovka vzorca %s, ďalší výskyt v %s" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "ToDo" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "<<pôvodná položka>>" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "(<<original entry>> je umiestnená v %s, riadok %d.)" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "pôvodná položka" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[dokumenty]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "Kód modulu" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "<h1>Zdrojový kód %s</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "Prehľad: kód modulu" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "<h1>Všetky moduly, pre ktoré je dostupný kód</h1>" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "Argumenty kľúčových slov" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "Výstraha" @@ -583,7 +614,7 @@ msgstr "zabudovaná funkcia" msgid "Table Of Contents" msgstr "Obsah" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -641,15 +672,15 @@ msgstr "rýchly prístup ku všetkým modulom" msgid "all functions, classes, terms" msgstr "všetky funkcie, triedy, termíny" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Index – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "Celý index na jednej strane" @@ -665,35 +696,35 @@ msgstr "môže byť rozsiahle" msgid "Navigation" msgstr "Navigácia" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "Hľadať v %(docstitle)s" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" -msgstr "O týchto dokumentoch" +msgstr "O dokumentácii" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "Autorské právo" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Copyright %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "© Copyright %(copyright)s." -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Naposledy aktualizované %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -742,13 +773,13 @@ msgstr "hľadať" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "Výsledky hľadania" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -765,13 +796,13 @@ msgstr "Táto stránka" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "Zmeny vo verzii %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "Zmeny vo verzii %(version)s — %(docstitle)s" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "%(filename)s — %(docstitle)s" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -790,12 +821,13 @@ msgstr "Zmeny API C" msgid "Other changes" msgstr "Ostatné zmeny" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "Trvalý odkaz na tento nadpis" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "Trvalý odkaz na túto definíciu" @@ -811,12 +843,12 @@ msgstr "Hľadanie" msgid "Preparing search..." msgstr "Príprava hľadania..." -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "Hľadanie dokončené, nájdené %s strana(y), ktoré vyhovujú hľadanému výrazu." -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr ", v " @@ -833,48 +865,53 @@ msgstr "Zbaliť bočný panel" msgid "Contents" msgstr "Obsah" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "Trvalý odkaz na tento kód" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "Trvalý odkaz na tento obrázok" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "Trvalý odkaz na tento obsah" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "Trvalý odkaz na túto tabuľku" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "Vydanie" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "strana" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "Neznámy konfiguračný kľúč: latex_elements[%r] je ignorovaný." + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "Poznámky pod čiarou" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "pokračovanie z predošlej strany" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "Pokračovanie na ďalšej strane" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "[obrázok: %s]" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[obrázok]" diff --git a/sphinx/locale/sl/LC_MESSAGES/sphinx.js b/sphinx/locale/sl/LC_MESSAGES/sphinx.js index 7ffb79d00..38f89c332 100644 --- a/sphinx/locale/sl/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/sl/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "sl", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Vse pravice pridr\u017eane</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Vse pravice pridr\u017eane %(copyright)s.", ", in ": "", "About these documents": "O dokumentih", "Automatically generated list of changes in version %(version)s": "Avtomatsko generiran seznam sprememb v verziji %(version)s", "C API changes": "C API spremembe", "Changes in Version %(version)s — %(docstitle)s": "Spremembe v Verziji %(version)s — %(docstitle)s", "Collapse sidebar": "", "Complete Table of Contents": "Popoln Seznam Vsebine", "Contents": "", "Copyright": "Vse pravice pridr\u017eane", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Narejeno s <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand 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.": "Tukaj lahko i\u0161\u010dete dokumente. Vnesite iskalni\n niz v polje spodaj in pritisnite \"i\u0161\u010di\". Spro\u017eeno iskanje\n bo iskalo po vseh besedah v iskalnem nizu. Strani, ki ne\n vsebujejo vseh besed ne bodo prikazane na seznamu rezultatov.", "Full index on one page": "Poln indeks na eni strani", "General Index": "Splo\u0161ni abecedni seznam", "Global Module Index": "Splo\u0161en seznam modulov", "Go": "Potrdi", "Hide Search Matches": "Skrij resultate iskanja", "Index": "Abecedni seznam", "Index – %(key)s": "Seznam – %(key)s", "Index pages by letter": "Indeksiraj strani po \u010drki", "Indices and tables:": "Kazalo in seznami:", "Last updated on %(last_updated)s.": "Zadnji\u010d posodobljeno %(last_updated)s.", "Library changes": "Spremembe knji\u017enice", "Navigation": "Navigacija", "Next topic": "Naslednja tema", "Other changes": "Ostale spremembe", "Overview": "Pregled", "Permalink to this definition": "Povezava na to definicijo", "Permalink to this headline": "Povezava na naslov", "Please activate JavaScript to enable the search\n functionality.": "Za pravilno delovanje Iskanja morete vklopiti\n JavaScript.", "Preparing search...": "", "Previous topic": "Prej\u0161nja tema", "Quick search": "Hitro iskanje", "Search": "I\u0161\u010di", "Search Page": "Iskalnik", "Search Results": "Rezultati Iskanja", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "I\u0161\u010di med %(docstitle)s", "Searching": "", "Show Source": "Prika\u017ei izvorno kodo", "Table Of Contents": "Seznam Vsebine", "This Page": "Trenutna stran", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "vse funkcije, razredi, izrazi", "can be huge": "lahko je veliko", "last updated": "", "lists all sections and subsections": "prikazi vse sekcije in podsekcije", "next chapter": "naslednje poglavje", "previous chapter": "prej\u0161nje poglavje", "quick access to all modules": "hiter dostop do vseh modulov", "search": "i\u0161\u010di", "search this documentation": "i\u0161\u010di po dokumentaciji", "the documentation for": ""}, "plural_expr": "(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3)"}); \ No newline at end of file +Documentation.addTranslations({"locale": "sl", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "O dokumentih", "Automatically generated list of changes in version %(version)s": "Avtomatsko generiran seznam sprememb v verziji %(version)s", "C API changes": "C API spremembe", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "Popoln Seznam Vsebine", "Contents": "", "Copyright": "Vse pravice pridr\u017eane", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Narejeno s <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand 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.": "Tukaj lahko i\u0161\u010dete dokumente. Vnesite iskalni\n niz v polje spodaj in pritisnite \"i\u0161\u010di\". Spro\u017eeno iskanje\n bo iskalo po vseh besedah v iskalnem nizu. Strani, ki ne\n vsebujejo vseh besed ne bodo prikazane na seznamu rezultatov.", "Full index on one page": "Poln indeks na eni strani", "General Index": "Splo\u0161ni abecedni seznam", "Global Module Index": "Splo\u0161en seznam modulov", "Go": "Potrdi", "Hide Search Matches": "Skrij resultate iskanja", "Index": "Abecedni seznam", "Index – %(key)s": "Seznam – %(key)s", "Index pages by letter": "Indeksiraj strani po \u010drki", "Indices and tables:": "Kazalo in seznami:", "Last updated on %(last_updated)s.": "Zadnji\u010d posodobljeno %(last_updated)s.", "Library changes": "Spremembe knji\u017enice", "Navigation": "Navigacija", "Next topic": "Naslednja tema", "Other changes": "Ostale spremembe", "Overview": "Pregled", "Permalink to this definition": "Povezava na to definicijo", "Permalink to this headline": "Povezava na naslov", "Please activate JavaScript to enable the search\n functionality.": "Za pravilno delovanje Iskanja morete vklopiti\n JavaScript.", "Preparing search...": "", "Previous topic": "Prej\u0161nja tema", "Quick search": "Hitro iskanje", "Search": "I\u0161\u010di", "Search Page": "Iskalnik", "Search Results": "Rezultati Iskanja", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "I\u0161\u010di med %(docstitle)s", "Searching": "", "Show Source": "Prika\u017ei izvorno kodo", "Table Of Contents": "Seznam Vsebine", "This Page": "Trenutna stran", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "vse funkcije, razredi, izrazi", "can be huge": "lahko je veliko", "last updated": "", "lists all sections and subsections": "prikazi vse sekcije in podsekcije", "next chapter": "naslednje poglavje", "previous chapter": "prej\u0161nje poglavje", "quick access to all modules": "hiter dostop do vseh modulov", "search": "i\u0161\u010di", "search this documentation": "i\u0161\u010di po dokumentaciji", "the documentation for": ""}, "plural_expr": "(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3)"}); \ No newline at end of file diff --git a/sphinx/locale/sl/LC_MESSAGES/sphinx.mo b/sphinx/locale/sl/LC_MESSAGES/sphinx.mo index f983fa45b1e600d08a31bd64ad61eeabc54fd5f4..601a2b3e964a5d39ee1ae9a94b43ffbc8a0d04f5 100644 GIT binary patch delta 3929 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 XXJ74)egEEBU0w6{JD(+W@B01)vnvJ9 delta 3641 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 S)%fT6ycYvSu`%PieSZO1Uc|5f diff --git a/sphinx/locale/sl/LC_MESSAGES/sphinx.po b/sphinx/locale/sl/LC_MESSAGES/sphinx.po index 4fcc8f7f3..e1cee602e 100644 --- a/sphinx/locale/sl/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/sl/LC_MESSAGES/sphinx.po @@ -7,61 +7,42 @@ msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Slovenian (http://www.transifex.com/sphinx-doc/sphinx-1/language/sl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: sl\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python Enhancement Proposals; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "Vgrajeni deli" @@ -70,8 +51,11 @@ msgstr "Vgrajeni deli" msgid "Module level" msgstr "Nivo modula" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -82,18 +66,28 @@ msgstr "Splošni abecedni seznam" msgid "index" msgstr "abecedni seznam" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "naprej" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "nazaj" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr " (v " +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "Avtor sekcije: " @@ -110,23 +104,23 @@ msgstr "" msgid "Author: " msgstr "Avtor: " -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Parametri" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "Vrne" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "Vrne tip" @@ -155,12 +149,12 @@ msgstr "%s (C tip)" msgid "%s (C variable)" msgstr "%s (C spremenljivka)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "funkcija" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "član" @@ -168,7 +162,7 @@ msgstr "član" msgid "macro" msgstr "" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "tip" @@ -176,63 +170,72 @@ msgstr "tip" msgid "variable" msgstr "" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (C++ tip)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (C++ član)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (C++ funkcija)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (C++ razred)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "razred" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (vgrajene funkcije)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (%s metoda)" @@ -247,7 +250,7 @@ msgstr "%s() (razred)" msgid "%s (global variable or constant)" msgstr "" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (%s atribut)" @@ -256,116 +259,116 @@ msgstr "%s (%s atribut)" msgid "Arguments" msgstr "" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "atribut" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "Sproži izjemo" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (v modulu %s)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (vgrajene spremenljivke)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (v modulu %s)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (vgrajen razred)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (razred v %s)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (%s.%s metoda)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (%s.%s statična metoda)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (%s statična metoda)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (%s.%s atribut)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (modul)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "Moduli" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "Zastarelo" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "izjema" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "statična metoda" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "modul" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr " (zastarelo)" @@ -387,120 +390,147 @@ msgstr "" msgid "role" msgstr "" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "okoljska spremenljivka; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%scommand line parameter; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "okoljska spremenljivka" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "Abecedni seznam" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "Seznam modulov" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "Iskalnik" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" -msgstr " Baza: %s" +msgid "see %s" +msgstr "" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "vzdevek za :class:`%s`" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "Todo" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "Pozor" @@ -581,7 +611,7 @@ msgstr "vgrajene funkcije" msgid "Table Of Contents" msgstr "Seznam Vsebine" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -639,15 +669,15 @@ msgstr "hiter dostop do vseh modulov" msgid "all functions, classes, terms" msgstr "vse funkcije, razredi, izrazi" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Seznam – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "Poln indeks na eni strani" @@ -663,35 +693,35 @@ msgstr "lahko je veliko" msgid "Navigation" msgstr "Navigacija" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "Išči med %(docstitle)s" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "O dokumentih" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "Vse pravice pridržane" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">Vse pravice pridržane</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Vse pravice pridržane %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Zadnjič posodobljeno %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -740,13 +770,13 @@ msgstr "išči" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "Rezultati Iskanja" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -763,13 +793,13 @@ msgstr "Trenutna stran" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "Spremembe v Verziji %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -788,12 +818,13 @@ msgstr "C API spremembe" msgid "Other changes" msgstr "Ostale spremembe" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "Povezava na naslov" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "Povezava na to definicijo" @@ -809,12 +840,12 @@ msgstr "" msgid "Preparing search..." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr "" @@ -831,48 +862,53 @@ msgstr "" msgid "Contents" msgstr "" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "Izdaja" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "Opombe" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "nadaljevanje iz prejšnje strani" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "Nadaljevanje na naslednji strani" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[slika]" diff --git a/sphinx/locale/sv/LC_MESSAGES/sphinx.js b/sphinx/locale/sv/LC_MESSAGES/sphinx.js index f359e237a..597c6869f 100644 --- a/sphinx/locale/sv/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/sv/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "sv", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": "", "About these documents": "Om dessa dokument", "Automatically generated list of changes in version %(version)s": "Automatiskt genererad lista \u00f6ver f\u00f6r\u00e4ndringar i version %(version)s", "C API changes": "F\u00f6r\u00e4ndringar i C-API", "Changes in Version %(version)s — %(docstitle)s": "F\u00f6r\u00e4ndringar i Version %(version)s — %(docstitle)s", "Collapse sidebar": "D\u00f6lj sidolist", "Complete Table of Contents": "Komplett Inneh\u00e5llsf\u00f6rteckning", "Contents": "Inneh\u00e5ll", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Skapad med <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Expandera sidolist", "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.": "H\u00e4r kan du s\u00f6ka bland dessa dokument. Ange s\u00f6kord nedan och klicka \"s\u00f6k\".\n S\u00f6kningen m\u00e5ste tr\u00e4ffa p\u00e5 samtliga angivna s\u00f6kord.", "Full index on one page": "Hela inneh\u00e5llsf\u00f6rteckningen p\u00e5 en sida", "General Index": "Huvudindex", "Global Module Index": "Global Modulindex", "Go": "G\u00e5", "Hide Search Matches": "D\u00f6lj S\u00f6kresultat", "Index": "Index", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "Inneh\u00e5llsf\u00f6rteckning per inledande bokstav", "Indices and tables:": "Index och tabeller", "Last updated on %(last_updated)s.": "Senast uppdaterad %(last_updated)s.", "Library changes": "F\u00f6r\u00e4ndringar i bibliotek", "Navigation": "Navigation", "Next topic": "N\u00e4sta titel", "Other changes": "\u00d6vriga f\u00f6r\u00e4ndringar", "Overview": "\u00d6versikt", "Permalink to this definition": "Permalink till denna definition", "Permalink to this headline": "Permalink till denna rubrik", "Please activate JavaScript to enable the search\n functionality.": "Var god aktivera JavaScript f\u00f6r s\u00f6kfunktionalitet.", "Preparing search...": "", "Previous topic": "F\u00f6reg\u00e5ende titel", "Quick search": "Snabbs\u00f6k", "Search": "S\u00f6k", "Search Page": "S\u00f6ksida", "Search Results": "S\u00f6kresultat", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "S\u00f6k bland %(docstitle)s", "Searching": "", "Show Source": "Visa k\u00e4llfil", "Table Of Contents": "Inneh\u00e5llsf\u00f6rteckning", "This Page": "Denna Sida", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "alla funktioner, klasser, villkor", "can be huge": "kan bli stort", "last updated": "", "lists all sections and subsections": "lista \u00f6ver alla paragrafer och underparagrafer", "next chapter": "N\u00e4sta kapitel", "previous chapter": "F\u00f6reg\u00e5ende kapitel", "quick access to all modules": "genv\u00e4g till alla moduler", "search": "s\u00f6k", "search this documentation": "s\u00f6k i det h\u00e4r dokumentet", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file +Documentation.addTranslations({"locale": "sv", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "Om dessa dokument", "Automatically generated list of changes in version %(version)s": "Automatiskt genererad lista \u00f6ver f\u00f6r\u00e4ndringar i version %(version)s", "C API changes": "F\u00f6r\u00e4ndringar i C-API", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "D\u00f6lj sidolist", "Complete Table of Contents": "Komplett Inneh\u00e5llsf\u00f6rteckning", "Contents": "Inneh\u00e5ll", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Skapad med <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Expandera sidolist", "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.": "H\u00e4r kan du s\u00f6ka bland dessa dokument. Ange s\u00f6kord nedan och klicka \"s\u00f6k\".\n S\u00f6kningen m\u00e5ste tr\u00e4ffa p\u00e5 samtliga angivna s\u00f6kord.", "Full index on one page": "Hela inneh\u00e5llsf\u00f6rteckningen p\u00e5 en sida", "General Index": "Huvudindex", "Global Module Index": "Global Modulindex", "Go": "G\u00e5", "Hide Search Matches": "D\u00f6lj S\u00f6kresultat", "Index": "Index", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "Inneh\u00e5llsf\u00f6rteckning per inledande bokstav", "Indices and tables:": "Index och tabeller", "Last updated on %(last_updated)s.": "Senast uppdaterad %(last_updated)s.", "Library changes": "F\u00f6r\u00e4ndringar i bibliotek", "Navigation": "Navigation", "Next topic": "N\u00e4sta titel", "Other changes": "\u00d6vriga f\u00f6r\u00e4ndringar", "Overview": "\u00d6versikt", "Permalink to this definition": "Permalink till denna definition", "Permalink to this headline": "Permalink till denna rubrik", "Please activate JavaScript to enable the search\n functionality.": "Var god aktivera JavaScript f\u00f6r s\u00f6kfunktionalitet.", "Preparing search...": "", "Previous topic": "F\u00f6reg\u00e5ende titel", "Quick search": "Snabbs\u00f6k", "Search": "S\u00f6k", "Search Page": "S\u00f6ksida", "Search Results": "S\u00f6kresultat", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "S\u00f6k bland %(docstitle)s", "Searching": "", "Show Source": "Visa k\u00e4llfil", "Table Of Contents": "Inneh\u00e5llsf\u00f6rteckning", "This Page": "Denna Sida", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "alla funktioner, klasser, villkor", "can be huge": "kan bli stort", "last updated": "", "lists all sections and subsections": "lista \u00f6ver alla paragrafer och underparagrafer", "next chapter": "N\u00e4sta kapitel", "previous chapter": "F\u00f6reg\u00e5ende kapitel", "quick access to all modules": "genv\u00e4g till alla moduler", "search": "s\u00f6k", "search this documentation": "s\u00f6k i det h\u00e4r dokumentet", "the documentation for": ""}, "plural_expr": "(n != 1)"}); \ No newline at end of file diff --git a/sphinx/locale/sv/LC_MESSAGES/sphinx.mo b/sphinx/locale/sv/LC_MESSAGES/sphinx.mo index a85277178367fa8731b3a9ac5def838970c71dd4..ab02247f7a2980e00fc6ead5bc2f777ce4c71d33 100644 GIT binary patch delta 3909 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 LgE&$BE8o8XP3!YS delta 3516 zcmaLX3rv+|9LMqJAc`R%%JG6g90Y-*s2nj&BsDh8RB9?l&U8D87rcNwM=WohrFQW) z)3*zox>}^UsbhM|rJI*hQp+@LmKmCoPM5Z{6t~i??~n6jTU)Wi`8?0_K9~RVf1dZ8 zeCF=h(1niCZyEj$@Sn=RyNzo9{Kdr?!^gz)6_4GpHRfV>>|^U=Fo}9OcEDNa#wFMu z*CQYEK3|%r9@`lcGW#f~!!b<2?`?-`s0o`<6UH)1{ZdgA<ng8FMc5gi!bF^knrA+G z@D<efEy#lA6MP5{V`tVkCn#v(73_k|n2ZU`q6KoX8x~_%EJtE8bM5mbsQ&A)5Vv7E zHemrq5w#XBL}ji7JK_k;XMHn~LJF?NPPi2n;eP8;Y)kz#4#ppBy&F*ztI5O|^r6NN z#QylSeZCy|nDu;VBXy|x_G3t?J3>JVUcgekhPnoY<SiB-Lj^bjwSx*|b7m%L;RUGi zFQai8vkEouYPP8W>rk28iBZ^K>qk41|7aQ-Y0w0hPzzi~?c|m<hS8cJjjs&!AxSXf zPytRs9Z3~x!9}*d0@d$r)Ddj4?YmIp4kVF(1^tC>Xha2c6*bWfRI2_!1=NZwt%1p? z9cH24nn9@4K8w0TLF+2i-KfJ7+=oonGMO^y4l!#Mg-q0g5vZL!hdP2vREp=KcJQLD zFSpNEBXb(ZKHrL(_#-UFL#U%uw90TQa=IoPwXx6u3YvH*YN65gK^ZDDlTd+Gqb68} z3TzFw!Z%SFtF_NJq2~DzwNO2-#Dl1Dqezd|8;kS{naQ?cTBN}QP?0S}?Q9vQVJ#|v z-KfA0q9!_xx-%D0nY)ZSl3S?25_o4dE(ujnLmgpvbnE@^O@WUo;Y%GSq5_zTx&u|# z#i)f=qIUQOYQb96FX3kU{3vRtC#+|zji_-yp#r&%aeDu6+79<o3rBNfbcXS$j;W~j z3{*;c+UJ8%XFC#g%cr6G&qoEY2>F<$w!RUSu{zX7>oKGq?xDavF-K4noJTF#gkSMK zUq=PBht<^oDC+FLMeY0?Dl_*{ccm5iSD;-`^;}ed#i)#pM$I!JmHg{0rrQny)Iv*b zhjpk4-bI~x7&TD?YN9j9PlRbgZQzc5-i`~S1yV2*y{K`esP!hHGB6{J{OghhY=_s7 zdt=_Q)}t0Uf_lHt+4eiA0OB8x1lA2XJ(GupI1JNqF&5xPRO-J*WvUTd0uNE}(r^dK zvPox@b~+Gs1fx(pDML;0JPyYy`}||%%`*E@m+K5Fkn>oC&8Q9fJdw-}N1DudR0cvd z6gV~$vJD$>B=yaxyKobAneL!6a}Ra)ZhnWggRZEBd!Yg@z!g}G+Suo)l;1>c>`&DA zcrFg(L#6`-EtG|t$csvm4|S#kFb_*n3ob;R=^E6L>_jba9Cak$p)z*aw*Q8@jQ4GO z0)y2*wZ)JzITVzley9naK&7S(mD<U+UV}<)2sJ^ieO`x3>0VSO&!IBaY)#0D9BnrC zr+p~uQrBQd);B9C@G%?tQi?uB1@H|jBj>GGP$~We6+kmaqpL?GGi^}MlTjP#j>Xs) z75Hq_ysw}FSc@SIsH32iZAUG*7uEh5Dg$4l1~g&I!l*mp%8mrk7Bz9awF_#V3{>j9 zxDt!74K|=I^YLuXUmefdhKs2B4O9TPQ32dX?u~KhMA{2c0S!R~J`P)>9~IzqBt{cJ zWvCW4-zHn%g6g*|hy3dYXEzPHTn)D4S?eY1�aJj#?->H?recRI1(B7c)@L$6y;Q zxAn=^3XGwBrhOg=QBVL2Y{To=mik)MFIFvT2U}4K?Lb}Dy{Mg^ME!1@NA<sp>L25c z7>9aGI-ml}L#4hSDiGgb3Yus*>UAr_RyY&eVig*X$5Y}DP7M}$dIX)tahdKp75?Ci zL7pDD71dLM^D5`fp6U%c`{Lenj-_RU*T!#fMNg@oyTIwwz93TAnZC%m*nW>wmsr-i zWo-Cf;=U;7$E3l@rKO&ViagH*{!A%<4{A<|yD8kY(_xo$wR3fNb(eCNbG@rK{A6-= zRJ;6w-uZ=|e!ikd9(5L`q?JVKzJj8BU$1=rVn_Rf^Lm#B{8ho({(04bB2SrrmVZIb ztV++g8I^M?7uL-3zu@;22Om_zr&3~ENxnY5*uQrh@K?0#w=p&2zxLbH8I~3dA4}Wu zul<I1ruTO_zj_`|9DZnb;LrzE6@kjC>HdJH(z%q_*=AsT#_TBPYUZf_$v}SA?eLHu Z+g(m`_N(DtITKw@CvX4oOWsqizX12fn-Ty3 diff --git a/sphinx/locale/sv/LC_MESSAGES/sphinx.po b/sphinx/locale/sv/LC_MESSAGES/sphinx.po index e95f3372d..7be638ca4 100644 --- a/sphinx/locale/sv/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/sv/LC_MESSAGES/sphinx.po @@ -7,61 +7,42 @@ msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Swedish (http://www.transifex.com/sphinx-doc/sphinx-1/language/sv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: sv\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "se %s" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "se även %s" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python Enhancement Proposals; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "Inbyggda" @@ -70,8 +51,11 @@ msgstr "Inbyggda" msgid "Module level" msgstr "Modulnivå" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -82,18 +66,28 @@ msgstr "Huvudindex" msgid "index" msgstr "index" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "nästa" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "föregående" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr "(i " +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "Sektionsförfattare" @@ -110,23 +104,23 @@ msgstr "Källkodsförfattare" msgid "Author: " msgstr "Upphovsman:" -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Parametrar" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "Returnerar" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "Returtyp" @@ -155,12 +149,12 @@ msgstr "%s (C-typ)" msgid "%s (C variable)" msgstr "%s (C-variabel)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "funktion" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "medlem" @@ -168,7 +162,7 @@ msgstr "medlem" msgid "macro" msgstr "makro" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "typ" @@ -176,63 +170,72 @@ msgstr "typ" msgid "variable" msgstr "variabel" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "Kastar" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (C++-typ)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (C++-medlem)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (C++-funktion)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (C++-klass)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "klass" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (inbyggd funktion)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (%s metod)" @@ -247,7 +250,7 @@ msgstr "%s() (klass)" msgid "%s (global variable or constant)" msgstr "%s (global variabel eller konstant)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (%s attribut)" @@ -256,116 +259,116 @@ msgstr "%s (%s attribut)" msgid "Arguments" msgstr "Argument" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "data" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "attribut" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "Variabler" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "Väcker" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (i modul %s)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (inbyggd variabel)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (i modul %s)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (inbyggd klass)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (klass i %s)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (%s.%s metod)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (%s.%s statisk metod)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (%s statisk metod)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "%s() (%s.%s klassmetod)" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "%s() (%s klassmetod)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (%s.%s attribut)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (modul)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "Python Modulindex" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "moduler" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "Ersatt" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "undantag" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "metod" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "klassmetod" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "statisk metod" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "modul" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr "" @@ -387,120 +390,147 @@ msgstr "direktiv" msgid "role" msgstr "roll" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "miljövariabel; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%skommandorad växel; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "ordlista" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "grammatisk token" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "referensetikett" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "miljövariabel" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "programväxel" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "Index" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "Modulindex" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "Söksida" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" -msgstr " Baserad: %s" +msgid "see %s" +msgstr "se %s" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "se även %s" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "alias för :class:`%s`" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[source]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "Att göra" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "ursprungsvärde" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[docs]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "Modulkällkod" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "<h1>Källkod för %s</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "Översikt: modulkällkod" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "<h1>Alla moduler där källkod finns</h1>" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "Uppmärksamma" @@ -581,7 +611,7 @@ msgstr "inbyggda funktioner" msgid "Table Of Contents" msgstr "Innehållsförteckning" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -639,15 +669,15 @@ msgstr "genväg till alla moduler" msgid "all functions, classes, terms" msgstr "alla funktioner, klasser, villkor" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Index – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "Hela innehållsförteckningen på en sida" @@ -663,35 +693,35 @@ msgstr "kan bli stort" msgid "Navigation" msgstr "Navigation" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "Sök bland %(docstitle)s" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "Om dessa dokument" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "Copyright" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Copyright %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Senast uppdaterad %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -740,13 +770,13 @@ msgstr "sök" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "Sökresultat" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -763,13 +793,13 @@ msgstr "Denna Sida" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "Förändringar i Version %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -788,12 +818,13 @@ msgstr "Förändringar i C-API" msgid "Other changes" msgstr "Övriga förändringar" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "Permalink till denna rubrik" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "Permalink till denna definition" @@ -809,12 +840,12 @@ msgstr "" msgid "Preparing search..." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr "" @@ -831,48 +862,53 @@ msgstr "Dölj sidolist" msgid "Contents" msgstr "Innehåll" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "Utgåva" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "Fotnoter" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "fortsättning från föregående sida" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "Fortsätter på nästa sida" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[image]" diff --git a/sphinx/locale/tr/LC_MESSAGES/sphinx.js b/sphinx/locale/tr/LC_MESSAGES/sphinx.js index c792c98e8..9859b2046 100644 --- a/sphinx/locale/tr/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/tr/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "tr", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", \u015funun i\u00e7inde:", "About these documents": "Bu belgeler hakk\u0131nda", "Automatically generated list of changes in version %(version)s": "%(version)s s\u00fcr\u00fcm\u00fcndeki de\u011fi\u015fikliklerin otomatik olarak \u00fcretilmi\u015f listesi", "C API changes": "C API'sindeki de\u011fi\u015fiklikler", "Changes in Version %(version)s — %(docstitle)s": "S\u00fcr\u00fcm %(version)s — %(docstitle)s i\u00e7indeki De\u011fi\u015fiklikler", "Collapse sidebar": "Yan \u00e7ubu\u011fu daralt", "Complete Table of Contents": "Ayr\u0131nt\u0131l\u0131 \u0130\u00e7indekiler Tablosu", "Contents": "\u0130\u00e7indekiler", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "<a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s ile olu\u015fturulmu\u015ftur.", "Expand sidebar": "Yan \u00e7ubu\u011fu geni\u015flet", "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.": "Burada belgeler i\u00e7inde arama yapabilirsiniz. Arad\u0131\u011f\u0131n\u0131z kelimeyi \na\u015fa\u011f\u0131daki kutuya yaz\u0131p \"ara\" d\u00fc\u011fmesine bas\u0131n\u0131z. Arama i\u015flevi \notomatik olarak b\u00fct\u00fcn kelimeleri arayacakt\u0131r. Eksik kelime i\u00e7eren \nsayfalar sonu\u00e7 listesinde g\u00f6r\u00fcnmez.", "Full index on one page": "B\u00fct\u00fcn dizin tek sayfada", "General Index": "Genel Dizin", "Global Module Index": "Global Mod\u00fcl Dizini", "Go": "Git", "Hide Search Matches": "Arama Sonu\u00e7lar\u0131n\u0131 Gizle", "Index": "Dizin", "Index – %(key)s": "Dizin – %(key)s", "Index pages by letter": "Harfe g\u00f6re dizin sayfalar\u0131", "Indices and tables:": "Dizinler ve tablolar", "Last updated on %(last_updated)s.": "Son g\u00fcncelleme: %(last_updated)s.", "Library changes": "K\u00fct\u00fcphane de\u011fi\u015fiklikleri", "Navigation": "Gezinti", "Next topic": "Sonraki konu", "Other changes": "Di\u011fer de\u011fi\u015fiklikler", "Overview": "Genel Bak\u0131\u015f", "Permalink to this definition": "Bu tan\u0131m\u0131n kal\u0131c\u0131 ba\u011flant\u0131s\u0131", "Permalink to this headline": "Bu ba\u015fl\u0131\u011f\u0131n kal\u0131c\u0131 ba\u011flant\u0131s\u0131", "Please activate JavaScript to enable the search\n functionality.": "Arama i\u015flevini kullanabilmek i\u00e7in l\u00fctfen JavaScript'i\n etkinle\u015ftirin.", "Preparing search...": "Aramaya haz\u0131rlan\u0131yor...", "Previous topic": "\u00d6nceki konu", "Quick search": "H\u0131zl\u0131 Arama", "Search": "Ara", "Search Page": "Arama Sayfas\u0131", "Search Results": "Arama Sonu\u00e7lar\u0131", "Search finished, found %s page(s) matching the search query.": "Arama tamamland\u0131. Sorguyu i\u00e7eren %s sayfa bulundu.", "Search within %(docstitle)s": "%(docstitle)s i\u00e7inde ara", "Searching": "Aran\u0131yor", "Show Source": "Kayna\u011f\u0131 G\u00f6ster", "Table Of Contents": "\u0130\u00e7indekiler Tablosu", "This Page": "Bu Sayfa", "Welcome! This is": "Ho\u015fgeldiniz! Kar\u015f\u0131n\u0131zda", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Arama sonucunda herhangi bir belge bulunamad\u0131. B\u00fct\u00fcn kelimeleri do\u011fru yazd\u0131\u011f\u0131n\u0131zdan ve gerekli b\u00fct\u00fcn kategorileri se\u00e7ti\u011finizden emin olun.", "all functions, classes, terms": "b\u00fct\u00fcn fonksiyonlar, s\u0131n\u0131flar, terimler", "can be huge": "\u00e7ok b\u00fcy\u00fck olabilir", "last updated": "son g\u00fcncelleme", "lists all sections and subsections": "b\u00fct\u00fcn b\u00f6l\u00fcmler ve alt b\u00f6l\u00fcmler listelenir", "next chapter": "sonraki b\u00f6l\u00fcm", "previous chapter": "\u00f6nceki b\u00f6l\u00fcm", "quick access to all modules": "b\u00fct\u00fcn mod\u00fcllere h\u0131zl\u0131 eri\u015fim", "search": "ara", "search this documentation": "Bu belgelerde ara", "the documentation for": "belgelendirme konusu: "}, "plural_expr": "(n > 1)"}); \ No newline at end of file +Documentation.addTranslations({"locale": "tr", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": ", \u015funun i\u00e7inde:", "About these documents": "Bu belgeler hakk\u0131nda", "Automatically generated list of changes in version %(version)s": "%(version)s s\u00fcr\u00fcm\u00fcndeki de\u011fi\u015fikliklerin otomatik olarak \u00fcretilmi\u015f listesi", "C API changes": "C API'sindeki de\u011fi\u015fiklikler", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "Yan \u00e7ubu\u011fu daralt", "Complete Table of Contents": "Ayr\u0131nt\u0131l\u0131 \u0130\u00e7indekiler Tablosu", "Contents": "\u0130\u00e7indekiler", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "<a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s ile olu\u015fturulmu\u015ftur.", "Expand sidebar": "Yan \u00e7ubu\u011fu geni\u015flet", "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.": "Burada belgeler i\u00e7inde arama yapabilirsiniz. Arad\u0131\u011f\u0131n\u0131z kelimeyi \na\u015fa\u011f\u0131daki kutuya yaz\u0131p \"ara\" d\u00fc\u011fmesine bas\u0131n\u0131z. Arama i\u015flevi \notomatik olarak b\u00fct\u00fcn kelimeleri arayacakt\u0131r. Eksik kelime i\u00e7eren \nsayfalar sonu\u00e7 listesinde g\u00f6r\u00fcnmez.", "Full index on one page": "B\u00fct\u00fcn dizin tek sayfada", "General Index": "Genel Dizin", "Global Module Index": "Global Mod\u00fcl Dizini", "Go": "Git", "Hide Search Matches": "Arama Sonu\u00e7lar\u0131n\u0131 Gizle", "Index": "Dizin", "Index – %(key)s": "Dizin – %(key)s", "Index pages by letter": "Harfe g\u00f6re dizin sayfalar\u0131", "Indices and tables:": "Dizinler ve tablolar", "Last updated on %(last_updated)s.": "Son g\u00fcncelleme: %(last_updated)s.", "Library changes": "K\u00fct\u00fcphane de\u011fi\u015fiklikleri", "Navigation": "Gezinti", "Next topic": "Sonraki konu", "Other changes": "Di\u011fer de\u011fi\u015fiklikler", "Overview": "Genel Bak\u0131\u015f", "Permalink to this definition": "Bu tan\u0131m\u0131n kal\u0131c\u0131 ba\u011flant\u0131s\u0131", "Permalink to this headline": "Bu ba\u015fl\u0131\u011f\u0131n kal\u0131c\u0131 ba\u011flant\u0131s\u0131", "Please activate JavaScript to enable the search\n functionality.": "Arama i\u015flevini kullanabilmek i\u00e7in l\u00fctfen JavaScript'i\n etkinle\u015ftirin.", "Preparing search...": "Aramaya haz\u0131rlan\u0131yor...", "Previous topic": "\u00d6nceki konu", "Quick search": "H\u0131zl\u0131 Arama", "Search": "Ara", "Search Page": "Arama Sayfas\u0131", "Search Results": "Arama Sonu\u00e7lar\u0131", "Search finished, found %s page(s) matching the search query.": "Arama tamamland\u0131. Sorguyu i\u00e7eren %s sayfa bulundu.", "Search within %(docstitle)s": "%(docstitle)s i\u00e7inde ara", "Searching": "Aran\u0131yor", "Show Source": "Kayna\u011f\u0131 G\u00f6ster", "Table Of Contents": "\u0130\u00e7indekiler Tablosu", "This Page": "Bu Sayfa", "Welcome! This is": "Ho\u015fgeldiniz! Kar\u015f\u0131n\u0131zda", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Arama sonucunda herhangi bir belge bulunamad\u0131. B\u00fct\u00fcn kelimeleri do\u011fru yazd\u0131\u011f\u0131n\u0131zdan ve gerekli b\u00fct\u00fcn kategorileri se\u00e7ti\u011finizden emin olun.", "all functions, classes, terms": "b\u00fct\u00fcn fonksiyonlar, s\u0131n\u0131flar, terimler", "can be huge": "\u00e7ok b\u00fcy\u00fck olabilir", "last updated": "son g\u00fcncelleme", "lists all sections and subsections": "b\u00fct\u00fcn b\u00f6l\u00fcmler ve alt b\u00f6l\u00fcmler listelenir", "next chapter": "sonraki b\u00f6l\u00fcm", "previous chapter": "\u00f6nceki b\u00f6l\u00fcm", "quick access to all modules": "b\u00fct\u00fcn mod\u00fcllere h\u0131zl\u0131 eri\u015fim", "search": "ara", "search this documentation": "Bu belgelerde ara", "the documentation for": "belgelendirme konusu: "}, "plural_expr": "(n > 1)"}); \ No newline at end of file diff --git a/sphinx/locale/tr/LC_MESSAGES/sphinx.mo b/sphinx/locale/tr/LC_MESSAGES/sphinx.mo index 98897cead3310107b07c83438bb65ae1d1eb0626..ef819fb7a147eb20a9e639a2101cd29995726cbe 100644 GIT binary patch delta 3936 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 YdvvOHpXci}rgjDDzS%ZC63ET^CyhS?k^lez delta 3526 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 K6W%l;HtKI3A)>+n diff --git a/sphinx/locale/tr/LC_MESSAGES/sphinx.po b/sphinx/locale/tr/LC_MESSAGES/sphinx.po index 443b80f16..4141eb7de 100644 --- a/sphinx/locale/tr/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/tr/LC_MESSAGES/sphinx.po @@ -9,61 +9,42 @@ msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-14 14:17+0000\n" -"Last-Translator: Fırat Özgül <ozgulfirat@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Turkish (http://www.transifex.com/sphinx-doc/sphinx-1/language/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: tr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "Şekil %s" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "Tablo %s" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "Liste %s" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "%s %s belgelendirme çalışması" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "bkz. %s" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "ayrıca bkz. %s" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "Simgeler" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python'ı İyileştirme Önerileri; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "AAAA gg, YYY" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "Gömülü Öğeler" @@ -72,9 +53,12 @@ msgstr "Gömülü Öğeler" msgid "Module level" msgstr "Modül düzeyi" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" -msgstr "AAA gg, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" +msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 msgid "General Index" @@ -84,18 +68,28 @@ msgstr "Genel Dizin" msgid "index" msgstr "dizin" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "sonraki" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "önceki" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s belgelendirme çalışması" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr " (şurada: " +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "Bölümün yazarı: " @@ -112,23 +106,23 @@ msgstr "Kodun yazarı: " msgid "Author: " msgstr "Yazarı: " -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Parametreler" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "Dönüş değeri:" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "Dönüş tipi" @@ -157,12 +151,12 @@ msgstr "%s (C tipi)" msgid "%s (C variable)" msgstr "%s (C değişkeni)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "fonksiyonu" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "öğesi" @@ -170,7 +164,7 @@ msgstr "öğesi" msgid "macro" msgstr "makrosu" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "tipi" @@ -178,63 +172,72 @@ msgstr "tipi" msgid "variable" msgstr "değişkeni" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "Şablon Parametreleri" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "Şunu verir: " -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (C++ tipi)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (C++ öğesi)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (C++ fonksiyonu)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (C++ sınıfı)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "%s (C++ enum sabiti)" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "%s (C++ numaralandırıcısı)" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "sınıfı" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "enum" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "numaralandırıcı" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (gömülü fonksiyon)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (%s metodu)" @@ -249,7 +252,7 @@ msgstr "%s() (sınıfı)" msgid "%s (global variable or constant)" msgstr "%s (global değişken veya sabit)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (%s niteliği)" @@ -258,116 +261,116 @@ msgstr "%s (%s niteliği)" msgid "Arguments" msgstr "Argümanlar" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "verisi" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "niteliği" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "Değişkenler" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "Şunu tetikler:" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (%s modülü içinde)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (gömülü değişken)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (%s modülü içinde)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (gömülü sınıf)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (%s içinde bir sınıf)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (%s.%s metodu)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (%s.%s statik metodu)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (%s statik metodu)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "%s() (%s.%s sınıf metodu)" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "%s() (%s sınıf metodu)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (%s.%s niteliği)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (modül)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "Python Modül Dizini" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "modüller" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "Önerilmiyor" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "istisnası" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "metodu" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "sınıf metodu" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "statik metodu" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "modülü" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr " (önerilmiyor)" @@ -389,120 +392,147 @@ msgstr "yönergesi" msgid "role" msgstr "rolü" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "çevre değişkeni; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%skomut satırı seçeneği; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "sözlük terimi" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "dilbilgisi girdisi" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "referans etiketi" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "çevre değişkeni" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "program seçeneği" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "Dizin" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "Modül Dizini" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "Arama Sayfası" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" -msgstr " Taban: %s" +msgid "see %s" +msgstr "bkz. %s" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "ayrıca bkz. %s" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "Simgeler" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "şunun takma adı: :class:`%s`" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "[çizim: %s]" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "[çizim]" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "(%s v%s içinde)" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[kaynak]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "Yapılacaklar" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "<<özgün girdi>>" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "(<<özgün girdi>> %s içinde, %d. satırda.)" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "özgün girdi" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[belgeler]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "Modül kodu" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "<h1>%s öğesinin kaynak kodu</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "Genel bakış: modül kodu" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "<h1>Kodları mevcut bütün modüller</h1>" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "Dikkat" @@ -583,7 +613,7 @@ msgstr "gömülü fonksiyon" msgid "Table Of Contents" msgstr "İçindekiler Tablosu" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -641,15 +671,15 @@ msgstr "bütün modüllere hızlı erişim" msgid "all functions, classes, terms" msgstr "bütün fonksiyonlar, sınıflar, terimler" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Dizin – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "Bütün dizin tek sayfada" @@ -665,35 +695,35 @@ msgstr "çok büyük olabilir" msgid "Navigation" msgstr "Gezinti" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "%(docstitle)s içinde ara" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "Bu belgeler hakkında" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "Copyright" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Copyright %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Son güncelleme: %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -742,13 +772,13 @@ msgstr "ara" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "Arama Sonuçları" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -765,13 +795,13 @@ msgstr "Bu Sayfa" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "Sürüm %(version)s — %(docstitle)s içindeki Değişiklikler" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -790,12 +820,13 @@ msgstr "C API'sindeki değişiklikler" msgid "Other changes" msgstr "Diğer değişiklikler" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "Bu başlığın kalıcı bağlantısı" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "Bu tanımın kalıcı bağlantısı" @@ -811,12 +842,12 @@ msgstr "Aranıyor" msgid "Preparing search..." msgstr "Aramaya hazırlanıyor..." -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "Arama tamamlandı. Sorguyu içeren %s sayfa bulundu." -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr ", şunun içinde:" @@ -833,48 +864,53 @@ msgstr "Yan çubuğu daralt" msgid "Contents" msgstr "İçindekiler" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "Bu kodun kalıcı bağlantısı" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "Bu resmin kalıcı bağlantısı" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "Bu içindekiler tablosunun kalıcı bağlantısı" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "Bu tablonun kalıcı bağlantısı" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "Sürüm" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "sayfa" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "Dipnotları" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "önceki sayfadan devam" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "Devamı sonraki sayfada" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "[resim: %s]" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[resim]" diff --git a/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.js b/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.js index dc987e2fe..7c56882a9 100644 --- a/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "uk_UA", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": "", "About these documents": "\u041f\u0440\u043e \u0446\u0456 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438", "Automatically generated list of changes in version %(version)s": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u0437\u0433\u0435\u043d\u0435\u0440\u043e\u0432\u0430\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0437\u043c\u0456\u043d \u0432 \u0432\u0435\u0440\u0441\u0456\u0457 %(version)s", "C API changes": "\u0437\u043c\u0456\u043d\u0438 C API", "Changes in Version %(version)s — %(docstitle)s": "\u0417\u043c\u0456\u043d\u0438 \u0432 \u0412\u0435\u0440\u0441\u0456\u0457 %(version)s — %(docstitle)s", "Collapse sidebar": "", "Complete Table of Contents": "\u041f\u043e\u0432\u043d\u0438\u0439 \u0417\u043c\u0456\u0441\u0442", "Contents": "", "Copyright": "\u0410\u0432\u0442\u043e\u0440\u0441\u044c\u043a\u0456 \u043f\u0440\u0430\u0432\u0430", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "\u0421\u0442\u0432\u043e\u0440\u0435\u043d\u043e \u0437 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u043d\u043d\u044f\u043c <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand 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.": "\u0417\u0432\u0456\u0434\u0441\u0438 \u0432\u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u0448\u0443\u043a\u0430\u0442\u0438 \u0446\u0456 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438. \u0412\u0432\u0435\u0434\u0456\u0442\u044c \u0432\u0430\u0448\u0456 \u043f\u043e\u0448\u0443\u043a\u043e\u0432\u0456\n \u0441\u043b\u043e\u0432\u0430 \u0432 \u043f\u043e\u043b\u0435 \u043d\u0438\u0436\u0447\u0435 \u0442\u0430 \u043d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c \"\u043f\u043e\u0448\u0443\u043a\". \u0417\u0430\u0443\u0432\u0430\u0436\u0442\u0435 \u0449\u043e \u0444\u0443\u043d\u043a\u0446\u0456\u044f\n \u043f\u043e\u0448\u0443\u043a\u0443 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u0448\u0443\u043a\u0430\u0442\u0438\u043c\u0435 \u0437\u0430 \u0432\u0441\u0456\u043c\u0430 \u0441\u043b\u043e\u0432\u0430\u043c\u0438. \u0421\u0442\u043e\u0440\u0456\u043d\u043a\u0438\n \u0449\u043e \u043c\u0456\u0441\u0442\u044f\u0442\u044c \u043c\u0435\u043d\u0448\u0435 \u0441\u043b\u0456\u0432 \u043d\u0435 \u0437'\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0443\u044e\u0447\u043e\u043c\u0443 \u0441\u043f\u0438\u0441\u043a\u0443.", "Full index on one page": "\u041f\u043e\u0432\u043d\u0438\u0439 \u0456\u043d\u0434\u0435\u043a\u0441 \u043d\u0430 \u043e\u0434\u043d\u0456\u0439 \u0441\u0442\u043e\u0440\u0456\u043d\u0446\u0456", "General Index": "\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0438\u0439 \u0456\u043d\u0434\u0435\u043a\u0441", "Global Module Index": "\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0438\u0439 \u0456\u043d\u0434\u0435\u043a\u0441 \u043c\u043e\u0434\u0443\u043b\u0456\u0432", "Go": "\u0412\u043f\u0435\u0440\u0435\u0434", "Hide Search Matches": "\u041f\u0440\u0438\u0445\u043e\u0432\u0430\u0442\u0438 \u0441\u043f\u0456\u0432\u043f\u0430\u0434\u0456\u043d\u043d\u044f \u043f\u043e\u0448\u0443\u043a\u0443", "Index": "\u0406\u043d\u0434\u0435\u043a\u0441", "Index – %(key)s": "\u0406\u043d\u0434\u0435\u043a\u0441 – %(key)s", "Index pages by letter": "\u0406\u043d\u0434\u0435\u043a\u0441\u043d\u0456 \u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0438 \u043f\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c", "Indices and tables:": "\u0406\u043d\u0434\u0435\u043a\u0441\u0438 \u0442\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0456:", "Last updated on %(last_updated)s.": "\u0412\u043e\u0441\u0442\u0430\u043d\u043d\u0454 \u043e\u043d\u043e\u0432\u043b\u0435\u043d\u043e %(last_updated)s.", "Library changes": "\u0417\u043c\u0456\u043d\u0438 \u0432 \u0431\u0456\u0431\u043b\u0456\u043e\u0442\u0435\u0446\u0456", "Navigation": "\u041d\u0430\u0432\u0456\u0433\u0430\u0446\u0456\u044f", "Next topic": "\u041d\u0430\u0441\u0442\u0443\u043f\u043d\u0430 \u0442\u0435\u043c\u0430", "Other changes": "\u0406\u043d\u0448\u0456 \u0437\u043c\u0456\u043d\u0438", "Overview": "\u041e\u0433\u043b\u044f\u0434", "Permalink to this definition": "\u041f\u043e\u0441\u0442\u0456\u0439\u043d\u0435 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043d\u0430 \u0446\u0435 \u0432\u0438\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f", "Permalink to this headline": "\u041f\u043e\u0441\u0442\u0456\u0439\u043d\u0435 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043d\u0430 \u0446\u0435\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a", "Please activate JavaScript to enable the search\n functionality.": "\u0411\u0443\u0434\u044c-\u043b\u0430\u0441\u043a\u0430 \u0432\u0456\u043c\u043a\u043d\u0456\u0442\u044c \u043f\u0456\u0434\u0442\u0440\u0438\u043c\u043a\u0443 JavaScript, \u0449\u043e\u0431 \u0432\u0432\u0456\u043a\u043d\u0443\u0442\u0438\n\"\n\" \u043f\u043e\u0448\u0443\u043a.", "Preparing search...": "", "Previous topic": "\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0456\u0439 \u0440\u043e\u0437\u0434\u0456\u043b", "Quick search": "\u0428\u0432\u0438\u0434\u043a\u0438\u0439 \u043f\u043e\u0448\u0443\u043a", "Search": "\u041f\u043e\u0448\u0443\u043a", "Search Page": "\u0421\u0442\u043e\u0440\u0456\u043d\u043a\u0430 \u043f\u043e\u0448\u0443\u043a\u0443", "Search Results": "\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0438 \u043f\u043e\u0448\u0443\u043a\u0443", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "\u0428\u0443\u043a\u0430\u0442\u0438 \u0432 %(docstitle)s", "Searching": "", "Show Source": "\u0412\u0456\u0434\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u0438 \u0432\u0438\u0445\u0456\u0434\u043d\u0438\u0439 \u0442\u0435\u043a\u0441\u0442", "Table Of Contents": "\u0417\u043c\u0456\u0441\u0442", "This Page": "\u0426\u044f \u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0430", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "\u0432\u0441\u0456 \u0444\u0443\u043d\u043a\u0446\u0456\u0457, \u043a\u043b\u0430\u0441\u0438, \u0442\u0435\u0440\u043c\u0456\u043d\u0438", "can be huge": "\u043c\u043e\u0436\u0435 \u0431\u0443\u0442\u0438 \u0432\u0435\u043b\u0438\u0447\u0435\u0437\u043d\u0438\u043c", "last updated": "", "lists all sections and subsections": "\u043f\u0435\u0440\u0435\u043b\u0456\u0447\u0438\u0442\u0438 \u0432\u0441\u0456 \u0441\u0435\u043a\u0446\u0456\u0457 \u0442\u0430 \u043f\u0456\u0434\u0441\u0435\u043a\u0446\u0456\u0457", "next chapter": "\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0438\u0439 \u0440\u043e\u0437\u0434\u0456\u043b", "previous chapter": "\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0456\u0439 \u0440\u043e\u0437\u0434\u0456\u043b", "quick access to all modules": "\u0448\u0432\u0438\u0434\u043a\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u043e \u0432\u0441\u0456\u0445 \u043c\u043e\u0434\u0443\u043b\u0456\u0432", "search": "\u043f\u043e\u0448\u0443\u043a", "search this documentation": "\u0448\u0443\u043a\u0430\u0442\u0438 \u0446\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0456\u044e", "the documentation for": ""}, "plural_expr": "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)"}); \ No newline at end of file +Documentation.addTranslations({"locale": "uk_UA", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "\u041f\u0440\u043e \u0446\u0456 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438", "Automatically generated list of changes in version %(version)s": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u0437\u0433\u0435\u043d\u0435\u0440\u043e\u0432\u0430\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0437\u043c\u0456\u043d \u0432 \u0432\u0435\u0440\u0441\u0456\u0457 %(version)s", "C API changes": "\u0437\u043c\u0456\u043d\u0438 C API", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "\u041f\u043e\u0432\u043d\u0438\u0439 \u0417\u043c\u0456\u0441\u0442", "Contents": "", "Copyright": "\u0410\u0432\u0442\u043e\u0440\u0441\u044c\u043a\u0456 \u043f\u0440\u0430\u0432\u0430", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "\u0421\u0442\u0432\u043e\u0440\u0435\u043d\u043e \u0437 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u043d\u043d\u044f\u043c <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand 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.": "\u0417\u0432\u0456\u0434\u0441\u0438 \u0432\u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u0448\u0443\u043a\u0430\u0442\u0438 \u0446\u0456 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438. \u0412\u0432\u0435\u0434\u0456\u0442\u044c \u0432\u0430\u0448\u0456 \u043f\u043e\u0448\u0443\u043a\u043e\u0432\u0456\n \u0441\u043b\u043e\u0432\u0430 \u0432 \u043f\u043e\u043b\u0435 \u043d\u0438\u0436\u0447\u0435 \u0442\u0430 \u043d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c \"\u043f\u043e\u0448\u0443\u043a\". \u0417\u0430\u0443\u0432\u0430\u0436\u0442\u0435 \u0449\u043e \u0444\u0443\u043d\u043a\u0446\u0456\u044f\n \u043f\u043e\u0448\u0443\u043a\u0443 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u0448\u0443\u043a\u0430\u0442\u0438\u043c\u0435 \u0437\u0430 \u0432\u0441\u0456\u043c\u0430 \u0441\u043b\u043e\u0432\u0430\u043c\u0438. \u0421\u0442\u043e\u0440\u0456\u043d\u043a\u0438\n \u0449\u043e \u043c\u0456\u0441\u0442\u044f\u0442\u044c \u043c\u0435\u043d\u0448\u0435 \u0441\u043b\u0456\u0432 \u043d\u0435 \u0437'\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0443\u044e\u0447\u043e\u043c\u0443 \u0441\u043f\u0438\u0441\u043a\u0443.", "Full index on one page": "\u041f\u043e\u0432\u043d\u0438\u0439 \u0456\u043d\u0434\u0435\u043a\u0441 \u043d\u0430 \u043e\u0434\u043d\u0456\u0439 \u0441\u0442\u043e\u0440\u0456\u043d\u0446\u0456", "General Index": "\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0438\u0439 \u0456\u043d\u0434\u0435\u043a\u0441", "Global Module Index": "\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0438\u0439 \u0456\u043d\u0434\u0435\u043a\u0441 \u043c\u043e\u0434\u0443\u043b\u0456\u0432", "Go": "\u0412\u043f\u0435\u0440\u0435\u0434", "Hide Search Matches": "\u041f\u0440\u0438\u0445\u043e\u0432\u0430\u0442\u0438 \u0441\u043f\u0456\u0432\u043f\u0430\u0434\u0456\u043d\u043d\u044f \u043f\u043e\u0448\u0443\u043a\u0443", "Index": "\u0406\u043d\u0434\u0435\u043a\u0441", "Index – %(key)s": "\u0406\u043d\u0434\u0435\u043a\u0441 – %(key)s", "Index pages by letter": "\u0406\u043d\u0434\u0435\u043a\u0441\u043d\u0456 \u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0438 \u043f\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c", "Indices and tables:": "\u0406\u043d\u0434\u0435\u043a\u0441\u0438 \u0442\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0456:", "Last updated on %(last_updated)s.": "\u0412\u043e\u0441\u0442\u0430\u043d\u043d\u0454 \u043e\u043d\u043e\u0432\u043b\u0435\u043d\u043e %(last_updated)s.", "Library changes": "\u0417\u043c\u0456\u043d\u0438 \u0432 \u0431\u0456\u0431\u043b\u0456\u043e\u0442\u0435\u0446\u0456", "Navigation": "\u041d\u0430\u0432\u0456\u0433\u0430\u0446\u0456\u044f", "Next topic": "\u041d\u0430\u0441\u0442\u0443\u043f\u043d\u0430 \u0442\u0435\u043c\u0430", "Other changes": "\u0406\u043d\u0448\u0456 \u0437\u043c\u0456\u043d\u0438", "Overview": "\u041e\u0433\u043b\u044f\u0434", "Permalink to this definition": "\u041f\u043e\u0441\u0442\u0456\u0439\u043d\u0435 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043d\u0430 \u0446\u0435 \u0432\u0438\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f", "Permalink to this headline": "\u041f\u043e\u0441\u0442\u0456\u0439\u043d\u0435 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043d\u0430 \u0446\u0435\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a", "Please activate JavaScript to enable the search\n functionality.": "\u0411\u0443\u0434\u044c-\u043b\u0430\u0441\u043a\u0430 \u0432\u0456\u043c\u043a\u043d\u0456\u0442\u044c \u043f\u0456\u0434\u0442\u0440\u0438\u043c\u043a\u0443 JavaScript, \u0449\u043e\u0431 \u0432\u0432\u0456\u043a\u043d\u0443\u0442\u0438\n\"\n\" \u043f\u043e\u0448\u0443\u043a.", "Preparing search...": "", "Previous topic": "\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0456\u0439 \u0440\u043e\u0437\u0434\u0456\u043b", "Quick search": "\u0428\u0432\u0438\u0434\u043a\u0438\u0439 \u043f\u043e\u0448\u0443\u043a", "Search": "\u041f\u043e\u0448\u0443\u043a", "Search Page": "\u0421\u0442\u043e\u0440\u0456\u043d\u043a\u0430 \u043f\u043e\u0448\u0443\u043a\u0443", "Search Results": "\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0438 \u043f\u043e\u0448\u0443\u043a\u0443", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "\u0428\u0443\u043a\u0430\u0442\u0438 \u0432 %(docstitle)s", "Searching": "", "Show Source": "\u0412\u0456\u0434\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u0438 \u0432\u0438\u0445\u0456\u0434\u043d\u0438\u0439 \u0442\u0435\u043a\u0441\u0442", "Table Of Contents": "\u0417\u043c\u0456\u0441\u0442", "This Page": "\u0426\u044f \u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0430", "Welcome! This is": "", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "\u0432\u0441\u0456 \u0444\u0443\u043d\u043a\u0446\u0456\u0457, \u043a\u043b\u0430\u0441\u0438, \u0442\u0435\u0440\u043c\u0456\u043d\u0438", "can be huge": "\u043c\u043e\u0436\u0435 \u0431\u0443\u0442\u0438 \u0432\u0435\u043b\u0438\u0447\u0435\u0437\u043d\u0438\u043c", "last updated": "", "lists all sections and subsections": "\u043f\u0435\u0440\u0435\u043b\u0456\u0447\u0438\u0442\u0438 \u0432\u0441\u0456 \u0441\u0435\u043a\u0446\u0456\u0457 \u0442\u0430 \u043f\u0456\u0434\u0441\u0435\u043a\u0446\u0456\u0457", "next chapter": "\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0438\u0439 \u0440\u043e\u0437\u0434\u0456\u043b", "previous chapter": "\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0456\u0439 \u0440\u043e\u0437\u0434\u0456\u043b", "quick access to all modules": "\u0448\u0432\u0438\u0434\u043a\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u043e \u0432\u0441\u0456\u0445 \u043c\u043e\u0434\u0443\u043b\u0456\u0432", "search": "\u043f\u043e\u0448\u0443\u043a", "search this documentation": "\u0448\u0443\u043a\u0430\u0442\u0438 \u0446\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0456\u044e", "the documentation for": ""}, "plural_expr": "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)"}); \ No newline at end of file diff --git a/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.mo b/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.mo index a7ddbd11ebe6e87240551edee0985cd5d5cddb06..f9c615950d82c6fb2122726921a0d16366ab4907 100644 GIT binary patch delta 3928 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 delta 3548 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 a=SBp#<ZO?03-dz3iTQ`a8LAj_Ir1Ntq_r3T diff --git a/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.po b/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.po index 4eb2c6425..314358072 100644 --- a/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.po @@ -8,61 +8,42 @@ msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/sphinx-doc/sphinx-1/language/uk_UA/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: uk_UA\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python Enhancement Proposals; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "Вбудовані елементи" @@ -71,8 +52,11 @@ msgstr "Вбудовані елементи" msgid "Module level" msgstr "Рівень модуля" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -83,18 +67,28 @@ msgstr "Загальний індекс" msgid "index" msgstr "індекс" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "наступний" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "попередній" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr " (в " +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "Автор секції: " @@ -111,23 +105,23 @@ msgstr "" msgid "Author: " msgstr "Автор: " -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Параметри" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "Повертає" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "Тип повернення" @@ -156,12 +150,12 @@ msgstr "%s (C тип)" msgid "%s (C variable)" msgstr "%s (C змінна)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "функція" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "член" @@ -169,7 +163,7 @@ msgstr "член" msgid "macro" msgstr "макрос" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "тип" @@ -177,63 +171,72 @@ msgstr "тип" msgid "variable" msgstr "" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (C++ тип)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (C++ член)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (C++ функція)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (C++ клас)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "клас" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (вбудована функція)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (%s метод)" @@ -248,7 +251,7 @@ msgstr "%s() (клас)" msgid "%s (global variable or constant)" msgstr "" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (%s атрибут)" @@ -257,116 +260,116 @@ msgstr "%s (%s атрибут)" msgid "Arguments" msgstr "" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "атрибут" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "Викликає" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (в модулі %s)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (вбудована змінна)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (в модулі %s)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (вбудований клас)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (клас в %s)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (%s.%s метод)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (%s.%s статичний метод)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (%s статичний метод)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (%s.%s атрибут)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (модуль)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "модулі" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "Застарілий" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "виняткова ситуація" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "статичний метод" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "модуль" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr " (застарілий)" @@ -388,120 +391,147 @@ msgstr "" msgid "role" msgstr "" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "змінна оточення; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%sопція командного рядка; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "змінна оточення" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "Індекс" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "Індекс модулів" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "Сторінка пошуку" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" -msgstr " Базовий: %s" +msgid "see %s" +msgstr "" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "синонім :class:`%s`" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "Доробити" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "Увага" @@ -582,7 +612,7 @@ msgstr "вбудована функція" msgid "Table Of Contents" msgstr "Зміст" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -640,15 +670,15 @@ msgstr "швидкий доступ до всіх модулів" msgid "all functions, classes, terms" msgstr "всі функції, класи, терміни" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Індекс – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "Повний індекс на одній сторінці" @@ -664,35 +694,35 @@ msgstr "може бути величезним" msgid "Navigation" msgstr "Навігація" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "Шукати в %(docstitle)s" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "Про ці документи" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "Авторські права" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Copyright %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Востаннє оновлено %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -741,13 +771,13 @@ msgstr "пошук" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "Результати пошуку" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -764,13 +794,13 @@ msgstr "Ця сторінка" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "Зміни в Версії %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -789,12 +819,13 @@ msgstr "зміни C API" msgid "Other changes" msgstr "Інші зміни" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "Постійне посилання на цей заголовок" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "Постійне посилання на це визначення" @@ -810,12 +841,12 @@ msgstr "" msgid "Preparing search..." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr "" @@ -832,48 +863,53 @@ msgstr "" msgid "Contents" msgstr "" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "Реліз" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "" diff --git a/sphinx/locale/vi/LC_MESSAGES/sphinx.js b/sphinx/locale/vi/LC_MESSAGES/sphinx.js index 787aeb283..be49f2dc3 100644 --- a/sphinx/locale/vi/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/vi/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "vi", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">B\u1ea3n quy\u1ec1n thu\u1ed9c</a> %(copyright)s.", "© Copyright %(copyright)s.": "© B\u1ea3n quy\u1ec1n thu\u1ed9c %(copyright)s.", ", in ": "", "About these documents": "V\u1ec1 c\u00e1c t\u00e0i li\u1ec7u n\u00e0y", "Automatically generated list of changes in version %(version)s": "", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "M\u1ee5c L\u1ee5c \u0110\u1ea7y \u0110\u1ee7", "Contents": "", "Copyright": "B\u1ea3n quy\u1ec1n", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "\u0110\u01b0\u1ee3c t\u1ea1o nh\u1edd <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand 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.": "", "Full index on one page": "To\u00e0n b\u1ed9 ch\u1ec9 m\u1ee5c tr\u00ean m\u1ed9t trang", "General Index": "Ch\u1ec9 m\u1ee5c chung", "Global Module Index": "Ch\u1ec9 M\u1ee5c M\u00f4-\u0111un To\u00e0n C\u1ee5c", "Go": "Th\u1ef1c hi\u1ec7n", "Hide Search Matches": "", "Index": "", "Index – %(key)s": "Ch\u1ec9 m\u1ee5c – %(key)s", "Index pages by letter": "C\u00e1c trang ch\u1ec9 m\u1ee5c theo ch\u1eef c\u00e1i", "Indices and tables:": "C\u00e1c ch\u1ec9 m\u1ee5c v\u00e0 b\u1ea3ng bi\u1ec3u:", "Last updated on %(last_updated)s.": "C\u1eadp nh\u1eadt m\u1edbi nh\u1ea5t v\u00e0o %(last_updated)s.", "Library changes": "", "Navigation": "\u0110i\u1ec1u h\u01b0\u1edbng", "Next topic": "Ch\u1ee7 \u0111\u1ec1 ti\u1ebfp", "Other changes": "", "Overview": "T\u1ed5ng quan", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "H\u00e3y b\u1eadt JavaScript \u0111\u1ec3 d\u00f9ng t\u00ednh n\u0103ng\nt\u00ecm ki\u1ebfm.", "Preparing search...": "", "Previous topic": "Ch\u1ee7 \u0111\u1ec1 tr\u01b0\u1edbc", "Quick search": "", "Search": "T\u00ecm Ki\u1ebfm", "Search Page": "", "Search Results": "", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "T\u00ecm ki\u1ebfm trong %(docstitle)s", "Searching": "", "Show Source": "Hi\u1ec3n th\u1ecb m\u00e3 ngu\u1ed3n", "Table Of Contents": "M\u1ee5c L\u1ee5c", "This Page": "", "Welcome! This is": "Ch\u00e0o m\u1eebng! \u0110\u00e2y l\u00e0", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "t\u1ea5t c\u1ea3 c\u00e1c h\u00e0m, l\u1edbp, thu\u1eadt ng\u1eef", "can be huge": "c\u00f3 th\u1ec3 r\u1ea5t nhi\u1ec1u", "last updated": "c\u1eadp nh\u1eadt m\u1edbi nh\u1ea5t", "lists all sections and subsections": "li\u1ec7t k\u00ea t\u1ea5t c\u1ea3 c\u00e1c m\u1ee5c v\u00e0 m\u1ee5c con", "next chapter": "ch\u01b0\u01a1ng ti\u1ebfp", "previous chapter": "ch\u01b0\u01a1ng tr\u01b0\u1edbc ", "quick access to all modules": "truy c\u1eadp nhanh t\u1ea5t c\u1ea3 c\u00e1c m\u00f4-\u0111un", "search": "", "search this documentation": "t\u00ecm ki\u1ebfm trong t\u00e0i li\u1ec7u n\u00e0y", "the documentation for": "t\u00e0i li\u1ec7u cho"}, "plural_expr": "0"}); \ No newline at end of file +Documentation.addTranslations({"locale": "vi", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "", "About these documents": "V\u1ec1 c\u00e1c t\u00e0i li\u1ec7u n\u00e0y", "Automatically generated list of changes in version %(version)s": "", "C API changes": "", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "", "Complete Table of Contents": "M\u1ee5c L\u1ee5c \u0110\u1ea7y \u0110\u1ee7", "Contents": "", "Copyright": "B\u1ea3n quy\u1ec1n", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "\u0110\u01b0\u1ee3c t\u1ea1o nh\u1edd <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand 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.": "", "Full index on one page": "To\u00e0n b\u1ed9 ch\u1ec9 m\u1ee5c tr\u00ean m\u1ed9t trang", "General Index": "Ch\u1ec9 m\u1ee5c chung", "Global Module Index": "Ch\u1ec9 M\u1ee5c M\u00f4-\u0111un To\u00e0n C\u1ee5c", "Go": "Th\u1ef1c hi\u1ec7n", "Hide Search Matches": "", "Index": "", "Index – %(key)s": "Ch\u1ec9 m\u1ee5c – %(key)s", "Index pages by letter": "C\u00e1c trang ch\u1ec9 m\u1ee5c theo ch\u1eef c\u00e1i", "Indices and tables:": "C\u00e1c ch\u1ec9 m\u1ee5c v\u00e0 b\u1ea3ng bi\u1ec3u:", "Last updated on %(last_updated)s.": "C\u1eadp nh\u1eadt m\u1edbi nh\u1ea5t v\u00e0o %(last_updated)s.", "Library changes": "", "Navigation": "\u0110i\u1ec1u h\u01b0\u1edbng", "Next topic": "Ch\u1ee7 \u0111\u1ec1 ti\u1ebfp", "Other changes": "", "Overview": "T\u1ed5ng quan", "Permalink to this definition": "", "Permalink to this headline": "", "Please activate JavaScript to enable the search\n functionality.": "H\u00e3y b\u1eadt JavaScript \u0111\u1ec3 d\u00f9ng t\u00ednh n\u0103ng\nt\u00ecm ki\u1ebfm.", "Preparing search...": "", "Previous topic": "Ch\u1ee7 \u0111\u1ec1 tr\u01b0\u1edbc", "Quick search": "", "Search": "T\u00ecm Ki\u1ebfm", "Search Page": "", "Search Results": "", "Search finished, found %s page(s) matching the search query.": "", "Search within %(docstitle)s": "T\u00ecm ki\u1ebfm trong %(docstitle)s", "Searching": "", "Show Source": "Hi\u1ec3n th\u1ecb m\u00e3 ngu\u1ed3n", "Table Of Contents": "M\u1ee5c L\u1ee5c", "This Page": "", "Welcome! This is": "Ch\u00e0o m\u1eebng! \u0110\u00e2y l\u00e0", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "all functions, classes, terms": "t\u1ea5t c\u1ea3 c\u00e1c h\u00e0m, l\u1edbp, thu\u1eadt ng\u1eef", "can be huge": "c\u00f3 th\u1ec3 r\u1ea5t nhi\u1ec1u", "last updated": "c\u1eadp nh\u1eadt m\u1edbi nh\u1ea5t", "lists all sections and subsections": "li\u1ec7t k\u00ea t\u1ea5t c\u1ea3 c\u00e1c m\u1ee5c v\u00e0 m\u1ee5c con", "next chapter": "ch\u01b0\u01a1ng ti\u1ebfp", "previous chapter": "ch\u01b0\u01a1ng tr\u01b0\u1edbc ", "quick access to all modules": "truy c\u1eadp nhanh t\u1ea5t c\u1ea3 c\u00e1c m\u00f4-\u0111un", "search": "", "search this documentation": "t\u00ecm ki\u1ebfm trong t\u00e0i li\u1ec7u n\u00e0y", "the documentation for": "t\u00e0i li\u1ec7u cho"}, "plural_expr": "0"}); \ No newline at end of file diff --git a/sphinx/locale/vi/LC_MESSAGES/sphinx.mo b/sphinx/locale/vi/LC_MESSAGES/sphinx.mo index dc9be5e92507878a3f7a197edea685cb6443a17d..7bf9a9ef00e6a7b4de04afe890282b96a0bee950 100644 GIT binary patch delta 3906 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 R<LwUmKhY*+_61kv{0qPs_u2pe delta 3563 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 Lh6Se#xi#!h6j8Fz diff --git a/sphinx/locale/vi/LC_MESSAGES/sphinx.po b/sphinx/locale/vi/LC_MESSAGES/sphinx.po index 04c3c7a7e..47bc5bb71 100644 --- a/sphinx/locale/vi/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/vi/LC_MESSAGES/sphinx.po @@ -8,61 +8,42 @@ msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Vietnamese (http://www.transifex.com/sphinx-doc/sphinx-1/language/vi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: vi\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "Tài liệu %s %s" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "xem %s" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "nên xem %s" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "Biểu tượng" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Các đề nghị nâng cao Python; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "Dựng sẵn" @@ -71,8 +52,11 @@ msgstr "Dựng sẵn" msgid "Module level" msgstr "Mức mô-đun" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -83,18 +67,28 @@ msgstr "Chỉ mục chung" msgid "index" msgstr "chỉ mục" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "xem tiếp" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "xem lại" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "Tài liệu %s %s" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr "(trong" +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "Tác giả mục:" @@ -111,23 +105,23 @@ msgstr "Tác giả mã lệnh:" msgid "Author: " msgstr "Tác giả:" -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "Tham số" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "Trả về" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "Kiểu trả về" @@ -156,12 +150,12 @@ msgstr "%s (kiểu C)" msgid "%s (C variable)" msgstr "%s (biến C)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "hàm" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "thuộc tính" @@ -169,7 +163,7 @@ msgstr "thuộc tính" msgid "macro" msgstr "macro" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "kiểu" @@ -177,63 +171,72 @@ msgstr "kiểu" msgid "variable" msgstr "biến" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "Ném" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (kiểu C++)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (thuộc tính C++)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (hàm C++)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (lớp C++)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "lớp" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (hàm dựng sẵn)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (phương thức %s)" @@ -248,7 +251,7 @@ msgstr "%s() (lớp)" msgid "%s (global variable or constant)" msgstr "%s (biến toàn cục hoặc hằng số)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (thuộc tính %s)" @@ -257,116 +260,116 @@ msgstr "%s (thuộc tính %s)" msgid "Arguments" msgstr "Đối số" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "dữ liệu" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "thuộc tính" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "Các biến" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "Đưa ra" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (trong mô-đun %s)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (biến dựng sẵn)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (trong mô-đun %s)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (lớp dựng sẵn)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (lớp trong %s)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (phương thức %s.%s) " -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (phương thức tĩnh %s.%s)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (phương thức tĩnh %s)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "%s() (phương thức lớp %s.%s)" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "%s() (phương thức lớp %s)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (thuộc tính %s.%s)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (mô-đun)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "Chỉ Mục Mô-đun Python" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "các mô-đun" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "Sắp loại bỏ" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "ngoại lệ" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "phương thức" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "phương thức lớp" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "phương thức tĩnh" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "mô-đun" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr "(sắp loại bỏ)" @@ -388,120 +391,147 @@ msgstr "chỉ thị" msgid "role" msgstr "vai trò" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "các biến môi trường; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "tuỳ chọn dòng lệnh%s; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "chú giải thuật ngữ" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" +msgid "see %s" +msgstr "xem %s" + +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "nên xem %s" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "Biểu tượng" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" msgstr "" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr "" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "Chú ý" @@ -582,7 +612,7 @@ msgstr "hàm dựng sẵn" msgid "Table Of Contents" msgstr "Mục Lục" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -640,15 +670,15 @@ msgstr "truy cập nhanh tất cả các mô-đun" msgid "all functions, classes, terms" msgstr "tất cả các hàm, lớp, thuật ngữ" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "Chỉ mục – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "Toàn bộ chỉ mục trên một trang" @@ -664,35 +694,35 @@ msgstr "có thể rất nhiều" msgid "Navigation" msgstr "Điều hướng" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "Tìm kiếm trong %(docstitle)s" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "Về các tài liệu này" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "Bản quyền" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">Bản quyền thuộc</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© Bản quyền thuộc %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "Cập nhật mới nhất vào %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -741,13 +771,13 @@ msgstr "" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -764,12 +794,12 @@ msgstr "" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 @@ -789,12 +819,13 @@ msgstr "" msgid "Other changes" msgstr "" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "" @@ -810,12 +841,12 @@ msgstr "" msgid "Preparing search..." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "" -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr "" @@ -832,48 +863,53 @@ msgstr "" msgid "Contents" msgstr "" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "" diff --git a/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.js b/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.js index 6bfb64b4c..f5f915f03 100644 --- a/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "zh_Hans_CN", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">\u7248\u6743\u6240\u6709</a> %(copyright)s.", "© Copyright %(copyright)s.": "© \u7248\u6743\u6240\u6709 %(copyright)s.", ", in ": "\uff0c\u5728", "About these documents": "\u5173\u4e8e\u8fd9\u4e9b\u6587\u6863", "Automatically generated list of changes in version %(version)s": "\u81ea\u52a8\u751f\u6210\u7684 %(version)s \u7248\u672c\u4e2d\u7684\u66f4\u6539\u5217\u8868", "C API changes": "C API \u66f4\u6539", "Changes in Version %(version)s — %(docstitle)s": "\u66f4\u6539\u53d1\u751f\u5728\u7248\u672c %(version)s — %(docstitle)s", "Collapse sidebar": "\u6298\u53e0\u8fb9\u680f", "Complete Table of Contents": "\u5b8c\u6574\u7684\u5185\u5bb9\u8868", "Contents": "\u76ee\u5f55", "Copyright": "\u7248\u6743\u6240\u6709", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "\u7531 <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s \u521b\u5efa\u3002", "Expand sidebar": "\u5c55\u5f00\u8fb9\u680f", "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.": "\u5728\u8fd9\u513f\uff0c\u4f60\u53ef\u4ee5\u5bf9\u8fd9\u4e9b\u6587\u6863\u8fdb\u884c\u641c\u7d22\u3002\u5411\u641c\u7d22\u6846\u4e2d\u8f93\u5165\u4f60\u6240\u8981\u641c\u7d22\u7684\u5173\u952e\u5b57\u5e76\u70b9\u51fb\u201c\u641c\u7d22\u201d\u3002\u6ce8\u610f\uff1a\u641c\u7d22\u5f15\u64ce\u4f1a\u81ea\u52a8\u641c\u7d22\u6240\u6709\u7684\u5173\u952e\u5b57\u3002\u5c06\u4e0d\u4f1a\u641c\u7d22\u5230\u90e8\u5206\u5173\u952e\u5b57\u7684\u9875\u9762.", "Full index on one page": "\u4e00\u9875\u7684\u5168\u90e8\u7d22\u5f15", "General Index": "\u603b\u76ee\u5f55", "Global Module Index": "\u5168\u5c40\u6a21\u5757\u7d22\u5f15", "Go": "\u8f6c\u5411", "Hide Search Matches": "\u9690\u85cf\u641c\u7d22\u7ed3\u679c", "Index": "\u7d22\u5f15", "Index – %(key)s": "\u7d22\u5f15 – %(key)s", "Index pages by letter": "\u6309\u7167\u5b57\u6bcd\u7684\u7d22\u5f15\u9875", "Indices and tables:": "\u7d22\u5f15\u548c\u8868\u683c\uff1a", "Last updated on %(last_updated)s.": "\u6700\u540e\u66f4\u65b0\u4e8e %(last_updated)s.", "Library changes": "\u5e93\u66f4\u6539", "Navigation": "\u5bfc\u822a", "Next topic": "\u4e0b\u4e00\u4e2a\u4e3b\u9898", "Other changes": "\u5176\u4ed6\u66f4\u6539", "Overview": "\u6982\u8ff0", "Permalink to this definition": "\u6c38\u4e45\u94fe\u63a5\u81f3\u76ee\u6807", "Permalink to this headline": "\u6c38\u4e45\u94fe\u63a5\u81f3\u6807\u9898", "Please activate JavaScript to enable the search\n functionality.": "\u8bf7\u6fc0\u6d3b JavaScript \u4ee5\u5f00\u542f\u641c\u7d22\u529f\u80fd", "Preparing search...": "\u51c6\u5907\u641c\u7d22\u2026\u2026", "Previous topic": "\u4e0a\u4e00\u4e2a\u4e3b\u9898", "Quick search": "\u5feb\u901f\u641c\u7d22", "Search": "\u641c\u7d22", "Search Page": "\u641c\u7d22\u9875\u9762", "Search Results": "\u641c\u7d22\u7ed3\u679c", "Search finished, found %s page(s) matching the search query.": "\u641c\u7d22\u5b8c\u6210\uff0c\u6709 %s \u4e2a\u9875\u9762\u5339\u914d\u3002", "Search within %(docstitle)s": "\u5728 %(docstitle)s \u4e2d\u641c\u7d22", "Searching": "\u641c\u7d22\u4e2d", "Show Source": "\u663e\u793a\u6e90\u4ee3\u7801", "Table Of Contents": "\u5167\u5bb9\u76ee\u5f55", "This Page": "\u672c\u9875", "Welcome! This is": "\u6b22\u8fce\uff01\u8fd9\u662f", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "\u6ca1\u6709\u4efb\u4f55\u6587\u6863\u5339\u914d\u60a8\u7684\u641c\u7d22\u3002\u8bf7\u786e\u4fdd\u4f60\u8f93\u5165\u7684\u8bcd\u62fc\u5199\u6b63\u786e\u5e76\u9009\u62e9\u4e86\u5408\u9002\u7684\u5206\u7c7b\u3002", "all functions, classes, terms": "\u6240\u7684\u51fd\u6570\uff0c\u7c7b\uff0c\u672f\u8bed", "can be huge": "\u53ef\u80fd\u4f1a\u5f88\u591a", "last updated": "\u6700\u540e\u66f4\u65b0\u4e8e", "lists all sections and subsections": "\u5217\u51fa\u6240\u6709\u7684\u7ae0\u8282\u548c\u90e8\u5206", "next chapter": "\u4e0b\u4e00\u7ae0", "previous chapter": "\u4e0a\u4e00\u7ae0", "quick access to all modules": "\u5feb\u901f\u67e5\u770b\u6240\u6709\u7684\u6a21\u5757", "search": "\u641c\u7d22", "search this documentation": "\u641c\u7d22\u6587\u6863", "the documentation for": "\u8fd9\u4efd\u6587\u6863\u662f"}, "plural_expr": "0"}); \ No newline at end of file +Documentation.addTranslations({"locale": "zh_Hans_CN", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": "\uff0c\u5728", "About these documents": "\u5173\u4e8e\u8fd9\u4e9b\u6587\u6863", "Automatically generated list of changes in version %(version)s": "\u81ea\u52a8\u751f\u6210\u7684 %(version)s \u7248\u672c\u4e2d\u7684\u66f4\u6539\u5217\u8868", "C API changes": "C API \u66f4\u6539", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "\u6298\u53e0\u8fb9\u680f", "Complete Table of Contents": "\u5b8c\u6574\u7684\u5185\u5bb9\u8868", "Contents": "\u76ee\u5f55", "Copyright": "\u7248\u6743\u6240\u6709", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "\u7531 <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s \u521b\u5efa\u3002", "Expand sidebar": "\u5c55\u5f00\u8fb9\u680f", "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.": "\u5728\u8fd9\u513f\uff0c\u4f60\u53ef\u4ee5\u5bf9\u8fd9\u4e9b\u6587\u6863\u8fdb\u884c\u641c\u7d22\u3002\u5411\u641c\u7d22\u6846\u4e2d\u8f93\u5165\u4f60\u6240\u8981\u641c\u7d22\u7684\u5173\u952e\u5b57\u5e76\u70b9\u51fb\u201c\u641c\u7d22\u201d\u3002\u6ce8\u610f\uff1a\u641c\u7d22\u5f15\u64ce\u4f1a\u81ea\u52a8\u641c\u7d22\u6240\u6709\u7684\u5173\u952e\u5b57\u3002\u5c06\u4e0d\u4f1a\u641c\u7d22\u5230\u90e8\u5206\u5173\u952e\u5b57\u7684\u9875\u9762.", "Full index on one page": "\u4e00\u9875\u7684\u5168\u90e8\u7d22\u5f15", "General Index": "\u603b\u76ee\u5f55", "Global Module Index": "\u5168\u5c40\u6a21\u5757\u7d22\u5f15", "Go": "\u8f6c\u5411", "Hide Search Matches": "\u9690\u85cf\u641c\u7d22\u7ed3\u679c", "Index": "\u7d22\u5f15", "Index – %(key)s": "\u7d22\u5f15 – %(key)s", "Index pages by letter": "\u6309\u7167\u5b57\u6bcd\u7684\u7d22\u5f15\u9875", "Indices and tables:": "\u7d22\u5f15\u548c\u8868\u683c\uff1a", "Last updated on %(last_updated)s.": "\u6700\u540e\u66f4\u65b0\u4e8e %(last_updated)s.", "Library changes": "\u5e93\u66f4\u6539", "Navigation": "\u5bfc\u822a", "Next topic": "\u4e0b\u4e00\u4e2a\u4e3b\u9898", "Other changes": "\u5176\u4ed6\u66f4\u6539", "Overview": "\u6982\u8ff0", "Permalink to this definition": "\u6c38\u4e45\u94fe\u63a5\u81f3\u76ee\u6807", "Permalink to this headline": "\u6c38\u4e45\u94fe\u63a5\u81f3\u6807\u9898", "Please activate JavaScript to enable the search\n functionality.": "\u8bf7\u6fc0\u6d3b JavaScript \u4ee5\u5f00\u542f\u641c\u7d22\u529f\u80fd", "Preparing search...": "\u51c6\u5907\u641c\u7d22\u2026\u2026", "Previous topic": "\u4e0a\u4e00\u4e2a\u4e3b\u9898", "Quick search": "\u5feb\u901f\u641c\u7d22", "Search": "\u641c\u7d22", "Search Page": "\u641c\u7d22\u9875\u9762", "Search Results": "\u641c\u7d22\u7ed3\u679c", "Search finished, found %s page(s) matching the search query.": "\u641c\u7d22\u5b8c\u6210\uff0c\u6709 %s \u4e2a\u9875\u9762\u5339\u914d\u3002", "Search within %(docstitle)s": "\u5728 %(docstitle)s \u4e2d\u641c\u7d22", "Searching": "\u641c\u7d22\u4e2d", "Show Source": "\u663e\u793a\u6e90\u4ee3\u7801", "Table Of Contents": "\u5167\u5bb9\u76ee\u5f55", "This Page": "\u672c\u9875", "Welcome! This is": "\u6b22\u8fce\uff01\u8fd9\u662f", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "\u6ca1\u6709\u4efb\u4f55\u6587\u6863\u5339\u914d\u60a8\u7684\u641c\u7d22\u3002\u8bf7\u786e\u4fdd\u4f60\u8f93\u5165\u7684\u8bcd\u62fc\u5199\u6b63\u786e\u5e76\u9009\u62e9\u4e86\u5408\u9002\u7684\u5206\u7c7b\u3002", "all functions, classes, terms": "\u6240\u7684\u51fd\u6570\uff0c\u7c7b\uff0c\u672f\u8bed", "can be huge": "\u53ef\u80fd\u4f1a\u5f88\u591a", "last updated": "\u6700\u540e\u66f4\u65b0\u4e8e", "lists all sections and subsections": "\u5217\u51fa\u6240\u6709\u7684\u7ae0\u8282\u548c\u90e8\u5206", "next chapter": "\u4e0b\u4e00\u7ae0", "previous chapter": "\u4e0a\u4e00\u7ae0", "quick access to all modules": "\u5feb\u901f\u67e5\u770b\u6240\u6709\u7684\u6a21\u5757", "search": "\u641c\u7d22", "search this documentation": "\u641c\u7d22\u6587\u6863", "the documentation for": "\u8fd9\u4efd\u6587\u6863\u662f"}, "plural_expr": "0"}); \ No newline at end of file diff --git a/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.mo b/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.mo index b3fac4ed327f5340ffd3e4c938278e808bc44cd3..104982e2ee035d4383d2f4d600a9299c7c9ed5bf 100644 GIT binary patch delta 3919 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 Q^dr@?KHi-<P(9-N7ogAk2><{9 delta 3586 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 diff --git a/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.po b/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.po index eb58ba955..2f42aab8b 100644 --- a/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.po @@ -4,7 +4,7 @@ # # Translators: # Aifen Qin <yinian1992@live.com>, 2015 -# 刘振涛 <lenville@gmail.com>, 2013 +# Lenville Leo <lenville@gmail.com>, 2013 # Ryekee Zhong <ryekee@gmail.com>, 2013 # Tower Joo<zhutao.iscas@gmail.com>, 2009 # Aifen Qin <yinian1992@live.com>, 2013 @@ -12,61 +12,42 @@ msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 13:01+0000\n" -"Last-Translator: Takayuki Shimizukawa <shimizukawa@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-06 13:53+0000\n" +"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n" "Language-Team: Chinese (China) (http://www.transifex.com/sphinx-doc/sphinx-1/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "图 %s" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "表 %s" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "列表 %s" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "%s %s 文档" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "见 %s" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "参见 %s" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "符号" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python 提高建议; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "内置" @@ -75,8 +56,11 @@ msgstr "内置" msgid "Module level" msgstr "模块级别" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" msgstr "" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 @@ -87,18 +71,28 @@ msgstr "总目录" msgid "index" msgstr "索引" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "下一页" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "上一页" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s 文档" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr "(在" +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "节作者:" @@ -115,23 +109,23 @@ msgstr "代码作者:" msgid "Author: " msgstr "作者:" -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "参数" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "返回" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "返回类型" @@ -160,12 +154,12 @@ msgstr "%s (C 类型)" msgid "%s (C variable)" msgstr "%s (C 变量)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "函数" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "成员" @@ -173,7 +167,7 @@ msgstr "成员" msgid "macro" msgstr "宏" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "类型" @@ -181,63 +175,72 @@ msgstr "类型" msgid "variable" msgstr "变量" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" msgstr "" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "抛出" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (C++ 类型)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (C++ 成员)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (C++ 函数)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (C++ 类)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "%s (C++ 枚举)" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "%s (C++ 枚举子)" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "类" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "枚举" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "枚举子" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (內置函数)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (%s 方法)" @@ -252,7 +255,7 @@ msgstr "%s() (类)" msgid "%s (global variable or constant)" msgstr "%s (全局变量或常量)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (%s 属性)" @@ -261,116 +264,116 @@ msgstr "%s (%s 属性)" msgid "Arguments" msgstr "参数" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "数据" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "属性" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "变量" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "引发" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (在 %s 模块中)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (內置变量)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s() (在 %s 模块中)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (內置类)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (%s 中的类)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (%s.%s 方法)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (%s.%s 静态方法)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (%s 静态方法)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "%s() (%s.%s 类方法)" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "%s() (%s 类方法)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (%s.%s 属性)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (模块)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "Python 模块索引" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "模块" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "已移除" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "例外" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "方法" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "类方法" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "静态方法" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "模块" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr " (已移除)" @@ -392,120 +395,147 @@ msgstr "指示" msgid "role" msgstr "角色" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "环境变量; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%s命令行选项; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "术语" -#: sphinx/domains/std.py:434 +#: sphinx/domains/std.py:435 msgid "grammar token" msgstr "语法记号" -#: sphinx/domains/std.py:435 +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "引用标签" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "环境变量" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "程序选项" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "索引" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "模块索引" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "搜索页面" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" -msgstr " 基类:%s" +msgid "see %s" +msgstr "见 %s" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "参见 %s" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "符号" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr ":class:`%s` 的别名" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" msgstr "[图表:%s]" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" msgstr "[图表]" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "(在 %s v%s)" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[源代码]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "待处理" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "原始记录" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[文档]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "模块代码" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "<h1>%s 源代码</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "概览:模块代码" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "<h1>代码可用的所有模块</h1>" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "注意" @@ -586,7 +616,7 @@ msgstr "內置函数" msgid "Table Of Contents" msgstr "內容目录" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -644,15 +674,15 @@ msgstr "快速查看所有的模块" msgid "all functions, classes, terms" msgstr "所的函数,类,术语" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "索引 – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "一页的全部索引" @@ -668,35 +698,35 @@ msgstr "可能会很多" msgid "Navigation" msgstr "导航" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "在 %(docstitle)s 中搜索" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "关于这些文档" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "版权所有" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">版权所有</a> %(copyright)s." +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© 版权所有 %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "最后更新于 %(last_updated)s." -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -745,13 +775,13 @@ msgstr "搜索" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "搜索结果" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -768,13 +798,13 @@ msgstr "本页" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "更改发生在版本 %(version)s — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -793,12 +823,13 @@ msgstr "C API 更改" msgid "Other changes" msgstr "其他更改" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "永久链接至标题" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "永久链接至目标" @@ -814,12 +845,12 @@ msgstr "搜索中" msgid "Preparing search..." msgstr "准备搜索……" -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "搜索完成,有 %s 个页面匹配。" -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr ",在" @@ -836,48 +867,53 @@ msgstr "折叠边栏" msgid "Contents" msgstr "目录" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "永久链接至代码" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "永久链接至图片" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "永久链接至目录树" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "永久链接至表格" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "发布" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "脚注" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "续上页" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "下页继续" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "[图片: %s]" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[图片]" diff --git a/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.js b/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.js index b8bcec275..1e434fe1d 100644 --- a/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.js +++ b/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.js @@ -1 +1 @@ -Documentation.addTranslations({"locale": "zh_Hant_TW", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">\u7248\u6b0a\u6240\u6709</a> %(copyright)s\u3002", "© Copyright %(copyright)s.": "© \u7248\u6b0a\u6240\u6709 %(copyright)s.", ", in ": " \u65bc ", "About these documents": "\u95dc\u65bc\u9019\u4e9b\u6587\u4ef6", "Automatically generated list of changes in version %(version)s": "\u81ea\u52d5\u7522\u751f\u7684 %(version)s \u7248\u672c\u6539\u8b8a\u5217\u8868", "C API changes": "C API \u6539\u8b8a", "Changes in Version %(version)s — %(docstitle)s": "\u65bc %(version)s \u7248\u672c\u4e2d\u7684\u6539\u8b8a — %(docstitle)s", "Collapse sidebar": "\u6536\u5408\u5074\u908a\u6b04", "Complete Table of Contents": "\u5b8c\u6574\u76ee\u9304", "Contents": "\u5167\u5bb9", "Copyright": "\u7248\u6b0a\u6240\u6709", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "\u4f7f\u7528 <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s \u5275\u5efa\u3002", "Expand sidebar": "\u5c55\u958b\u5074\u908a\u6b04", "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.": "\u4f60\u53ef\u4ee5\u5f9e\u9019\u88e1\u641c\u5c0b\u6587\u4ef6\u3002\u8f38\u5165\u641c\u5c0b\u8a5e\u81f3\u5e95\u4e0b\u7684\u6587\u5b57\u6846\u4e26\u9ede\u64ca\u300c\u641c\u5c0b\u300d\u3002\u6ce8\u610f\u641c\u5c0b\u529f\u80fd\u6703\u81ea\u52d5\u5c0b\u627e\u6eff\u8db3\u6240\u6709\u8a5e\u7684\u7d50\u679c\u3002\u53ea\u6eff\u8db3\u5c11\u90e8\u4efd\u641c\u5c0b\u8a5e\u7684\u9801\u9762\u5c07\u4e0d\u4e88\u986f\u793a\u5728\u7d50\u679c\u6e05\u55ae\u4e2d\u3002", "Full index on one page": "\u55ae\u9801\u5b8c\u6574\u7d22\u5f15", "General Index": "\u7e3d\u7d22\u5f15", "Global Module Index": "\u5168\u57df\u6a21\u7d44\u7d22\u5f15", "Go": "\u524d\u5f80", "Hide Search Matches": "\u96b1\u85cf\u543b\u5408\u641c\u5c0b\u7684\u4e0a\u8272", "Index": "\u7d22\u5f15", "Index – %(key)s": "\u7d22\u5f15 – %(key)s", "Index pages by letter": "\u7d22\u5f15\u9801\u9762\u6309\u5b57\u6bcd", "Indices and tables:": "\u7d22\u5f15\u8207\u8868\u683c\uff1a", "Last updated on %(last_updated)s.": "\u6700\u5f8c\u66f4\u65b0\u65bc %(last_updated)s\u3002", "Library changes": "\u51fd\u5f0f\u5eab\u7684\u6539\u8b8a", "Navigation": "\u700f\u89bd", "Next topic": "\u4e0b\u4e00\u500b\u4e3b\u984c", "Other changes": "\u5176\u4ed6\u6539\u8b8a", "Overview": "\u6982\u8981", "Permalink to this definition": "\u672c\u5b9a\u7fa9\u7684\u6c38\u4e45\u9023\u7d50", "Permalink to this headline": "\u672c\u6a19\u984c\u7684\u6c38\u4e45\u9023\u7d50", "Please activate JavaScript to enable the search\n functionality.": "\u8acb\u555f\u7528 Javascript \u4ee5\u958b\u555f\u641c\u5c0b\u529f\u80fd\u3002", "Preparing search...": "\u6e96\u5099\u641c\u5c0b\u4e2d\u2026", "Previous topic": "\u4e0a\u4e00\u500b\u4e3b\u984c", "Quick search": "\u5feb\u901f\u641c\u5c0b", "Search": "\u641c\u5c0b", "Search Page": "\u641c\u5c0b\u9801\u9762", "Search Results": "\u641c\u5c0b\u7d50\u679c", "Search finished, found %s page(s) matching the search query.": "\u641c\u5c0b\u5b8c\u6210\uff0c\u5171\u627e\u5230 %s \u9801\u9762\u6eff\u8db3\u641c\u5c0b\u689d\u4ef6\u3002", "Search within %(docstitle)s": "\u5728 %(docstitle)s \u4e2d\u641c\u5c0b", "Searching": "\u641c\u5c0b\u4e2d", "Show Source": "\u986f\u793a\u539f\u59cb\u78bc", "Table Of Contents": "\u76ee\u9304", "This Page": "\u672c\u9801", "Welcome! This is": "\u6b61\u8fce\uff01\u672c", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "\u4f60\u7684\u641c\u5c0b\u627e\u4e0d\u5230\u4efb\u4f55\u6eff\u8db3\u689d\u4ef6\u7684\u6587\u4ef6\u3002\u8acb\u78ba\u5b9a\u662f\u5426\u6240\u6709\u7684\u641c\u5c0b\u8a5e\u90fd\u6b63\u78ba\u5730\u62fc\u5beb\u4e14\u4f60\u5df2\u9078\u64c7\u8db3\u5920\u7684\u5206\u985e\u3002", "all functions, classes, terms": "\u6240\u6709\u51fd\u5f0f\u3001\u985e\u5225\u3001\u8853\u8a9e", "can be huge": "\u53ef\u80fd\u6703\u5f88\u5927", "last updated": "\u6700\u5f8c\u66f4\u65b0\u65bc", "lists all sections and subsections": "\u5217\u51fa\u6240\u6709\u6bb5\u843d\u8207\u5b50\u6bb5\u843d", "next chapter": "\u4e0b\u4e00\u7ae0", "previous chapter": "\u4e0a\u4e00\u7ae0", "quick access to all modules": "\u5feb\u901f\u524d\u5f80\u6240\u6709\u7684\u6a21\u7d44", "search": "\u641c\u5c0b", "search this documentation": "\u641c\u5c0b\u672c\u8aaa\u660e\u6587\u4ef6", "the documentation for": "\u8aaa\u660e\u6587\u4ef6\u4ecb\u7d39"}, "plural_expr": "0"}); \ No newline at end of file +Documentation.addTranslations({"locale": "zh_Hant_TW", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">\u7248\u6b0a\u6240\u6709</a> %(copyright)s\u3002", "© Copyright %(copyright)s.": "© \u7248\u6b0a\u6240\u6709 %(copyright)s\u3002", ", in ": " \u65bc ", "About these documents": "\u95dc\u65bc\u9019\u4e9b\u6587\u4ef6", "Automatically generated list of changes in version %(version)s": "\u81ea\u52d5\u7522\u751f\u7684 %(version)s \u7248\u672c\u6539\u8b8a\u5217\u8868", "C API changes": "C API \u6539\u8b8a", "Changes in Version %(version)s — %(docstitle)s": "\u65bc %(version)s \u7248\u672c\u4e2d\u7684\u6240\u6709\u66f4\u8b8a — %(docstitle)s", "Collapse sidebar": "\u6536\u5408\u5074\u908a\u6b04", "Complete Table of Contents": "\u5b8c\u6574\u76ee\u9304", "Contents": "\u5167\u5bb9", "Copyright": "\u7248\u6b0a\u6240\u6709", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "\u4f7f\u7528 <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s \u5275\u5efa\u3002", "Expand sidebar": "\u5c55\u958b\u5074\u908a\u6b04", "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.": "\u4f60\u53ef\u4ee5\u5f9e\u9019\u88e1\u641c\u5c0b\u6587\u4ef6\u3002\u8f38\u5165\u641c\u5c0b\u8a5e\u81f3\u5e95\u4e0b\u7684\u6587\u5b57\u6846\u4e26\u9ede\u64ca\u300c\u641c\u5c0b\u300d\u3002\u6ce8\u610f\u641c\u5c0b\u529f\u80fd\u6703\u81ea\u52d5\u5c0b\u627e\u6eff\u8db3\u6240\u6709\u8a5e\u7684\u7d50\u679c\u3002\u53ea\u6eff\u8db3\u5c11\u90e8\u4efd\u641c\u5c0b\u8a5e\u7684\u9801\u9762\u5c07\u4e0d\u4e88\u986f\u793a\u5728\u7d50\u679c\u6e05\u55ae\u4e2d\u3002", "Full index on one page": "\u55ae\u9801\u5b8c\u6574\u7d22\u5f15", "General Index": "\u7e3d\u7d22\u5f15", "Global Module Index": "\u5168\u57df\u6a21\u7d44\u7d22\u5f15", "Go": "\u524d\u5f80", "Hide Search Matches": "\u96b1\u85cf\u543b\u5408\u641c\u5c0b\u7684\u4e0a\u8272", "Index": "\u7d22\u5f15", "Index – %(key)s": "\u7d22\u5f15 – %(key)s", "Index pages by letter": "\u7d22\u5f15\u9801\u9762\u6309\u5b57\u6bcd", "Indices and tables:": "\u7d22\u5f15\u8207\u8868\u683c\uff1a", "Last updated on %(last_updated)s.": "\u6700\u5f8c\u66f4\u65b0\u65bc %(last_updated)s\u3002", "Library changes": "\u51fd\u5f0f\u5eab\u7684\u6539\u8b8a", "Navigation": "\u700f\u89bd", "Next topic": "\u4e0b\u4e00\u500b\u4e3b\u984c", "Other changes": "\u5176\u4ed6\u6539\u8b8a", "Overview": "\u6982\u8981", "Permalink to this definition": "\u672c\u5b9a\u7fa9\u7684\u6c38\u4e45\u9023\u7d50", "Permalink to this headline": "\u672c\u6a19\u984c\u7684\u6c38\u4e45\u9023\u7d50", "Please activate JavaScript to enable the search\n functionality.": "\u8acb\u555f\u7528 Javascript \u4ee5\u958b\u555f\u641c\u5c0b\u529f\u80fd\u3002", "Preparing search...": "\u6e96\u5099\u641c\u5c0b\u4e2d\u2026", "Previous topic": "\u4e0a\u4e00\u500b\u4e3b\u984c", "Quick search": "\u5feb\u901f\u641c\u5c0b", "Search": "\u641c\u5c0b", "Search Page": "\u641c\u5c0b\u9801\u9762", "Search Results": "\u641c\u5c0b\u7d50\u679c", "Search finished, found %s page(s) matching the search query.": "\u641c\u5c0b\u5b8c\u6210\uff0c\u5171\u627e\u5230 %s \u9801\u9762\u6eff\u8db3\u641c\u5c0b\u689d\u4ef6\u3002", "Search within %(docstitle)s": "\u5728 %(docstitle)s \u4e2d\u641c\u5c0b", "Searching": "\u641c\u5c0b\u4e2d", "Show Source": "\u986f\u793a\u539f\u59cb\u78bc", "Table Of Contents": "\u76ee\u9304", "This Page": "\u672c\u9801", "Welcome! This is": "\u6b61\u8fce\uff01\u672c", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "\u4f60\u7684\u641c\u5c0b\u627e\u4e0d\u5230\u4efb\u4f55\u6eff\u8db3\u689d\u4ef6\u7684\u6587\u4ef6\u3002\u8acb\u78ba\u5b9a\u662f\u5426\u6240\u6709\u7684\u641c\u5c0b\u8a5e\u90fd\u6b63\u78ba\u5730\u62fc\u5beb\u4e14\u4f60\u5df2\u9078\u64c7\u8db3\u5920\u7684\u5206\u985e\u3002", "all functions, classes, terms": "\u6240\u6709\u51fd\u5f0f\u3001\u985e\u5225\u3001\u8853\u8a9e", "can be huge": "\u53ef\u80fd\u6703\u5f88\u5927", "last updated": "\u6700\u5f8c\u66f4\u65b0\u65bc", "lists all sections and subsections": "\u5217\u51fa\u6240\u6709\u6bb5\u843d\u8207\u5b50\u6bb5\u843d", "next chapter": "\u4e0b\u4e00\u7ae0", "previous chapter": "\u4e0a\u4e00\u7ae0", "quick access to all modules": "\u5feb\u901f\u524d\u5f80\u6240\u6709\u7684\u6a21\u7d44", "search": "\u641c\u5c0b", "search this documentation": "\u641c\u5c0b\u672c\u8aaa\u660e\u6587\u4ef6", "the documentation for": "\u8aaa\u660e\u6587\u4ef6\u4ecb\u7d39"}, "plural_expr": "0"}); \ No newline at end of file diff --git a/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.mo b/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.mo index 8bfbe7c82a7930120ddfaa01b3b0658653829dc4..001e19d4d639f13e1fe6bc0d42044ec96b45080e 100644 GIT binary patch delta 3900 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 Rj0<=64L@}#bktMj`Y*B+FC+i} delta 3505 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 AGynhq diff --git a/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.po b/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.po index 80c8bd8be..3d52787f8 100644 --- a/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.po +++ b/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.po @@ -4,66 +4,48 @@ # # Translators: # Fred Lin <gasolin@gmail.com>, 2008 -# Liang Bo Wang <ccwang002@gmail.com>, 2016 +# Liang Bo Wang <me@liang2.tw>, 2016 +# Liang Bo Wang <me@liang2.tw>, 2016 msgid "" msgstr "" "Project-Id-Version: Sphinx\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2016-03-06 21:58+0900\n" -"PO-Revision-Date: 2016-03-06 15:35+0000\n" -"Last-Translator: Liang Bo Wang <ccwang002@gmail.com>\n" +"POT-Creation-Date: 2016-11-06 22:40+0900\n" +"PO-Revision-Date: 2016-11-22 02:50+0000\n" +"Last-Translator: Liang Bo Wang <me@liang2.tw>\n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/sphinx-doc/sphinx-1/language/zh_TW/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.2.0\n" +"Generated-By: Babel 2.3.4\n" "Language: zh_TW\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: sphinx/config.py:91 +#: sphinx/config.py:109 +#, python-format +msgid "Section %s" +msgstr "段落 %s" + +#: sphinx/config.py:110 #, python-format msgid "Fig. %s" msgstr "圖 %s" -#: sphinx/config.py:92 +#: sphinx/config.py:111 #, python-format msgid "Table %s" msgstr "表 %s" -#: sphinx/config.py:93 +#: sphinx/config.py:112 #, python-format msgid "Listing %s" msgstr "程式 %s" -#: sphinx/config.py:100 -#, python-format -msgid "%s %s documentation" -msgstr "%s %s 說明文件" - -#: sphinx/environment.py:1829 -#, python-format -msgid "see %s" -msgstr "參考 %s" - -#: sphinx/environment.py:1833 -#, python-format -msgid "see also %s" -msgstr "亦參考 %s" - -#: sphinx/environment.py:1893 -msgid "Symbols" -msgstr "符號" - -#: sphinx/roles.py:193 +#: sphinx/roles.py:187 #, python-format msgid "Python Enhancement Proposals; PEP %s" msgstr "Python Enhancement Proposals; PEP %s" -#: sphinx/transforms.py:56 sphinx/writers/latex.py:374 -#: sphinx/writers/manpage.py:101 sphinx/writers/texinfo.py:222 -msgid "MMMM dd, YYYY" -msgstr "YYYY 年 MMMM 月 dd 日" - #: sphinx/builders/changes.py:75 msgid "Builtins" msgstr "內建" @@ -72,9 +54,12 @@ msgstr "內建" msgid "Module level" msgstr "模組層次" -#: sphinx/builders/html.py:295 -msgid "MMM dd, YYYY" -msgstr "YYYY 年 MMMM 月 dd 日" +#: sphinx/builders/html.py:294 sphinx/transforms/__init__.py:46 +#: sphinx/writers/latex.py:393 sphinx/writers/manpage.py:100 +#: sphinx/writers/texinfo.py:221 +#, python-format +msgid "%b %d, %Y" +msgstr "%Y 年 %m 月 %d 日" #: sphinx/builders/html.py:315 sphinx/themes/basic/defindex.html:30 msgid "General Index" @@ -84,18 +69,28 @@ msgstr "總索引" msgid "index" msgstr "索引" -#: sphinx/builders/html.py:376 +#: sphinx/builders/html.py:377 msgid "next" msgstr "下一頁" -#: sphinx/builders/html.py:385 +#: sphinx/builders/html.py:386 msgid "previous" msgstr "上一頁" -#: sphinx/builders/latex.py:180 sphinx/builders/texinfo.py:199 +#: sphinx/builders/html.py:1222 +#, python-format +msgid "%s %s documentation" +msgstr "%s %s 說明文件" + +#: sphinx/builders/latex.py:177 sphinx/builders/texinfo.py:199 msgid " (in " msgstr "(於" +#: sphinx/directives/code.py:140 sphinx/directives/code.py:370 +#, python-format +msgid "Invalid caption: %s" +msgstr "無效標題:%s" + #: sphinx/directives/other.py:149 msgid "Section author: " msgstr "段落作者:" @@ -112,23 +107,23 @@ msgstr "程式作者:" msgid "Author: " msgstr "作者:" -#: sphinx/domains/__init__.py:275 +#: sphinx/domains/__init__.py:277 #, python-format msgid "%s %s" msgstr "%s %s" -#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:3605 -#: sphinx/domains/python.py:124 +#: sphinx/domains/c.py:58 sphinx/domains/cpp.py:4051 +#: sphinx/domains/python.py:149 msgid "Parameters" msgstr "參數" -#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:3614 -#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:136 +#: sphinx/domains/c.py:61 sphinx/domains/cpp.py:4060 +#: sphinx/domains/javascript.py:128 sphinx/domains/python.py:161 msgid "Returns" msgstr "回傳" #: sphinx/domains/c.py:63 sphinx/domains/javascript.py:130 -#: sphinx/domains/python.py:138 +#: sphinx/domains/python.py:163 msgid "Return type" msgstr "回傳型態" @@ -157,12 +152,12 @@ msgstr "%s (C 型態)" msgid "%s (C variable)" msgstr "%s (C 變數)" -#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:3953 -#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:589 +#: sphinx/domains/c.py:242 sphinx/domains/cpp.py:4418 +#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:614 msgid "function" msgstr "函式" -#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:3954 +#: sphinx/domains/c.py:243 sphinx/domains/cpp.py:4419 msgid "member" msgstr "成員" @@ -170,7 +165,7 @@ msgstr "成員" msgid "macro" msgstr "巨集" -#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:3955 +#: sphinx/domains/c.py:245 sphinx/domains/cpp.py:4420 msgid "type" msgstr "類別" @@ -178,63 +173,72 @@ msgstr "類別" msgid "variable" msgstr "變數" -#: sphinx/domains/cpp.py:3608 +#: sphinx/domains/cpp.py:4054 msgid "Template Parameters" -msgstr "Template 參數" +msgstr "模版參數" -#: sphinx/domains/cpp.py:3611 sphinx/domains/javascript.py:125 +#: sphinx/domains/cpp.py:4057 sphinx/domains/javascript.py:125 msgid "Throws" msgstr "丟出" -#: sphinx/domains/cpp.py:3733 +#: sphinx/domains/cpp.py:4205 #, python-format msgid "%s (C++ type)" msgstr "%s (C++ 類別)" -#: sphinx/domains/cpp.py:3744 +#: sphinx/domains/cpp.py:4216 +#, python-format +msgid "%s (C++ concept)" +msgstr "%s (C++ concept)" + +#: sphinx/domains/cpp.py:4227 #, python-format msgid "%s (C++ member)" msgstr "%s (C++ 成員)" -#: sphinx/domains/cpp.py:3755 +#: sphinx/domains/cpp.py:4238 #, python-format msgid "%s (C++ function)" msgstr "%s (C++ 函式)" -#: sphinx/domains/cpp.py:3766 +#: sphinx/domains/cpp.py:4249 #, python-format msgid "%s (C++ class)" msgstr "%s (C++ 類別)" -#: sphinx/domains/cpp.py:3786 +#: sphinx/domains/cpp.py:4260 #, python-format msgid "%s (C++ enum)" msgstr "%s (C++ enum)" -#: sphinx/domains/cpp.py:3816 +#: sphinx/domains/cpp.py:4281 #, python-format msgid "%s (C++ enumerator)" msgstr "%s (C++ enumerator)" -#: sphinx/domains/cpp.py:3952 sphinx/domains/javascript.py:165 -#: sphinx/domains/python.py:591 +#: sphinx/domains/cpp.py:4417 sphinx/domains/javascript.py:165 +#: sphinx/domains/python.py:616 msgid "class" msgstr "類別" -#: sphinx/domains/cpp.py:3956 +#: sphinx/domains/cpp.py:4421 +msgid "concept" +msgstr "concept" + +#: sphinx/domains/cpp.py:4422 msgid "enum" msgstr "enum" -#: sphinx/domains/cpp.py:3957 +#: sphinx/domains/cpp.py:4423 msgid "enumerator" msgstr "enumerator" -#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:282 +#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:307 #, python-format msgid "%s() (built-in function)" msgstr "%s() (內建函式)" -#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:346 +#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:371 #, python-format msgid "%s() (%s method)" msgstr "%s() (%s 的方法)" @@ -249,7 +253,7 @@ msgstr "%s() (類別)" msgid "%s (global variable or constant)" msgstr "%s (全域變數或常數)" -#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:384 +#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:409 #, python-format msgid "%s (%s attribute)" msgstr "%s (%s 的屬性)" @@ -258,116 +262,116 @@ msgstr "%s (%s 的屬性)" msgid "Arguments" msgstr "引數" -#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:590 +#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:615 msgid "data" msgstr "data" -#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:596 +#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:621 msgid "attribute" msgstr "屬性" -#: sphinx/domains/python.py:129 +#: sphinx/domains/python.py:154 msgid "Variables" msgstr "變數" -#: sphinx/domains/python.py:133 +#: sphinx/domains/python.py:158 msgid "Raises" msgstr "丟出" -#: sphinx/domains/python.py:283 sphinx/domains/python.py:340 -#: sphinx/domains/python.py:352 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:308 sphinx/domains/python.py:365 +#: sphinx/domains/python.py:377 sphinx/domains/python.py:390 #, python-format msgid "%s() (in module %s)" msgstr "%s() (於 %s 模組中)" -#: sphinx/domains/python.py:286 +#: sphinx/domains/python.py:311 #, python-format msgid "%s (built-in variable)" msgstr "%s (內建變數)" -#: sphinx/domains/python.py:287 sphinx/domains/python.py:378 +#: sphinx/domains/python.py:312 sphinx/domains/python.py:403 #, python-format msgid "%s (in module %s)" msgstr "%s (於 %s 模組中)" -#: sphinx/domains/python.py:303 +#: sphinx/domains/python.py:328 #, python-format msgid "%s (built-in class)" msgstr "%s (內建類別)" -#: sphinx/domains/python.py:304 +#: sphinx/domains/python.py:329 #, python-format msgid "%s (class in %s)" msgstr "%s (%s 中的類別)" -#: sphinx/domains/python.py:344 +#: sphinx/domains/python.py:369 #, python-format msgid "%s() (%s.%s method)" msgstr "%s() (%s.%s 的方法)" -#: sphinx/domains/python.py:356 +#: sphinx/domains/python.py:381 #, python-format msgid "%s() (%s.%s static method)" msgstr "%s() (%s.%s 的靜態方法)" -#: sphinx/domains/python.py:359 +#: sphinx/domains/python.py:384 #, python-format msgid "%s() (%s static method)" msgstr "%s() (%s 的靜態方法)" -#: sphinx/domains/python.py:369 +#: sphinx/domains/python.py:394 #, python-format msgid "%s() (%s.%s class method)" msgstr "%s() (%s.%s 的類別方法)" -#: sphinx/domains/python.py:372 +#: sphinx/domains/python.py:397 #, python-format msgid "%s() (%s class method)" msgstr "%s() (%s 的類別方法)" -#: sphinx/domains/python.py:382 +#: sphinx/domains/python.py:407 #, python-format msgid "%s (%s.%s attribute)" msgstr "%s (%s.%s 的屬性)" -#: sphinx/domains/python.py:463 +#: sphinx/domains/python.py:488 #, python-format msgid "%s (module)" msgstr "%s (模組)" -#: sphinx/domains/python.py:520 +#: sphinx/domains/python.py:545 msgid "Python Module Index" msgstr "Python 模組索引" -#: sphinx/domains/python.py:521 +#: sphinx/domains/python.py:546 msgid "modules" msgstr "模組" -#: sphinx/domains/python.py:567 +#: sphinx/domains/python.py:592 msgid "Deprecated" msgstr "已棄用" -#: sphinx/domains/python.py:592 sphinx/locale/__init__.py:183 +#: sphinx/domains/python.py:617 sphinx/locale/__init__.py:183 msgid "exception" msgstr "例外" -#: sphinx/domains/python.py:593 +#: sphinx/domains/python.py:618 msgid "method" msgstr "方法" -#: sphinx/domains/python.py:594 +#: sphinx/domains/python.py:619 msgid "class method" msgstr "類別方法" -#: sphinx/domains/python.py:595 +#: sphinx/domains/python.py:620 msgid "static method" msgstr "靜態方法" -#: sphinx/domains/python.py:597 sphinx/locale/__init__.py:179 +#: sphinx/domains/python.py:622 sphinx/locale/__init__.py:179 msgid "module" msgstr "模組" -#: sphinx/domains/python.py:762 +#: sphinx/domains/python.py:787 msgid " (deprecated)" msgstr "(已棄用)" @@ -389,120 +393,147 @@ msgstr "directive" msgid "role" msgstr "role" -#: sphinx/domains/std.py:73 sphinx/domains/std.py:89 +#: sphinx/domains/std.py:72 sphinx/domains/std.py:88 #, python-format msgid "environment variable; %s" msgstr "環境變數; %s" -#: sphinx/domains/std.py:185 +#: sphinx/domains/std.py:186 #, python-format msgid "%scommand line option; %s" msgstr "%s命令列選項; %s" -#: sphinx/domains/std.py:433 +#: sphinx/domains/std.py:434 msgid "glossary term" msgstr "雜項術語" -#: sphinx/domains/std.py:434 -msgid "grammar token" -msgstr "語法 token" - #: sphinx/domains/std.py:435 +msgid "grammar token" +msgstr "語法單詞" + +#: sphinx/domains/std.py:436 msgid "reference label" msgstr "參照標籤" -#: sphinx/domains/std.py:437 +#: sphinx/domains/std.py:438 msgid "environment variable" msgstr "環境變數" -#: sphinx/domains/std.py:438 +#: sphinx/domains/std.py:439 msgid "program option" msgstr "程式選項" -#: sphinx/domains/std.py:471 sphinx/themes/basic/genindex-single.html:32 -#: sphinx/themes/basic/genindex-single.html:57 +#: sphinx/domains/std.py:473 sphinx/themes/basic/genindex-single.html:30 +#: sphinx/themes/basic/genindex-single.html:55 #: sphinx/themes/basic/genindex-split.html:11 #: sphinx/themes/basic/genindex-split.html:14 -#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35 -#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134 -#: sphinx/writers/latex.py:363 sphinx/writers/texinfo.py:481 +#: sphinx/themes/basic/genindex.html:30 sphinx/themes/basic/genindex.html:33 +#: sphinx/themes/basic/genindex.html:66 sphinx/themes/basic/layout.html:135 +#: sphinx/writers/latex.py:381 sphinx/writers/texinfo.py:480 msgid "Index" msgstr "索引" -#: sphinx/domains/std.py:472 +#: sphinx/domains/std.py:474 msgid "Module Index" msgstr "模組索引" -#: sphinx/domains/std.py:473 sphinx/themes/basic/defindex.html:25 +#: sphinx/domains/std.py:475 sphinx/themes/basic/defindex.html:25 msgid "Search Page" msgstr "搜尋頁面" -#: sphinx/ext/autodoc.py:1265 +#: sphinx/environment/managers/indexentries.py:104 #, python-format -msgid " Bases: %s" -msgstr " Bases: %s" +msgid "see %s" +msgstr "參考 %s" -#: sphinx/ext/autodoc.py:1318 +#: sphinx/environment/managers/indexentries.py:108 +#, python-format +msgid "see also %s" +msgstr "亦參考 %s" + +#: sphinx/environment/managers/indexentries.py:168 +msgid "Symbols" +msgstr "符號" + +#: sphinx/ext/autodoc.py:1297 +#, python-format +msgid "Bases: %s" +msgstr "基礎類別:%s" + +#: sphinx/ext/autodoc.py:1350 #, python-format msgid "alias of :class:`%s`" msgstr ":class:`%s` 的別名" -#: sphinx/ext/graphviz.py:309 sphinx/ext/graphviz.py:318 +#: sphinx/ext/graphviz.py:331 sphinx/ext/graphviz.py:340 #, python-format msgid "[graph: %s]" -msgstr "[graph: %s]" +msgstr "[圖:%s]" -#: sphinx/ext/graphviz.py:311 sphinx/ext/graphviz.py:320 +#: sphinx/ext/graphviz.py:333 sphinx/ext/graphviz.py:342 msgid "[graph]" -msgstr "[graph]" +msgstr "[圖]" -#: sphinx/ext/intersphinx.py:359 +#: sphinx/ext/imgmath.py:258 sphinx/ext/jsmath.py:39 sphinx/ext/mathjax.py:40 +msgid "Permalink to this equation" +msgstr "本公式的永久連結" + +#: sphinx/ext/intersphinx.py:337 #, python-format msgid "(in %s v%s)" msgstr "(於 %s v%s)" -#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:99 +#: sphinx/ext/linkcode.py:69 sphinx/ext/viewcode.py:103 msgid "[source]" msgstr "[原始碼]" +#: sphinx/ext/mathbase.py:92 +#, python-format +msgid "duplicate label of equation %s, other instance in %s" +msgstr "重覆公式標籤 %s,亦出現於 %s" + #: sphinx/ext/todo.py:56 msgid "Todo" msgstr "Todo" -#: sphinx/ext/todo.py:129 +#: sphinx/ext/todo.py:134 msgid "<<original entry>>" msgstr "<<original entry>>" -#: sphinx/ext/todo.py:132 +#: sphinx/ext/todo.py:137 #, python-format msgid "(The <<original entry>> is located in %s, line %d.)" msgstr "(<<original entry>> 見 %s ,第 %d 行)" -#: sphinx/ext/todo.py:141 +#: sphinx/ext/todo.py:146 msgid "original entry" msgstr "原始記錄" -#: sphinx/ext/viewcode.py:162 +#: sphinx/ext/viewcode.py:166 msgid "[docs]" msgstr "[文件]" -#: sphinx/ext/viewcode.py:176 +#: sphinx/ext/viewcode.py:180 msgid "Module code" msgstr "模組原始碼" -#: sphinx/ext/viewcode.py:182 +#: sphinx/ext/viewcode.py:186 #, python-format msgid "<h1>Source code for %s</h1>" msgstr "<h1>%s 的原始碼</h1>" -#: sphinx/ext/viewcode.py:208 +#: sphinx/ext/viewcode.py:212 msgid "Overview: module code" msgstr "概要:模組原始碼" -#: sphinx/ext/viewcode.py:209 +#: sphinx/ext/viewcode.py:213 msgid "<h1>All modules for which code is available</h1>" msgstr "<h1>所有可得程式碼的模組</h1>" +#: sphinx/ext/napoleon/__init__.py:313 +msgid "Keyword Arguments" +msgstr "關鍵字引數" + #: sphinx/locale/__init__.py:159 msgid "Attention" msgstr "注意" @@ -583,7 +614,7 @@ msgstr "內建函式" msgid "Table Of Contents" msgstr "目錄" -#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:137 +#: sphinx/themes/agogo/layout.html:51 sphinx/themes/basic/layout.html:138 #: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:23 #: sphinx/themes/basic/searchresults.html:10 msgid "Search" @@ -641,15 +672,15 @@ msgstr "快速前往所有的模組" msgid "all functions, classes, terms" msgstr "所有函式、類別、術語" -#: sphinx/themes/basic/genindex-single.html:35 +#: sphinx/themes/basic/genindex-single.html:33 #, python-format msgid "Index – %(key)s" msgstr "索引 – %(key)s" -#: sphinx/themes/basic/genindex-single.html:63 +#: sphinx/themes/basic/genindex-single.html:61 #: sphinx/themes/basic/genindex-split.html:24 #: sphinx/themes/basic/genindex-split.html:38 -#: sphinx/themes/basic/genindex.html:74 +#: sphinx/themes/basic/genindex.html:72 msgid "Full index on one page" msgstr "單頁完整索引" @@ -665,35 +696,35 @@ msgstr "可能會很大" msgid "Navigation" msgstr "瀏覽" -#: sphinx/themes/basic/layout.html:122 +#: sphinx/themes/basic/layout.html:123 #, python-format msgid "Search within %(docstitle)s" msgstr "在 %(docstitle)s 中搜尋" -#: sphinx/themes/basic/layout.html:131 +#: sphinx/themes/basic/layout.html:132 msgid "About these documents" msgstr "關於這些文件" -#: sphinx/themes/basic/layout.html:140 +#: sphinx/themes/basic/layout.html:141 msgid "Copyright" msgstr "版權所有" -#: sphinx/themes/basic/layout.html:189 +#: sphinx/themes/basic/layout.html:186 #, python-format -msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." -msgstr "© <a href=\"%(path)s\">版權所有</a> %(copyright)s。" +msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s." +msgstr "© <a href=\"%(path)s\">版權所有</a> %(copyright)s。" -#: sphinx/themes/basic/layout.html:191 +#: sphinx/themes/basic/layout.html:188 #, python-format -msgid "© Copyright %(copyright)s." -msgstr "© 版權所有 %(copyright)s." +msgid "© Copyright %(copyright)s." +msgstr "© 版權所有 %(copyright)s。" -#: sphinx/themes/basic/layout.html:195 +#: sphinx/themes/basic/layout.html:192 #, python-format msgid "Last updated on %(last_updated)s." msgstr "最後更新於 %(last_updated)s。" -#: sphinx/themes/basic/layout.html:198 +#: sphinx/themes/basic/layout.html:195 #, python-format msgid "" "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> " @@ -742,13 +773,13 @@ msgstr "搜尋" #: sphinx/themes/basic/search.html:43 #: sphinx/themes/basic/searchresults.html:21 -#: sphinx/themes/basic/static/searchtools.js_t:282 +#: sphinx/themes/basic/static/searchtools.js_t:287 msgid "Search Results" msgstr "搜尋結果" #: sphinx/themes/basic/search.html:45 #: sphinx/themes/basic/searchresults.html:23 -#: sphinx/themes/basic/static/searchtools.js_t:284 +#: sphinx/themes/basic/static/searchtools.js_t:289 msgid "" "Your search did not match any documents. Please make sure that all words are" " spelled correctly and that you've selected enough categories." @@ -765,13 +796,13 @@ msgstr "本頁" #: sphinx/themes/basic/changes/frameset.html:5 #: sphinx/themes/basic/changes/versionchanges.html:12 #, python-format -msgid "Changes in Version %(version)s — %(docstitle)s" -msgstr "於 %(version)s 版本中的改變 — %(docstitle)s" +msgid "Changes in Version %(version)s — %(docstitle)s" +msgstr "於 %(version)s 版本中的所有更變 — %(docstitle)s" #: sphinx/themes/basic/changes/rstsource.html:5 #, python-format -msgid "%(filename)s — %(docstitle)s" -msgstr "%(filename)s — %(docstitle)s" +msgid "%(filename)s — %(docstitle)s" +msgstr "%(filename)s — %(docstitle)s" #: sphinx/themes/basic/changes/versionchanges.html:17 #, python-format @@ -790,12 +821,13 @@ msgstr "C API 改變" msgid "Other changes" msgstr "其他改變" -#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:668 -#: sphinx/writers/html.py:673 +#: sphinx/themes/basic/static/doctools.js_t:169 sphinx/writers/html.py:708 +#: sphinx/writers/html.py:713 msgid "Permalink to this headline" msgstr "本標題的永久連結" -#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:105 +#: sphinx/themes/basic/static/doctools.js_t:175 sphinx/writers/html.py:108 +#: sphinx/writers/html.py:117 msgid "Permalink to this definition" msgstr "本定義的永久連結" @@ -811,12 +843,12 @@ msgstr "搜尋中" msgid "Preparing search..." msgstr "準備搜尋中…" -#: sphinx/themes/basic/static/searchtools.js_t:286 +#: sphinx/themes/basic/static/searchtools.js_t:291 #, python-format msgid "Search finished, found %s page(s) matching the search query." msgstr "搜尋完成,共找到 %s 頁面滿足搜尋條件。" -#: sphinx/themes/basic/static/searchtools.js_t:338 +#: sphinx/themes/basic/static/searchtools.js_t:344 msgid ", in " msgstr " 於 " @@ -833,48 +865,53 @@ msgstr "收合側邊欄" msgid "Contents" msgstr "內容" -#: sphinx/writers/html.py:349 +#: sphinx/writers/html.py:389 msgid "Permalink to this code" msgstr "本原始碼的永久連結" -#: sphinx/writers/html.py:353 +#: sphinx/writers/html.py:393 msgid "Permalink to this image" msgstr "本圖片的永久連結" -#: sphinx/writers/html.py:355 +#: sphinx/writers/html.py:395 msgid "Permalink to this toctree" msgstr "本目錄的永久連結" -#: sphinx/writers/html.py:677 +#: sphinx/writers/html.py:717 msgid "Permalink to this table" msgstr "本表格的永久連結" -#: sphinx/writers/latex.py:361 +#: sphinx/writers/latex.py:380 msgid "Release" msgstr "釋出" -#: sphinx/writers/latex.py:427 +#: sphinx/writers/latex.py:483 msgid "page" msgstr "頁" -#: sphinx/writers/latex.py:920 sphinx/writers/manpage.py:233 -#: sphinx/writers/texinfo.py:620 +#: sphinx/writers/latex.py:528 +#, python-format +msgid "Unknown configure key: latex_elements[%r] is ignored." +msgstr "未知設定鍵:latex_elements[%r] 將被忽略。" + +#: sphinx/writers/latex.py:1003 sphinx/writers/manpage.py:238 +#: sphinx/writers/texinfo.py:619 msgid "Footnotes" msgstr "腳註" -#: sphinx/writers/latex.py:1022 +#: sphinx/writers/latex.py:1112 msgid "continued from previous page" msgstr "呈接上一頁" -#: sphinx/writers/latex.py:1028 +#: sphinx/writers/latex.py:1118 msgid "Continued on next page" msgstr "下一頁繼續" -#: sphinx/writers/manpage.py:282 sphinx/writers/text.py:582 +#: sphinx/writers/manpage.py:287 sphinx/writers/text.py:591 #, python-format msgid "[image: %s]" msgstr "[圖片:%s]" -#: sphinx/writers/manpage.py:283 sphinx/writers/text.py:583 +#: sphinx/writers/manpage.py:288 sphinx/writers/text.py:592 msgid "[image]" msgstr "[圖片]" From eb0aa50536aab85a51c31ef0ad21baf22d7c4c3f Mon Sep 17 00:00:00 2001 From: shimizukawa <shimizukawa@gmail.com> Date: Sun, 4 Dec 2016 22:43:01 +0900 Subject: [PATCH 293/297] fix 3 test failures that cause by translation changed --- tests/test_build_latex.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/test_build_latex.py b/tests/test_build_latex.py index 85be43d0d..d61d41d92 100644 --- a/tests/test_build_latex.py +++ b/tests/test_build_latex.py @@ -271,8 +271,8 @@ def test_numref_with_language_ja(app, status, warning): assert '\\hyperref[baz:table22]{Table:\\ref{baz:table22}}' in result assert '\\hyperref[index:code-1]{LIST \\ref{index:code-1}}' in result assert '\\hyperref[baz:code22]{Code-\\ref{baz:code22}}' in result - assert '\\hyperref[foo:foo]{Section \\ref{foo:foo}}' in result - assert '\\hyperref[bar:bar-a]{Section \\ref{bar:bar-a}}' in result + assert u'\\hyperref[foo:foo]{\\ref{foo:foo} \\u7ae0}' in result + assert u'\\hyperref[bar:bar-a]{\\ref{bar:bar-a} \\u7ae0}' in result assert '\\hyperref[index:fig1]{Fig.\\ref{index:fig1} \\nameref{index:fig1}}' in result assert '\\hyperref[foo:foo]{Sect.\\ref{foo:foo} \\nameref{foo:foo}}' in result @@ -322,7 +322,7 @@ def test_babel_with_language_de(app, status, warning): in result) assert '\\addto\\captionsngerman{\\renewcommand{\\figurename}{Fig.\\@ }}\n' in result assert '\\addto\\captionsngerman{\\renewcommand{\\tablename}{Table.\\@ }}\n' in result - assert '\\addto\\extrasngerman{\\def\\pageautorefname{page}}\n' in result + assert '\\addto\\extrasngerman{\\def\\pageautorefname{Seite}}\n' in result assert '\\shorthandoff{"}' in result @@ -342,7 +342,8 @@ def test_babel_with_language_ru(app, status, warning): in result) assert '\\addto\\captionsrussian{\\renewcommand{\\figurename}{Fig.\\@ }}\n' in result assert '\\addto\\captionsrussian{\\renewcommand{\\tablename}{Table.\\@ }}\n' in result - assert '\\addto\\extrasrussian{\\def\\pageautorefname{page}}\n' in result + assert (u'\\addto\\extrasrussian{\\def\\pageautorefname' + '{\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430}}\n' in result) assert '\\shorthandoff' not in result From 324bfe8c5ee7282b6b58e1c32bd7400beba5a253 Mon Sep 17 00:00:00 2001 From: shimizukawa <shimizukawa@gmail.com> Date: Sun, 4 Dec 2016 22:56:05 +0900 Subject: [PATCH 294/297] update version and reorganize CHANGES --- CHANGES | 289 +++++++++++++++++++++------------------------ sphinx/__init__.py | 6 +- 2 files changed, 139 insertions(+), 156 deletions(-) diff --git a/CHANGES b/CHANGES index 3765a6f88..73a7dbcc9 100644 --- a/CHANGES +++ b/CHANGES @@ -1,157 +1,10 @@ -Release 1.5 beta2 (in development) +Release 1.5 (unreleased) ================================== Incompatible changes -------------------- -* #2986: ``themes/basic/defindex.html`` is now deprecated -* Emit warnings that will be deprecated in Sphinx 1.6 by default. - Users can change the behavior by setting the environment variable - PYTHONWARNINGS. Please refer :ref:`when-deprecation-warnings-are-displayed`. - -Deprecated ----------- - -These features are removed in Sphinx-1.6: - -* LDML format support in i18n feature -* ``sphinx.addnodes.termsep`` -* Some functions and classes in ``sphinx.util.pycompat``: - ``zip_longest``, ``product``, ``all``, ``any``, ``next``, ``open``, - ``class_types``, ``base_exception``, ``relpath``, ``StringIO``, ``BytesIO``. - Please use the standard library version instead; - -If any deprecation warning like ``RemovedInSphinxXXXWarning`` are displayed, -please refer :ref:`when-deprecation-warnings-are-displayed`. - -Features added --------------- - -* #3095: Add :confval:`tls_verify` and :confval:`tls_cacerts` to support - self-signed HTTPS servers in linkcheck and intersphinx -* #2215: make.bat generated by sphinx-quickstart can be called from another dir. - Thanks to Timotheus Kampik. -* #3185: Add new warning type ``misc.highlighting_failure`` - -Bugs fixed ----------- - -* #3069: Even if ``'babel'`` key is set to empty string, LaTeX output contains - one ``\addto\captions...`` -* #3123: user ``'babel'`` key setting is not obeyed anymore -* #3155: Fix JavaScript for `html_sourcelink_suffix` fails with IE and Opera -* #3085: keep current directory after breaking build documentation. Thanks to - Timotheus Kampik. -* #3181: pLaTeX crashes with a section contains endash -* #3180: latex: add stretch/shrink between successive singleline or - multipleline cpp signatures (ref #3072) -* #3128: globing images does not support .svgz file - -Release 1.5 beta1 (released Nov 6, 2016) -======================================== - -Features added --------------- - -* #2513: A better default settings for XeLaTeX -* #3096: ``'maxlistdepth'`` key to work around LaTeX list limitations -* #3060: autodoc supports documentation for attributes of Enum class. Now autodoc render - just the value of Enum attributes instead of Enum attribute representation. -* Add ``--extensions`` to ``sphinx-quickstart`` to support enable arbitrary - extensions from command line (ref: #2904) -* #3104, #3122: ``'sphinxsetup'`` for key=value styling of Sphinx LaTeX -* #3071: Autodoc: Allow mocked module decorators to pass-through functions - unchanged -* #2495: linkcheck: Allow skipping anchor checking using - :confval:`linkcheck_anchors_ignore` -* #3083: let Unicode no-break space act like LaTeX ``~`` (fixed #3019) -* #3116: allow word wrap in PDF output for inline literals (ref #3110) -* #930: sphinx-apidoc allow wildcards for excluding paths. Thanks to Nick Coghlan. -* #3121: add ``inlineliteralwraps`` option to control if inline literal - word-wraps in latex - -Bugs fixed ----------- - -* #2432: Fix unwanted * between varargs and keyword only args. Thanks to Alex Grönholm. -* #3062: Failed to build PDF using 1.5a2 (undefined ``\hypersetup`` for - Japanese documents since PR#3030) -* Better rendering of multiline signatures in html. -* #777: LaTeX output "too deeply nested" (ref #3096) -* Let LaTeX image inclusion obey ``scale`` before textwidth fit (ref #2865, #3059) -* #3019: LaTeX fails on description of C function with arguments (ref #3083) -* fix latex inline literals where ``< > -`` gobbled a space - -Release 1.5 alpha2 (released Oct 17, 2016) -========================================== - -Incompatible changes --------------------- - -* #2983: Rename ``epub3_description`` and ``epub3_contributor`` to - ``epub_description`` and ``epub_contributor``. -* Remove themes/basic/defindex.html; no longer used -* Sphinx does not ship anymore (but still uses) LaTeX style file ``fncychap`` -* #2435: Slim down quickstarted conf.py -* The ``sphinx.sty`` latex package does not load itself "hyperref", as this - is done later in the preamble of the latex output via ``'hyperref'`` key. -* Sphinx does not ship anymore a custom modified LaTeX style file ``tabulary``. - The non-modified package is used. -* #3057: By default, footnote marks in latex PDF output are not preceded by a - space anymore, ``\sphinxBeforeFootnote`` allows user customization if needed. - -Features added --------------- - -* #3008: ``linkcheck`` builder ignores self-signed certificate URL -* #3020: new ``'geometry'`` key to ``latex_elements`` whose default uses - LaTeX style file ``geometry.sty`` to set page layout -* #2843: Add :start-at: and :end-at: options to literalinclude directive -* #2527: Add ``:reversed:`` option to toctree directive -* Add ``-t`` and ``-d`` option to ``sphinx-quickstart`` to support templating - generated sphinx project. -* #3028: Add ``{path}`` and ``{basename}`` to the format of - ``figure_language_filename`` -* new ``'hyperref'`` key in the ``latex_elements`` dictionary (ref #3030) -* #3022: Allow code-blocks in footnotes for LaTeX PDF output - -Bugs fixed ----------- - -* #2810: Problems with pdflatex in an Italian document -* Use ``latex_elements.papersize`` to specify papersize of LaTeX in Makefile -* #2988: linkcheck: retry with GET request if denied HEAD request -* #2990: linkcheck raises "Can't convert 'bytes' object to str implicitly" error - if linkcheck_anchors enabled -* #3004: Invalid link types "top" and "up" are used -* #3009: Bad rendering of parsed-literals in LaTeX since Sphinx 1.4.4 -* #3000: ``option`` directive generates invalid HTML anchors -* #2984: Invalid HTML has been generated if `html_split_index` enabled -* #2986: themes/basic/defindex.html should be changed for html5 friendly -* #2987: Invalid HTML has been generated if multiple IDs are assigned to a list -* #2891: HTML search does not provide all the results -* #1986: Title in PDF Output -* #147: Problem with latex chapter style -* #3018: LaTeX problem with page layout dimensions and chapter titles -* Fix an issue with ``\pysigline`` in LaTeX style file (ref #3023) -* #3038: ``sphinx.ext.math*`` raises TypeError if labels are duplicated -* #3031: incompatibility with LaTeX package ``tocloft`` -* #3003: literal blocks in footnotes are not supported by Latex -* #3047: spacing before footnote in pdf output is not coherent and allows breaks -* #3045: HTML search index creator should ignore "raw" content if now html -* #3039: English stemmer returns wrong word if the word is capitalized -* Fix make-mode Makefile template (ref #3056, #2936) - -Testing --------- - -* To simplify, sphinx uses external mock package even if unittest.mock exists. - -Release 1.5 alpha1 (released Sep 21, 2016) -========================================== - -Incompatible changes --------------------- +1.5a1 * latex, package fancybox is not longer a dependency of sphinx.sty * Use ``'locales'`` as a default value of `locale_dirs` @@ -200,9 +53,47 @@ Incompatible changes * #2877: Rename ``latex_elements['footer']`` to ``latex_elements['atendofbody']`` +1.5a2 + +* #2983: Rename ``epub3_description`` and ``epub3_contributor`` to + ``epub_description`` and ``epub_contributor``. +* Remove themes/basic/defindex.html; no longer used +* Sphinx does not ship anymore (but still uses) LaTeX style file ``fncychap`` +* #2435: Slim down quickstarted conf.py +* The ``sphinx.sty`` latex package does not load itself "hyperref", as this + is done later in the preamble of the latex output via ``'hyperref'`` key. +* Sphinx does not ship anymore a custom modified LaTeX style file ``tabulary``. + The non-modified package is used. +* #3057: By default, footnote marks in latex PDF output are not preceded by a + space anymore, ``\sphinxBeforeFootnote`` allows user customization if needed. + +1.5 final + +* #2986: ``themes/basic/defindex.html`` is now deprecated +* Emit warnings that will be deprecated in Sphinx 1.6 by default. + Users can change the behavior by setting the environment variable + PYTHONWARNINGS. Please refer :ref:`when-deprecation-warnings-are-displayed`. + +Deprecated +---------- + +These features are removed in Sphinx-1.6: + +* LDML format support in i18n feature +* ``sphinx.addnodes.termsep`` +* Some functions and classes in ``sphinx.util.pycompat``: + ``zip_longest``, ``product``, ``all``, ``any``, ``next``, ``open``, + ``class_types``, ``base_exception``, ``relpath``, ``StringIO``, ``BytesIO``. + Please use the standard library version instead; + +If any deprecation warning like ``RemovedInSphinxXXXWarning`` are displayed, +please refer :ref:`when-deprecation-warnings-are-displayed`. + Features added -------------- +1.5a1 + * #2951: Add ``--implicit-namespaces`` PEP-0420 support to apidoc. * Add ``:caption:`` option for sphinx.ext.inheritance_diagram. * #2471: Add config variable for default doctest flags. @@ -272,9 +163,52 @@ Features added * #326: `numref` role can also refer sections * #2916: `numref` role can also refer caption as an its linktext +1.5a2 + +* #3008: ``linkcheck`` builder ignores self-signed certificate URL +* #3020: new ``'geometry'`` key to ``latex_elements`` whose default uses + LaTeX style file ``geometry.sty`` to set page layout +* #2843: Add :start-at: and :end-at: options to literalinclude directive +* #2527: Add ``:reversed:`` option to toctree directive +* Add ``-t`` and ``-d`` option to ``sphinx-quickstart`` to support templating + generated sphinx project. +* #3028: Add ``{path}`` and ``{basename}`` to the format of + ``figure_language_filename`` +* new ``'hyperref'`` key in the ``latex_elements`` dictionary (ref #3030) +* #3022: Allow code-blocks in footnotes for LaTeX PDF output + +1.5b1 + +* #2513: A better default settings for XeLaTeX +* #3096: ``'maxlistdepth'`` key to work around LaTeX list limitations +* #3060: autodoc supports documentation for attributes of Enum class. Now autodoc render + just the value of Enum attributes instead of Enum attribute representation. +* Add ``--extensions`` to ``sphinx-quickstart`` to support enable arbitrary + extensions from command line (ref: #2904) +* #3104, #3122: ``'sphinxsetup'`` for key=value styling of Sphinx LaTeX +* #3071: Autodoc: Allow mocked module decorators to pass-through functions + unchanged +* #2495: linkcheck: Allow skipping anchor checking using + :confval:`linkcheck_anchors_ignore` +* #3083: let Unicode no-break space act like LaTeX ``~`` (fixed #3019) +* #3116: allow word wrap in PDF output for inline literals (ref #3110) +* #930: sphinx-apidoc allow wildcards for excluding paths. Thanks to Nick Coghlan. +* #3121: add ``inlineliteralwraps`` option to control if inline literal + word-wraps in latex + +1.5 final + +* #3095: Add :confval:`tls_verify` and :confval:`tls_cacerts` to support + self-signed HTTPS servers in linkcheck and intersphinx +* #2215: make.bat generated by sphinx-quickstart can be called from another dir. + Thanks to Timotheus Kampik. +* #3185: Add new warning type ``misc.highlighting_failure`` + Bugs fixed ---------- +1.5a1 + * #2707: (latex) the column width is badly computed for tabular * #2799: Sphinx installs roles and directives automatically on importing sphinx module. Now Sphinx installs them on running application. @@ -292,12 +226,55 @@ Bugs fixed * #2550: external links are opened in help viewer * #2687: Running Sphinx multiple times produces 'already registered' warnings -Release 1.4.10 (in development) -=============================== +1.5a2 -Bugs fixed ----------- +* #2810: Problems with pdflatex in an Italian document +* Use ``latex_elements.papersize`` to specify papersize of LaTeX in Makefile +* #2988: linkcheck: retry with GET request if denied HEAD request +* #2990: linkcheck raises "Can't convert 'bytes' object to str implicitly" error + if linkcheck_anchors enabled +* #3004: Invalid link types "top" and "up" are used +* #3009: Bad rendering of parsed-literals in LaTeX since Sphinx 1.4.4 +* #3000: ``option`` directive generates invalid HTML anchors +* #2984: Invalid HTML has been generated if `html_split_index` enabled +* #2986: themes/basic/defindex.html should be changed for html5 friendly +* #2987: Invalid HTML has been generated if multiple IDs are assigned to a list +* #2891: HTML search does not provide all the results +* #1986: Title in PDF Output +* #147: Problem with latex chapter style +* #3018: LaTeX problem with page layout dimensions and chapter titles +* Fix an issue with ``\pysigline`` in LaTeX style file (ref #3023) +* #3038: ``sphinx.ext.math*`` raises TypeError if labels are duplicated +* #3031: incompatibility with LaTeX package ``tocloft`` +* #3003: literal blocks in footnotes are not supported by Latex +* #3047: spacing before footnote in pdf output is not coherent and allows breaks +* #3045: HTML search index creator should ignore "raw" content if now html +* #3039: English stemmer returns wrong word if the word is capitalized +* Fix make-mode Makefile template (ref #3056, #2936) +1.5b1 + +* #2432: Fix unwanted * between varargs and keyword only args. Thanks to Alex Grönholm. +* #3062: Failed to build PDF using 1.5a2 (undefined ``\hypersetup`` for + Japanese documents since PR#3030) +* Better rendering of multiline signatures in html. +* #777: LaTeX output "too deeply nested" (ref #3096) +* Let LaTeX image inclusion obey ``scale`` before textwidth fit (ref #2865, #3059) +* #3019: LaTeX fails on description of C function with arguments (ref #3083) +* fix latex inline literals where ``< > -`` gobbled a space + +1.5 final + +* #3069: Even if ``'babel'`` key is set to empty string, LaTeX output contains + one ``\addto\captions...`` +* #3123: user ``'babel'`` key setting is not obeyed anymore +* #3155: Fix JavaScript for `html_sourcelink_suffix` fails with IE and Opera +* #3085: keep current directory after breaking build documentation. Thanks to + Timotheus Kampik. +* #3181: pLaTeX crashes with a section contains endash +* #3180: latex: add stretch/shrink between successive singleline or + multipleline cpp signatures (ref #3072) +* #3128: globing images does not support .svgz file * #3015: fix a broken test on Windows. * #1843: Fix documentation of descriptor classes that have a custom metaclass. Thanks to Erik Bray. @@ -305,6 +282,12 @@ Bugs fixed * #3024, #3037: In Python3, application.Sphinx._log crushed when the log message cannot be encoded into console encoding. +Testing +-------- + +* To simplify, sphinx uses external mock package even if unittest.mock exists. + + Release 1.4.9 (released Nov 23, 2016) ===================================== diff --git a/sphinx/__init__.py b/sphinx/__init__.py index 84265e51e..477c61d25 100644 --- a/sphinx/__init__.py +++ b/sphinx/__init__.py @@ -30,13 +30,13 @@ if 'PYTHONWARNINGS' not in os.environ: warnings.filterwarnings('ignore', "'U' mode is deprecated", DeprecationWarning, module='docutils.io') -__version__ = '1.5b2' -__released__ = '1.5b2' # used when Sphinx builds its own docs +__version__ = '1.5' +__released__ = '1.5' # used when Sphinx builds its own docs # version info for better programmatic use # possible values for 3rd element: 'alpha', 'beta', 'rc', 'final' # 'final' has 0 as the last element -version_info = (1, 5, 0, 'beta', 2) +version_info = (1, 5, 0, 'final', 0) package_dir = path.abspath(path.dirname(__file__)) From 7e066e6513fbaf1d5a62fe28ac952dd455ce4439 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA <i.tkomiya@gmail.com> Date: Sun, 4 Dec 2016 23:34:57 +0900 Subject: [PATCH 295/297] Fix broken tests --- tests/test_build_latex.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_build_latex.py b/tests/test_build_latex.py index d61d41d92..6a13ea60a 100644 --- a/tests/test_build_latex.py +++ b/tests/test_build_latex.py @@ -271,8 +271,8 @@ def test_numref_with_language_ja(app, status, warning): assert '\\hyperref[baz:table22]{Table:\\ref{baz:table22}}' in result assert '\\hyperref[index:code-1]{LIST \\ref{index:code-1}}' in result assert '\\hyperref[baz:code22]{Code-\\ref{baz:code22}}' in result - assert u'\\hyperref[foo:foo]{\\ref{foo:foo} \\u7ae0}' in result - assert u'\\hyperref[bar:bar-a]{\\ref{bar:bar-a} \\u7ae0}' in result + assert u'\\hyperref[foo:foo]{\\ref{foo:foo} \u7ae0}' in result + assert u'\\hyperref[bar:bar-a]{\\ref{bar:bar-a} \u7ae0}' in result assert '\\hyperref[index:fig1]{Fig.\\ref{index:fig1} \\nameref{index:fig1}}' in result assert '\\hyperref[foo:foo]{Sect.\\ref{foo:foo} \\nameref{foo:foo}}' in result @@ -343,7 +343,7 @@ def test_babel_with_language_ru(app, status, warning): assert '\\addto\\captionsrussian{\\renewcommand{\\figurename}{Fig.\\@ }}\n' in result assert '\\addto\\captionsrussian{\\renewcommand{\\tablename}{Table.\\@ }}\n' in result assert (u'\\addto\\extrasrussian{\\def\\pageautorefname' - '{\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430}}\n' in result) + u'{\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430}}\n' in result) assert '\\shorthandoff' not in result From 9f3a95e1da6c8a026df0b197e9d941f963341c38 Mon Sep 17 00:00:00 2001 From: shimizukawa <shimizukawa@gmail.com> Date: Mon, 5 Dec 2016 13:36:01 +0900 Subject: [PATCH 296/297] Bump to 1.5 final --- CHANGES | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 73a7dbcc9..a40fe2146 100644 --- a/CHANGES +++ b/CHANGES @@ -1,4 +1,4 @@ -Release 1.5 (unreleased) +Release 1.5 (released Dec 5, 2016) ================================== Incompatible changes From 82ef05431a8283f348da39950104819352eacc30 Mon Sep 17 00:00:00 2001 From: shimizukawa <shimizukawa@gmail.com> Date: Mon, 5 Dec 2016 23:31:37 +0900 Subject: [PATCH 297/297] fix flake8 --- sphinx/util/pycompat.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sphinx/util/pycompat.py b/sphinx/util/pycompat.py index da2bcc255..f25e14023 100644 --- a/sphinx/util/pycompat.py +++ b/sphinx/util/pycompat.py @@ -18,11 +18,12 @@ from six import PY3, class_types, text_type, exec_ from six.moves import zip_longest from itertools import product +from sphinx.deprecation import RemovedInSphinx16Warning + if False: # For type annotation from typing import Any, Callable # NOQA -from sphinx.deprecation import RemovedInSphinx16Warning NoneType = type(None)