Merge branch '3.x' into 7964_tuple_in_signature

This commit is contained in:
Takeshi KOMIYA 2020-10-04 11:53:41 +09:00 committed by GitHub
commit 3096b71c1c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
102 changed files with 399 additions and 216 deletions

View File

@ -34,14 +34,18 @@ Bugs fixed
by string not ending with blank lines by string not ending with blank lines
* #8142: autodoc: Wrong constructor signature for the class derived from * #8142: autodoc: Wrong constructor signature for the class derived from
typing.Generic typing.Generic
* #8157: autodoc: TypeError is raised when annotation has invalid __args__
* #7964: autodoc: Tuple in default value is wrongly rendered * #7964: autodoc: Tuple in default value is wrongly rendered
* #8192: napoleon: description is disappeared when it contains inline literals * #8192: napoleon: description is disappeared when it contains inline literals
* #8142: napoleon: Potential of regex denial of service in google style docs * #8142: napoleon: Potential of regex denial of service in google style docs
* #8169: LaTeX: pxjahyper loaded even when latex_engine is not platex * #8169: LaTeX: pxjahyper loaded even when latex_engine is not platex
* #8175: intersphinx: Potential of regex denial of service by broken inventory * #8175: intersphinx: Potential of regex denial of service by broken inventory
* #8277: sphinx-build: missing and redundant spacing (and etc) for console
output on building
* #8093: The highlight warning has wrong location in some builders (LaTeX, * #8093: The highlight warning has wrong location in some builders (LaTeX,
singlehtml and so on) singlehtml and so on)
* #8239: Failed to refer a token in productionlist if it is indented * #8239: Failed to refer a token in productionlist if it is indented
* #8268: linkcheck: Report HTTP errors when ``linkcheck_anchors`` is ``True``
Testing Testing
-------- --------
@ -172,7 +176,7 @@ Bugs fixed
contains a hyperlink target contains a hyperlink target
* #7469: autosummary: "Module attributes" header is not translatable * #7469: autosummary: "Module attributes" header is not translatable
* #7940: apidoc: An extra newline is generated at the end of the rst file if a * #7940: apidoc: An extra newline is generated at the end of the rst file if a
module has submodules module has submodules
* #4258: napoleon: decorated special methods are not shown * #4258: napoleon: decorated special methods are not shown
* #7799: napoleon: parameters are not escaped for combined params in numpydoc * #7799: napoleon: parameters are not escaped for combined params in numpydoc
* #7780: napoleon: multiple paramaters declaration in numpydoc was wrongly * #7780: napoleon: multiple paramaters declaration in numpydoc was wrongly
@ -339,7 +343,7 @@ Features added
* #7543: html theme: Add top and bottom margins to tables * #7543: html theme: Add top and bottom margins to tables
* #7695: html theme: Add viewport meta tag for basic theme * #7695: html theme: Add viewport meta tag for basic theme
* #7721: html theme: classic: default codetextcolor/codebgcolor doesn't override * #7721: html theme: classic: default codetextcolor/codebgcolor doesn't override
Pygments Pygments
* C and C++: allow semicolon in the end of declarations. * C and C++: allow semicolon in the end of declarations.
* C++, parse parameterized noexcept specifiers. * C++, parse parameterized noexcept specifiers.
* #7294: C++, parse expressions with user-defined literals. * #7294: C++, parse expressions with user-defined literals.

View File

@ -239,7 +239,7 @@ div.footer a {
/* -- body styles ----------------------------------------------------------- */ /* -- body styles ----------------------------------------------------------- */
p { p {
margin: 0.8em 0 0.5em 0; margin: 0.8em 0 0.5em 0;
} }

View File

@ -515,6 +515,44 @@ There are also config values that you can set:
New option ``'description'`` is added. New option ``'description'`` is added.
.. confval:: autodoc_type_aliases
A dictionary for users defined `type aliases`__ that maps a type name to the
full-qualified object name. It is used to keep type aliases not evaluated in
the document. Defaults to empty (``{}``).
The type aliases are only available if your program enables `Postponed
Evaluation of Annotations (PEP 563)`__ feature via ``from __future__ import
annotations``.
For example, there is code using a type alias::
from __future__ import annotations
AliasType = Union[List[Dict[Tuple[int, str], Set[int]]], Tuple[str, List[str]]]
def f() -> AliasType:
...
If ``autodoc_type_aliases`` is not set, autodoc will generate internal mark-up
from this code as following::
.. py:function:: f() -> Union[List[Dict[Tuple[int, str], Set[int]]], Tuple[str, List[str]]]
...
If you set ``autodoc_type_aliases`` as
``{'AliasType': 'your.module.TypeAlias'}``, it generates a following document
internally::
.. py:function:: f() -> your.module.AliasType:
...
.. __: https://www.python.org/dev/peps/pep-0563/
.. __: https://mypy.readthedocs.io/en/latest/kinds_of_types.html#type-aliases
.. versionadded:: 3.3
.. confval:: autodoc_warningiserror .. confval:: autodoc_warningiserror
This value controls the behavior of :option:`sphinx-build -W` during This value controls the behavior of :option:`sphinx-build -W` during

View File

@ -51,7 +51,7 @@ should check:
.. versionadded:: 1.1 .. versionadded:: 1.1
.. confval:: coverage_show_missing_items .. confval:: coverage_show_missing_items
Print objects that are missing to standard output also. Print objects that are missing to standard output also.
``False`` by default. ``False`` by default.

View File

@ -171,7 +171,7 @@ Docker images for Sphinx are published on the `Docker Hub <https://hub.docker.co
- `sphinxdoc/sphinx <https://hub.docker.com/repository/docker/sphinxdoc/sphinx>`_ - `sphinxdoc/sphinx <https://hub.docker.com/repository/docker/sphinxdoc/sphinx>`_
- `sphinxdoc/sphinx-latexpdf <https://hub.docker.com/repository/docker/sphinxdoc/sphinx-latexpdf>`_ - `sphinxdoc/sphinx-latexpdf <https://hub.docker.com/repository/docker/sphinxdoc/sphinx-latexpdf>`_
Former one is used for standard usage of Sphinx, and latter one is mainly used for PDF builds using LaTeX. Former one is used for standard usage of Sphinx, and latter one is mainly used for PDF builds using LaTeX.
Please choose one for your purpose. Please choose one for your purpose.
.. note:: .. note::

View File

@ -665,7 +665,7 @@ __ http://pygments.org/docs/lexers
.. note:: .. note::
If you want to select only ``[second-section]`` of ini file like the If you want to select only ``[second-section]`` of ini file like the
following, you can use ``:start-at: [second-section]`` and following, you can use ``:start-at: [second-section]`` and
``:end-before: [third-section]``: ``:end-before: [third-section]``:
.. code-block:: ini .. code-block:: ini
@ -692,7 +692,7 @@ __ http://pygments.org/docs/lexers
# [initialize] # [initialize]
app.start(":8000") app.start(":8000")
# [initialize] # [initialize]
When lines have been selected in any of the ways described above, the line When lines have been selected in any of the ways described above, the line
numbers in ``emphasize-lines`` refer to those selected lines, counted numbers in ``emphasize-lines`` refer to those selected lines, counted

View File

@ -641,17 +641,17 @@ class StandaloneHTMLBuilder(Builder):
def gen_additional_pages(self) -> None: def gen_additional_pages(self) -> None:
# additional pages from conf.py # additional pages from conf.py
for pagename, template in self.config.html_additional_pages.items(): for pagename, template in self.config.html_additional_pages.items():
logger.info(' ' + pagename, nonl=True) logger.info(pagename + ' ', nonl=True)
self.handle_page(pagename, {}, template) self.handle_page(pagename, {}, template)
# the search page # the search page
if self.search: if self.search:
logger.info(' search', nonl=True) logger.info('search ', nonl=True)
self.handle_page('search', {}, 'search.html') self.handle_page('search', {}, 'search.html')
# the opensearch xml file # the opensearch xml file
if self.config.html_use_opensearch and self.search: if self.config.html_use_opensearch and self.search:
logger.info(' opensearch', nonl=True) logger.info('opensearch ', nonl=True)
fn = path.join(self.outdir, '_static', 'opensearch.xml') fn = path.join(self.outdir, '_static', 'opensearch.xml')
self.handle_page('opensearch', {}, 'opensearch.xml', outfilename=fn) self.handle_page('opensearch', {}, 'opensearch.xml', outfilename=fn)
@ -669,7 +669,7 @@ class StandaloneHTMLBuilder(Builder):
'genindexcounts': indexcounts, 'genindexcounts': indexcounts,
'split_index': self.config.html_split_index, 'split_index': self.config.html_split_index,
} }
logger.info(' genindex', nonl=True) logger.info('genindex ', nonl=True)
if self.config.html_split_index: if self.config.html_split_index:
self.handle_page('genindex', genindexcontext, self.handle_page('genindex', genindexcontext,
@ -691,7 +691,7 @@ class StandaloneHTMLBuilder(Builder):
'content': content, 'content': content,
'collapse_index': collapse, 'collapse_index': collapse,
} }
logger.info(' ' + indexname, nonl=True) logger.info(indexname + ' ', nonl=True)
self.handle_page(indexname, indexcontext, 'domainindex.html') self.handle_page(indexname, indexcontext, 'domainindex.html')
def copy_image_files(self) -> None: def copy_image_files(self) -> None:
@ -785,7 +785,7 @@ class StandaloneHTMLBuilder(Builder):
def copy_static_files(self) -> None: def copy_static_files(self) -> None:
try: try:
with progress_message(__('copying static files... ')): with progress_message(__('copying static files')):
ensuredir(path.join(self.outdir, '_static')) ensuredir(path.join(self.outdir, '_static'))
# prepare context for templates # prepare context for templates

View File

@ -517,7 +517,7 @@ def validate_latex_theme_options(app: Sphinx, config: Config) -> None:
config.latex_theme_options.pop(key) config.latex_theme_options.pop(key)
def install_pakcages_for_ja(app: Sphinx) -> None: def install_packages_for_ja(app: Sphinx) -> None:
"""Install packages for Japanese.""" """Install packages for Japanese."""
if app.config.language == 'ja' and app.config.latex_engine in ('platex', 'uplatex'): if app.config.language == 'ja' and app.config.latex_engine in ('platex', 'uplatex'):
app.add_latex_package('pxjahyper', after_hyperref=True) app.add_latex_package('pxjahyper', after_hyperref=True)
@ -570,7 +570,7 @@ def setup(app: Sphinx) -> Dict[str, Any]:
app.add_builder(LaTeXBuilder) app.add_builder(LaTeXBuilder)
app.connect('config-inited', validate_config_values, priority=800) app.connect('config-inited', validate_config_values, priority=800)
app.connect('config-inited', validate_latex_theme_options, priority=800) app.connect('config-inited', validate_latex_theme_options, priority=800)
app.connect('builder-inited', install_pakcages_for_ja) app.connect('builder-inited', install_packages_for_ja)
app.add_config_value('latex_engine', default_latex_engine, None, app.add_config_value('latex_engine', default_latex_engine, None,
ENUM('pdflatex', 'xelatex', 'lualatex', 'platex', 'uplatex')) ENUM('pdflatex', 'xelatex', 'lualatex', 'platex', 'uplatex'))

View File

@ -166,6 +166,7 @@ class CheckExternalLinksBuilder(Builder):
# Read the whole document and see if #anchor exists # Read the whole document and see if #anchor exists
response = requests.get(req_url, stream=True, config=self.app.config, response = requests.get(req_url, stream=True, config=self.app.config,
auth=auth_info, **kwargs) auth=auth_info, **kwargs)
response.raise_for_status()
found = check_anchor(response, unquote(anchor)) found = check_anchor(response, unquote(anchor))
if not found: if not found:

View File

@ -1213,7 +1213,8 @@ class FunctionDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): # typ
try: try:
self.env.app.emit('autodoc-before-process-signature', self.object, False) self.env.app.emit('autodoc-before-process-signature', self.object, False)
sig = inspect.signature(self.object, follow_wrapped=True) sig = inspect.signature(self.object, follow_wrapped=True,
type_aliases=self.env.config.autodoc_type_aliases)
args = stringify_signature(sig, **kwargs) args = stringify_signature(sig, **kwargs)
except TypeError as exc: except TypeError as exc:
logger.warning(__("Failed to get a function signature for %s: %s"), logger.warning(__("Failed to get a function signature for %s: %s"),
@ -1262,7 +1263,9 @@ class FunctionDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): # typ
if overloaded: if overloaded:
__globals__ = safe_getattr(self.object, '__globals__', {}) __globals__ = safe_getattr(self.object, '__globals__', {})
for overload in self.analyzer.overloads.get('.'.join(self.objpath)): for overload in self.analyzer.overloads.get('.'.join(self.objpath)):
overload = evaluate_signature(overload, __globals__) overload = evaluate_signature(overload, __globals__,
self.env.config.autodoc_type_aliases)
sig = stringify_signature(overload, **kwargs) sig = stringify_signature(overload, **kwargs)
sigs.append(sig) sigs.append(sig)
@ -1271,7 +1274,7 @@ class FunctionDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): # typ
def annotate_to_first_argument(self, func: Callable, typ: Type) -> None: def annotate_to_first_argument(self, func: Callable, typ: Type) -> None:
"""Annotate type hint to the first argument of function if needed.""" """Annotate type hint to the first argument of function if needed."""
try: try:
sig = inspect.signature(func) sig = inspect.signature(func, type_aliases=self.env.config.autodoc_type_aliases)
except TypeError as exc: except TypeError as exc:
logger.warning(__("Failed to get a function signature for %s: %s"), logger.warning(__("Failed to get a function signature for %s: %s"),
self.fullname, exc) self.fullname, exc)
@ -1392,7 +1395,8 @@ class ClassDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): # type:
if call is not None: if call is not None:
self.env.app.emit('autodoc-before-process-signature', call, True) self.env.app.emit('autodoc-before-process-signature', call, True)
try: try:
sig = inspect.signature(call, bound_method=True) sig = inspect.signature(call, bound_method=True,
type_aliases=self.env.config.autodoc_type_aliases)
return type(self.object), '__call__', sig return type(self.object), '__call__', sig
except ValueError: except ValueError:
pass pass
@ -1407,7 +1411,8 @@ class ClassDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): # type:
if new is not None: if new is not None:
self.env.app.emit('autodoc-before-process-signature', new, True) self.env.app.emit('autodoc-before-process-signature', new, True)
try: try:
sig = inspect.signature(new, bound_method=True) sig = inspect.signature(new, bound_method=True,
type_aliases=self.env.config.autodoc_type_aliases)
return self.object, '__new__', sig return self.object, '__new__', sig
except ValueError: except ValueError:
pass pass
@ -1417,7 +1422,8 @@ class ClassDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): # type:
if init is not None: if init is not None:
self.env.app.emit('autodoc-before-process-signature', init, True) self.env.app.emit('autodoc-before-process-signature', init, True)
try: try:
sig = inspect.signature(init, bound_method=True) sig = inspect.signature(init, bound_method=True,
type_aliases=self.env.config.autodoc_type_aliases)
return self.object, '__init__', sig return self.object, '__init__', sig
except ValueError: except ValueError:
pass pass
@ -1428,7 +1434,8 @@ class ClassDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): # type:
# the signature from, so just pass the object itself to our hook. # the signature from, so just pass the object itself to our hook.
self.env.app.emit('autodoc-before-process-signature', self.object, False) self.env.app.emit('autodoc-before-process-signature', self.object, False)
try: try:
sig = inspect.signature(self.object, bound_method=False) sig = inspect.signature(self.object, bound_method=False,
type_aliases=self.env.config.autodoc_type_aliases)
return None, None, sig return None, None, sig
except ValueError: except ValueError:
pass pass
@ -1475,7 +1482,8 @@ class ClassDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): # type:
method = safe_getattr(self._signature_class, self._signature_method_name, None) method = safe_getattr(self._signature_class, self._signature_method_name, None)
__globals__ = safe_getattr(method, '__globals__', {}) __globals__ = safe_getattr(method, '__globals__', {})
for overload in self.analyzer.overloads.get(qualname): for overload in self.analyzer.overloads.get(qualname):
overload = evaluate_signature(overload, __globals__) overload = evaluate_signature(overload, __globals__,
self.env.config.autodoc_type_aliases)
parameters = list(overload.parameters.values()) parameters = list(overload.parameters.values())
overload = overload.replace(parameters=parameters[1:], overload = overload.replace(parameters=parameters[1:],
@ -1820,11 +1828,13 @@ class MethodDocumenter(DocstringSignatureMixin, ClassLevelDocumenter): # type:
else: else:
if inspect.isstaticmethod(self.object, cls=self.parent, name=self.object_name): if inspect.isstaticmethod(self.object, cls=self.parent, name=self.object_name):
self.env.app.emit('autodoc-before-process-signature', self.object, False) self.env.app.emit('autodoc-before-process-signature', self.object, False)
sig = inspect.signature(self.object, bound_method=False) sig = inspect.signature(self.object, bound_method=False,
type_aliases=self.env.config.autodoc_type_aliases)
else: else:
self.env.app.emit('autodoc-before-process-signature', self.object, True) self.env.app.emit('autodoc-before-process-signature', self.object, True)
sig = inspect.signature(self.object, bound_method=True, sig = inspect.signature(self.object, bound_method=True,
follow_wrapped=True) follow_wrapped=True,
type_aliases=self.env.config.autodoc_type_aliases)
args = stringify_signature(sig, **kwargs) args = stringify_signature(sig, **kwargs)
except TypeError as exc: except TypeError as exc:
logger.warning(__("Failed to get a method signature for %s: %s"), logger.warning(__("Failed to get a method signature for %s: %s"),
@ -1884,7 +1894,9 @@ class MethodDocumenter(DocstringSignatureMixin, ClassLevelDocumenter): # type:
if overloaded: if overloaded:
__globals__ = safe_getattr(self.object, '__globals__', {}) __globals__ = safe_getattr(self.object, '__globals__', {})
for overload in self.analyzer.overloads.get('.'.join(self.objpath)): for overload in self.analyzer.overloads.get('.'.join(self.objpath)):
overload = evaluate_signature(overload, __globals__) overload = evaluate_signature(overload, __globals__,
self.env.config.autodoc_type_aliases)
if not inspect.isstaticmethod(self.object, cls=self.parent, if not inspect.isstaticmethod(self.object, cls=self.parent,
name=self.object_name): name=self.object_name):
parameters = list(overload.parameters.values()) parameters = list(overload.parameters.values())
@ -1897,7 +1909,7 @@ class MethodDocumenter(DocstringSignatureMixin, ClassLevelDocumenter): # type:
def annotate_to_first_argument(self, func: Callable, typ: Type) -> None: def annotate_to_first_argument(self, func: Callable, typ: Type) -> None:
"""Annotate type hint to the first argument of function if needed.""" """Annotate type hint to the first argument of function if needed."""
try: try:
sig = inspect.signature(func) sig = inspect.signature(func, type_aliases=self.env.config.autodoc_type_aliases)
except TypeError as exc: except TypeError as exc:
logger.warning(__("Failed to get a method signature for %s: %s"), logger.warning(__("Failed to get a method signature for %s: %s"),
self.fullname, exc) self.fullname, exc)
@ -2237,6 +2249,7 @@ def setup(app: Sphinx) -> Dict[str, Any]:
app.add_config_value('autodoc_mock_imports', [], True) app.add_config_value('autodoc_mock_imports', [], True)
app.add_config_value('autodoc_typehints', "signature", True, app.add_config_value('autodoc_typehints', "signature", True,
ENUM("signature", "description", "none")) ENUM("signature", "description", "none"))
app.add_config_value('autodoc_type_aliases', {}, True)
app.add_config_value('autodoc_warningiserror', True, True) app.add_config_value('autodoc_warningiserror', True, True)
app.add_config_value('autodoc_inherit_docstrings', True, True) app.add_config_value('autodoc_inherit_docstrings', True, True)
app.add_event('autodoc-before-process-signature') app.add_event('autodoc-before-process-signature')

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# Mohammed Shannaq <sam@ms.per.jo>, 2018 # Mohammed Shannaq <sam@ms.per.jo>, 2018
msgid "" msgid ""

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
msgid "" msgid ""
msgstr "" msgstr ""

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2009 # FIRST AUTHOR <EMAIL@ADDRESS>, 2009
msgid "" msgid ""

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2009 # FIRST AUTHOR <EMAIL@ADDRESS>, 2009
msgid "" msgid ""

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# Julien Malard <julien.malard@mail.mcgill.ca>, 2019 # Julien Malard <julien.malard@mail.mcgill.ca>, 2019
msgid "" msgid ""

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2008 # FIRST AUTHOR <EMAIL@ADDRESS>, 2008
# Vilibald W. <vilibald.wanca@gmail.com>, 2014-2015 # Vilibald W. <vilibald.wanca@gmail.com>, 2014-2015

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2016 # FIRST AUTHOR <EMAIL@ADDRESS>, 2016
# Geraint Palmer <palmer.geraint@googlemail.com>, 2016 # Geraint Palmer <palmer.geraint@googlemail.com>, 2016

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# askhl <asklarsen@gmail.com>, 2010-2011 # askhl <asklarsen@gmail.com>, 2010-2011
# Jakob Lykke Andersen <jakob@caput.dk>, 2014,2016 # Jakob Lykke Andersen <jakob@caput.dk>, 2014,2016

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# Georg Brandl <g.brandl@gmx.net>, 2013-2015 # Georg Brandl <g.brandl@gmx.net>, 2013-2015
# Jean-François B. <jfbu@free.fr>, 2018 # Jean-François B. <jfbu@free.fr>, 2018

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# Stelios Vitalis <liberostelios@gmail.com>, 2015 # Stelios Vitalis <liberostelios@gmail.com>, 2015
# tzoumakers tzoumakers <tzoumakersx@gmail.com>, 2019 # tzoumakers tzoumakers <tzoumakersx@gmail.com>, 2019

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# Dinu Gherman <gherman@darwin.in-berlin.de>, 2014 # Dinu Gherman <gherman@darwin.in-berlin.de>, 2014
msgid "" msgid ""

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# Edward Villegas-Pulgarin <cosmoscalibur@gmail.com>, 2018 # Edward Villegas-Pulgarin <cosmoscalibur@gmail.com>, 2018
# Edward Villegas-Pulgarin <cosmoscalibur@gmail.com>, 2019 # Edward Villegas-Pulgarin <cosmoscalibur@gmail.com>, 2019

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# Aivar Annamaa <aivar.annamaa@gmail.com>, 2011 # Aivar Annamaa <aivar.annamaa@gmail.com>, 2011
# Ivar Smolin <okul at linux ee>, 2012 # Ivar Smolin <okul at linux ee>, 2012

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# Ales Zabala Alava <shagi@gisa-elkartea.org>, 2011 # Ales Zabala Alava <shagi@gisa-elkartea.org>, 2011
# Asier Iturralde Sarasola <asier.iturralde@gmail.com>, 2018 # Asier Iturralde Sarasola <asier.iturralde@gmail.com>, 2018

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
msgid "" msgid ""
msgstr "" msgstr ""

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2009 # FIRST AUTHOR <EMAIL@ADDRESS>, 2009
msgid "" msgid ""

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# Christophe CHAUVET <christophe.chauvet@gmail.com>, 2017 # Christophe CHAUVET <christophe.chauvet@gmail.com>, 2017
# Christophe CHAUVET <christophe.chauvet@gmail.com>, 2013,2015 # Christophe CHAUVET <christophe.chauvet@gmail.com>, 2013,2015

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011 # FIRST AUTHOR <EMAIL@ADDRESS>, 2011
msgid "" msgid ""

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# Ajay Singh <ajaysajay@gmail.com>, 2019 # Ajay Singh <ajaysajay@gmail.com>, 2019
# Purnank H. Ghumalia <me@purnank.in>, 2015-2016 # Purnank H. Ghumalia <me@purnank.in>, 2015-2016

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
msgid "" msgid ""
msgstr "" msgstr ""

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# Mario Šarić, 2015-2020 # Mario Šarić, 2015-2020
msgid "" msgid ""

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011 # FIRST AUTHOR <EMAIL@ADDRESS>, 2011
# Molnár Dénes <denes.molnar2@stud.uni-corvinus.hu>, 2017 # Molnár Dénes <denes.molnar2@stud.uni-corvinus.hu>, 2017

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# Arif Budiman <arifpedia@gmail.com>, 2016-2017 # Arif Budiman <arifpedia@gmail.com>, 2016-2017
# FIRST AUTHOR <EMAIL@ADDRESS>, 2009 # FIRST AUTHOR <EMAIL@ADDRESS>, 2009

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# Denis Cappellin <denis@cappell.in>, 2018 # Denis Cappellin <denis@cappell.in>, 2018
# Paolo Cavallini <cavallini@faunalia.it>, 2013-2017 # Paolo Cavallini <cavallini@faunalia.it>, 2013-2017

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# shirou - しろう <shirou.faw@gmail.com>, 2013 # shirou - しろう <shirou.faw@gmail.com>, 2013
# Akitoshi Ohta <fire.kuma8@gmail.com>, 2011 # Akitoshi Ohta <fire.kuma8@gmail.com>, 2011

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# Minho Ryang <minhoryang@gmail.com>, 2019 # Minho Ryang <minhoryang@gmail.com>, 2019
# YT H <dev@theYT.net>, 2019 # YT H <dev@theYT.net>, 2019

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# DALIUS DOBRAVOLSKAS <DALIUS@SANDBOX.LT>, 2010 # DALIUS DOBRAVOLSKAS <DALIUS@SANDBOX.LT>, 2010
msgid "" msgid ""

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
msgid "" msgid ""
msgstr "" msgstr ""

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# Vasil Vangelovski <vvangelovski@gmail.com>, 2013 # Vasil Vangelovski <vvangelovski@gmail.com>, 2013
msgid "" msgid ""

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
msgid "" msgid ""
msgstr "" msgstr ""

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011 # FIRST AUTHOR <EMAIL@ADDRESS>, 2011
# Takeshi KOMIYA <i.tkomiya@gmail.com>, 2016 # Takeshi KOMIYA <i.tkomiya@gmail.com>, 2016

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# Bram Geron, 2017 # Bram Geron, 2017
# brechtm, 2016 # brechtm, 2016

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# m_aciek <maciej.olko@gmail.com>, 2017-2020 # m_aciek <maciej.olko@gmail.com>, 2017-2020
# Michael Gielda <michal.gielda@gmail.com>, 2014 # Michael Gielda <michal.gielda@gmail.com>, 2014

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
msgid "" msgid ""
msgstr "" msgstr ""

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# Claudio Rogerio Carvalho Filho <excriptbrasil@gmail.com>, 2016 # Claudio Rogerio Carvalho Filho <excriptbrasil@gmail.com>, 2016
# FIRST AUTHOR <roger.demetrescu@gmail.com>, 2008 # FIRST AUTHOR <roger.demetrescu@gmail.com>, 2008

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# Pedro Algarvio <pedro@algarvio.me>, 2013 # Pedro Algarvio <pedro@algarvio.me>, 2013
# Takeshi KOMIYA <i.tkomiya@gmail.com>, 2016 # Takeshi KOMIYA <i.tkomiya@gmail.com>, 2016

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# Razvan Stefanescu <razvan.stefanescu@gmail.com>, 2015-2017 # Razvan Stefanescu <razvan.stefanescu@gmail.com>, 2015-2017
# Takeshi KOMIYA <i.tkomiya@gmail.com>, 2016 # Takeshi KOMIYA <i.tkomiya@gmail.com>, 2016

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# Alex Salikov <Salikvo57@gmail.com>, 2019 # Alex Salikov <Salikvo57@gmail.com>, 2019
# Dmitry Shachnev <mitya57@gmail.com>, 2013 # Dmitry Shachnev <mitya57@gmail.com>, 2013

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# callkalpa <callkalpa@gmail.com>, 2013 # callkalpa <callkalpa@gmail.com>, 2013
msgid "" msgid ""

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# FIRST AUTHOR <EMAIL@ADDRESS>, 2008 # FIRST AUTHOR <EMAIL@ADDRESS>, 2008
# Slavko <linux@slavino.sk>, 2013-2019 # Slavko <linux@slavino.sk>, 2013-2019

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
msgid "" msgid ""
msgstr "" msgstr ""

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
msgid "" msgid ""
msgstr "" msgstr ""

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# Risto Pejasinovic <risto.pejasinovic@gmail.com>, 2019 # Risto Pejasinovic <risto.pejasinovic@gmail.com>, 2019
msgid "" msgid ""

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
msgid "" msgid ""
msgstr "" msgstr ""

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
msgid "" msgid ""
msgstr "" msgstr ""

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
msgid "" msgid ""
msgstr "" msgstr ""

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# Julien Malard <julien.malard@mail.mcgill.ca>, 2019 # Julien Malard <julien.malard@mail.mcgill.ca>, 2019
msgid "" msgid ""

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
msgid "" msgid ""
msgstr "" msgstr ""

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# BouRock, 2020 # BouRock, 2020
# Fırat Özgül <ozgulfirat@gmail.com>, 2013-2016 # Fırat Özgül <ozgulfirat@gmail.com>, 2013-2016

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# Petro Sasnyk <petro@sasnyk.name>, 2009 # Petro Sasnyk <petro@sasnyk.name>, 2009
msgid "" msgid ""

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
msgid "" msgid ""
msgstr "" msgstr ""

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# Hoat Le Van <hoatlevan@gmail.com>, 2014 # Hoat Le Van <hoatlevan@gmail.com>, 2014
msgid "" msgid ""

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# Yinian Chin <yinian1992@live.com>, 2015,2017-2018 # Yinian Chin <yinian1992@live.com>, 2015,2017-2018
# Hsiaoming Yang <me@lepture.com>, 2018 # Hsiaoming Yang <me@lepture.com>, 2018

View File

@ -1,7 +1,7 @@
# Translations template for Sphinx. # Translations template for Sphinx.
# Copyright (C) 2020 ORGANIZATION # Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# Adrian Liaw <adrianliaw2000@gmail.com>, 2018 # Adrian Liaw <adrianliaw2000@gmail.com>, 2018
# Fred Lin <gasolin@gmail.com>, 2008 # Fred Lin <gasolin@gmail.com>, 2008

View File

@ -143,7 +143,7 @@ JSX.resetProfileResults = function () {
return $__jsx_profiler.resetResults(); return $__jsx_profiler.resetResults();
}; };
JSX.DEBUG = false; JSX.DEBUG = false;
var GeneratorFunction$0 = var GeneratorFunction$0 =
(function () { (function () {
try { try {
return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')();
@ -151,7 +151,7 @@ var GeneratorFunction$0 =
return function GeneratorFunction () {}; return function GeneratorFunction () {};
} }
})(); })();
var __jsx_generator_object$0 = var __jsx_generator_object$0 =
(function () { (function () {
function __jsx_generator_object() { function __jsx_generator_object() {
this.__next = 0; this.__next = 0;

View File

@ -143,7 +143,7 @@ JSX.resetProfileResults = function () {
return $__jsx_profiler.resetResults(); return $__jsx_profiler.resetResults();
}; };
JSX.DEBUG = false; JSX.DEBUG = false;
var GeneratorFunction$0 = var GeneratorFunction$0 =
(function () { (function () {
try { try {
return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')();
@ -151,7 +151,7 @@ var GeneratorFunction$0 =
return function GeneratorFunction () {}; return function GeneratorFunction () {};
} }
})(); })();
var __jsx_generator_object$0 = var __jsx_generator_object$0 =
(function () { (function () {
function __jsx_generator_object() { function __jsx_generator_object() {
this.__next = 0; this.__next = 0;

View File

@ -143,7 +143,7 @@ JSX.resetProfileResults = function () {
return $__jsx_profiler.resetResults(); return $__jsx_profiler.resetResults();
}; };
JSX.DEBUG = false; JSX.DEBUG = false;
var GeneratorFunction$0 = var GeneratorFunction$0 =
(function () { (function () {
try { try {
return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')();
@ -151,7 +151,7 @@ var GeneratorFunction$0 =
return function GeneratorFunction () {}; return function GeneratorFunction () {};
} }
})(); })();
var __jsx_generator_object$0 = var __jsx_generator_object$0 =
(function () { (function () {
function __jsx_generator_object() { function __jsx_generator_object() {
this.__next = 0; this.__next = 0;

View File

@ -143,7 +143,7 @@ JSX.resetProfileResults = function () {
return $__jsx_profiler.resetResults(); return $__jsx_profiler.resetResults();
}; };
JSX.DEBUG = false; JSX.DEBUG = false;
var GeneratorFunction$0 = var GeneratorFunction$0 =
(function () { (function () {
try { try {
return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')();
@ -151,7 +151,7 @@ var GeneratorFunction$0 =
return function GeneratorFunction () {}; return function GeneratorFunction () {};
} }
})(); })();
var __jsx_generator_object$0 = var __jsx_generator_object$0 =
(function () { (function () {
function __jsx_generator_object() { function __jsx_generator_object() {
this.__next = 0; this.__next = 0;

View File

@ -143,7 +143,7 @@ JSX.resetProfileResults = function () {
return $__jsx_profiler.resetResults(); return $__jsx_profiler.resetResults();
}; };
JSX.DEBUG = false; JSX.DEBUG = false;
var GeneratorFunction$0 = var GeneratorFunction$0 =
(function () { (function () {
try { try {
return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')();
@ -151,7 +151,7 @@ var GeneratorFunction$0 =
return function GeneratorFunction () {}; return function GeneratorFunction () {};
} }
})(); })();
var __jsx_generator_object$0 = var __jsx_generator_object$0 =
(function () { (function () {
function __jsx_generator_object() { function __jsx_generator_object() {
this.__next = 0; this.__next = 0;

View File

@ -143,7 +143,7 @@ JSX.resetProfileResults = function () {
return $__jsx_profiler.resetResults(); return $__jsx_profiler.resetResults();
}; };
JSX.DEBUG = false; JSX.DEBUG = false;
var GeneratorFunction$0 = var GeneratorFunction$0 =
(function () { (function () {
try { try {
return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')();
@ -151,7 +151,7 @@ var GeneratorFunction$0 =
return function GeneratorFunction () {}; return function GeneratorFunction () {};
} }
})(); })();
var __jsx_generator_object$0 = var __jsx_generator_object$0 =
(function () { (function () {
function __jsx_generator_object() { function __jsx_generator_object() {
this.__next = 0; this.__next = 0;

View File

@ -143,7 +143,7 @@ JSX.resetProfileResults = function () {
return $__jsx_profiler.resetResults(); return $__jsx_profiler.resetResults();
}; };
JSX.DEBUG = false; JSX.DEBUG = false;
var GeneratorFunction$0 = var GeneratorFunction$0 =
(function () { (function () {
try { try {
return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')();
@ -151,7 +151,7 @@ var GeneratorFunction$0 =
return function GeneratorFunction () {}; return function GeneratorFunction () {};
} }
})(); })();
var __jsx_generator_object$0 = var __jsx_generator_object$0 =
(function () { (function () {
function __jsx_generator_object() { function __jsx_generator_object() {
this.__next = 0; this.__next = 0;

View File

@ -143,7 +143,7 @@ JSX.resetProfileResults = function () {
return $__jsx_profiler.resetResults(); return $__jsx_profiler.resetResults();
}; };
JSX.DEBUG = false; JSX.DEBUG = false;
var GeneratorFunction$0 = var GeneratorFunction$0 =
(function () { (function () {
try { try {
return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')();
@ -151,7 +151,7 @@ var GeneratorFunction$0 =
return function GeneratorFunction () {}; return function GeneratorFunction () {};
} }
})(); })();
var __jsx_generator_object$0 = var __jsx_generator_object$0 =
(function () { (function () {
function __jsx_generator_object() { function __jsx_generator_object() {
this.__next = 0; this.__next = 0;

View File

@ -143,7 +143,7 @@ JSX.resetProfileResults = function () {
return $__jsx_profiler.resetResults(); return $__jsx_profiler.resetResults();
}; };
JSX.DEBUG = false; JSX.DEBUG = false;
var GeneratorFunction$0 = var GeneratorFunction$0 =
(function () { (function () {
try { try {
return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')();
@ -151,7 +151,7 @@ var GeneratorFunction$0 =
return function GeneratorFunction () {}; return function GeneratorFunction () {};
} }
})(); })();
var __jsx_generator_object$0 = var __jsx_generator_object$0 =
(function () { (function () {
function __jsx_generator_object() { function __jsx_generator_object() {
this.__next = 0; this.__next = 0;

View File

@ -143,7 +143,7 @@ JSX.resetProfileResults = function () {
return $__jsx_profiler.resetResults(); return $__jsx_profiler.resetResults();
}; };
JSX.DEBUG = false; JSX.DEBUG = false;
var GeneratorFunction$0 = var GeneratorFunction$0 =
(function () { (function () {
try { try {
return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')();
@ -151,7 +151,7 @@ var GeneratorFunction$0 =
return function GeneratorFunction () {}; return function GeneratorFunction () {};
} }
})(); })();
var __jsx_generator_object$0 = var __jsx_generator_object$0 =
(function () { (function () {
function __jsx_generator_object() { function __jsx_generator_object() {
this.__next = 0; this.__next = 0;

View File

@ -143,7 +143,7 @@ JSX.resetProfileResults = function () {
return $__jsx_profiler.resetResults(); return $__jsx_profiler.resetResults();
}; };
JSX.DEBUG = false; JSX.DEBUG = false;
var GeneratorFunction$0 = var GeneratorFunction$0 =
(function () { (function () {
try { try {
return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')();
@ -151,7 +151,7 @@ var GeneratorFunction$0 =
return function GeneratorFunction () {}; return function GeneratorFunction () {};
} }
})(); })();
var __jsx_generator_object$0 = var __jsx_generator_object$0 =
(function () { (function () {
function __jsx_generator_object() { function __jsx_generator_object() {
this.__next = 0; this.__next = 0;

View File

@ -143,7 +143,7 @@ JSX.resetProfileResults = function () {
return $__jsx_profiler.resetResults(); return $__jsx_profiler.resetResults();
}; };
JSX.DEBUG = false; JSX.DEBUG = false;
var GeneratorFunction$0 = var GeneratorFunction$0 =
(function () { (function () {
try { try {
return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')();
@ -151,7 +151,7 @@ var GeneratorFunction$0 =
return function GeneratorFunction () {}; return function GeneratorFunction () {};
} }
})(); })();
var __jsx_generator_object$0 = var __jsx_generator_object$0 =
(function () { (function () {
function __jsx_generator_object() { function __jsx_generator_object() {
this.__next = 0; this.__next = 0;

View File

@ -143,7 +143,7 @@ JSX.resetProfileResults = function () {
return $__jsx_profiler.resetResults(); return $__jsx_profiler.resetResults();
}; };
JSX.DEBUG = false; JSX.DEBUG = false;
var GeneratorFunction$0 = var GeneratorFunction$0 =
(function () { (function () {
try { try {
return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')();
@ -151,7 +151,7 @@ var GeneratorFunction$0 =
return function GeneratorFunction () {}; return function GeneratorFunction () {};
} }
})(); })();
var __jsx_generator_object$0 = var __jsx_generator_object$0 =
(function () { (function () {
function __jsx_generator_object() { function __jsx_generator_object() {
this.__next = 0; this.__next = 0;

View File

@ -143,7 +143,7 @@ JSX.resetProfileResults = function () {
return $__jsx_profiler.resetResults(); return $__jsx_profiler.resetResults();
}; };
JSX.DEBUG = false; JSX.DEBUG = false;
var GeneratorFunction$0 = var GeneratorFunction$0 =
(function () { (function () {
try { try {
return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')();
@ -151,7 +151,7 @@ var GeneratorFunction$0 =
return function GeneratorFunction () {}; return function GeneratorFunction () {};
} }
})(); })();
var __jsx_generator_object$0 = var __jsx_generator_object$0 =
(function () { (function () {
function __jsx_generator_object() { function __jsx_generator_object() {
this.__next = 0; this.__next = 0;

View File

@ -143,7 +143,7 @@ JSX.resetProfileResults = function () {
return $__jsx_profiler.resetResults(); return $__jsx_profiler.resetResults();
}; };
JSX.DEBUG = false; JSX.DEBUG = false;
var GeneratorFunction$0 = var GeneratorFunction$0 =
(function () { (function () {
try { try {
return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')(); return Function('import {GeneratorFunction} from "std:iteration"; return GeneratorFunction')();
@ -151,7 +151,7 @@ var GeneratorFunction$0 =
return function GeneratorFunction () {}; return function GeneratorFunction () {};
} }
})(); })();
var __jsx_generator_object$0 = var __jsx_generator_object$0 =
(function () { (function () {
function __jsx_generator_object() { function __jsx_generator_object() {
this.__next = 0; this.__next = 0;

View File

@ -1823,7 +1823,7 @@
% fix a space-gobbling issue due to LaTeX's original \do@noligs % fix a space-gobbling issue due to LaTeX's original \do@noligs
% TODO: using \@noligs as patched by upquote.sty is now unneeded because % TODO: using \@noligs as patched by upquote.sty is now unneeded because
% either ` and ' are escaped (non-unicode engines) or they don't build % either ` and ' are escaped (non-unicode engines) or they don't build
% ligatures (unicode engines). Thus remove this and unify handling of `, <, >, % ligatures (unicode engines). Thus remove this and unify handling of `, <, >,
% ' and - with the characters . , ; ? ! / as handled via % ' and - with the characters . , ; ? ! / as handled via
% \sphinxbreaksviaactive. % \sphinxbreaksviaactive.
% Hence \sphinx@do@noligs will be removed, or rather replaced with code % Hence \sphinx@do@noligs will be removed, or rather replaced with code
@ -1905,7 +1905,7 @@
% Special characters % Special characters
% %
% This definition prevents en-dash and em-dash TeX ligatures. % This definition prevents en-dash and em-dash TeX ligatures.
% %
% It inserts a potential breakpoint after the hyphen. This is to keep in sync % It inserts a potential breakpoint after the hyphen. This is to keep in sync
% with behavior in code-blocks, parsed and inline literals. For a breakpoint % with behavior in code-blocks, parsed and inline literals. For a breakpoint
% before the hyphen use \leavevmode\kern\z@- (within \makeatletter/\makeatother) % before the hyphen use \leavevmode\kern\z@- (within \makeatletter/\makeatother)

View File

@ -15,7 +15,7 @@
% https://tex.stackexchange.com/a/460325/ % https://tex.stackexchange.com/a/460325/
% 159 Cyrillic glyphs as available in X2 TeX 8bit font encoding % 159 Cyrillic glyphs as available in X2 TeX 8bit font encoding
% This assumes inputenc loaded with utf8 option, or LaTeX release % This assumes inputenc loaded with utf8 option, or LaTeX release
% as recent as 2018/04/01 which does it automatically. % as recent as 2018/04/01 which does it automatically.
\@tfor\next:=% \@tfor\next:=%
{Ё}{Ђ}{Є}{Ѕ}{І}{Ј}{Љ}{Њ}{Ћ}{Ў}{Џ}{А}{Б}{В}{Г}{Д}{Е}{Ж}{З}{И}{Й}% {Ё}{Ђ}{Є}{Ѕ}{І}{Ј}{Љ}{Њ}{Ћ}{Ў}{Џ}{А}{Б}{В}{Г}{Д}{Е}{Ж}{З}{И}{Й}%
{К}{Л}{М}{Н}{О}{П}{Р}{С}{Т}{У}{Ф}{Х}{Ц}{Ч}{Ш}{Щ}{Ъ}{Ы}{Ь}{Э}{Ю}% {К}{Л}{М}{Н}{О}{П}{Р}{С}{Т}{У}{Ф}{Х}{Ц}{Ч}{Ш}{Щ}{Ъ}{Ы}{Ь}{Э}{Ю}%

View File

@ -76,7 +76,7 @@
\endgroup \endgroup
\noindent\rule{\textwidth}{1pt}\par \noindent\rule{\textwidth}{1pt}\par
\vspace{12pt}% \vspace{12pt}%
} }
\newcommand\sphinxtableofcontentshook{} \newcommand\sphinxtableofcontentshook{}
\pagenumbering{arabic} \pagenumbering{arabic}

View File

@ -8,11 +8,11 @@
* :license: BSD, see LICENSE for details. * :license: BSD, see LICENSE for details.
* *
*/ */
@import url("basic.css"); @import url("basic.css");
/* -- page layout ----------------------------------------------------------- */ /* -- page layout ----------------------------------------------------------- */
body { body {
font-family: Arial, sans-serif; font-family: Arial, sans-serif;
font-size: 100%; font-size: 100%;
@ -34,18 +34,18 @@ div.bodywrapper {
hr { hr {
border: 1px solid #B1B4B6; border: 1px solid #B1B4B6;
} }
div.document { div.document {
background-color: #eee; background-color: #eee;
} }
div.body { div.body {
background-color: #ffffff; background-color: #ffffff;
color: #3E4349; color: #3E4349;
padding: 0 30px 30px 30px; padding: 0 30px 30px 30px;
font-size: 0.9em; font-size: 0.9em;
} }
div.footer { div.footer {
color: #555; color: #555;
width: 100%; width: 100%;
@ -53,12 +53,12 @@ div.footer {
text-align: center; text-align: center;
font-size: 75%; font-size: 75%;
} }
div.footer a { div.footer a {
color: #444; color: #444;
text-decoration: underline; text-decoration: underline;
} }
div.related { div.related {
background-color: #6BA81E; background-color: #6BA81E;
line-height: 32px; line-height: 32px;
@ -66,11 +66,11 @@ div.related {
text-shadow: 0px 1px 0 #444; text-shadow: 0px 1px 0 #444;
font-size: 0.9em; font-size: 0.9em;
} }
div.related a { div.related a {
color: #E2F3CC; color: #E2F3CC;
} }
div.sphinxsidebar { div.sphinxsidebar {
font-size: 0.75em; font-size: 0.75em;
line-height: 1.5em; line-height: 1.5em;
@ -79,7 +79,7 @@ div.sphinxsidebar {
div.sphinxsidebarwrapper{ div.sphinxsidebarwrapper{
padding: 20px 0; padding: 20px 0;
} }
div.sphinxsidebar h3, div.sphinxsidebar h3,
div.sphinxsidebar h4 { div.sphinxsidebar h4 {
font-family: Arial, sans-serif; font-family: Arial, sans-serif;
@ -95,30 +95,30 @@ div.sphinxsidebar h4 {
div.sphinxsidebar h4{ div.sphinxsidebar h4{
font-size: 1.1em; font-size: 1.1em;
} }
div.sphinxsidebar h3 a { div.sphinxsidebar h3 a {
color: #444; color: #444;
} }
div.sphinxsidebar p { div.sphinxsidebar p {
color: #888; color: #888;
padding: 5px 20px; padding: 5px 20px;
} }
div.sphinxsidebar p.topless { div.sphinxsidebar p.topless {
} }
div.sphinxsidebar ul { div.sphinxsidebar ul {
margin: 10px 20px; margin: 10px 20px;
padding: 0; padding: 0;
color: #000; color: #000;
} }
div.sphinxsidebar a { div.sphinxsidebar a {
color: #444; color: #444;
} }
div.sphinxsidebar input { div.sphinxsidebar input {
border: 1px solid #ccc; border: 1px solid #ccc;
font-family: sans-serif; font-family: sans-serif;
@ -131,17 +131,17 @@ div.sphinxsidebar .searchformwrapper {
} }
/* -- body styles ----------------------------------------------------------- */ /* -- body styles ----------------------------------------------------------- */
a { a {
color: #005B81; color: #005B81;
text-decoration: none; text-decoration: none;
} }
a:hover { a:hover {
color: #E32E00; color: #E32E00;
text-decoration: underline; text-decoration: underline;
} }
div.body h1, div.body h1,
div.body h2, div.body h2,
div.body h3, div.body h3,
@ -156,30 +156,30 @@ div.body h6 {
padding: 5px 0 5px 10px; padding: 5px 0 5px 10px;
text-shadow: 0px 1px 0 white text-shadow: 0px 1px 0 white
} }
div.body h1 { border-top: 20px solid white; margin-top: 0; font-size: 200%; } div.body h1 { border-top: 20px solid white; margin-top: 0; font-size: 200%; }
div.body h2 { font-size: 150%; background-color: #C8D5E3; } div.body h2 { font-size: 150%; background-color: #C8D5E3; }
div.body h3 { font-size: 120%; background-color: #D8DEE3; } div.body h3 { font-size: 120%; background-color: #D8DEE3; }
div.body h4 { font-size: 110%; background-color: #D8DEE3; } div.body h4 { font-size: 110%; background-color: #D8DEE3; }
div.body h5 { font-size: 100%; background-color: #D8DEE3; } div.body h5 { font-size: 100%; background-color: #D8DEE3; }
div.body h6 { font-size: 100%; background-color: #D8DEE3; } div.body h6 { font-size: 100%; background-color: #D8DEE3; }
a.headerlink { a.headerlink {
color: #c60f0f; color: #c60f0f;
font-size: 0.8em; font-size: 0.8em;
padding: 0 4px 0 4px; padding: 0 4px 0 4px;
text-decoration: none; text-decoration: none;
} }
a.headerlink:hover { a.headerlink:hover {
background-color: #c60f0f; background-color: #c60f0f;
color: white; color: white;
} }
div.body p, div.body dd, div.body li { div.body p, div.body dd, div.body li {
line-height: 1.5em; line-height: 1.5em;
} }
div.admonition p.admonition-title + p { div.admonition p.admonition-title + p {
display: inline; display: inline;
} }
@ -188,29 +188,29 @@ div.note {
background-color: #eee; background-color: #eee;
border: 1px solid #ccc; border: 1px solid #ccc;
} }
div.seealso { div.seealso {
background-color: #ffc; background-color: #ffc;
border: 1px solid #ff6; border: 1px solid #ff6;
} }
div.topic { div.topic {
background-color: #eee; background-color: #eee;
} }
div.warning { div.warning {
background-color: #ffe4e4; background-color: #ffe4e4;
border: 1px solid #f66; border: 1px solid #f66;
} }
p.admonition-title { p.admonition-title {
display: inline; display: inline;
} }
p.admonition-title:after { p.admonition-title:after {
content: ":"; content: ":";
} }
pre { pre {
padding: 10px; padding: 10px;
line-height: 1.2em; line-height: 1.2em;
@ -220,7 +220,7 @@ pre {
-webkit-box-shadow: 1px 1px 1px #d8d8d8; -webkit-box-shadow: 1px 1px 1px #d8d8d8;
-moz-box-shadow: 1px 1px 1px #d8d8d8; -moz-box-shadow: 1px 1px 1px #d8d8d8;
} }
code { code {
background-color: #ecf0f3; background-color: #ecf0f3;
color: #222; color: #222;

View File

@ -8,11 +8,11 @@
* :license: BSD, see LICENSE for details. * :license: BSD, see LICENSE for details.
* *
*/ */
@import url("basic.css"); @import url("basic.css");
/* -- page layout ----------------------------------------------------------- */ /* -- page layout ----------------------------------------------------------- */
body { body {
font-family: "Nobile", sans-serif; font-family: "Nobile", sans-serif;
font-size: 100%; font-size: 100%;
@ -34,7 +34,7 @@ div.bodywrapper {
hr { hr {
border: 1px solid #B1B4B6; border: 1px solid #B1B4B6;
} }
div.document { div.document {
background-color: #eee; background-color: #eee;
} }
@ -59,7 +59,7 @@ div.body {
border-right-style: none; border-right-style: none;
overflow: auto; overflow: auto;
} }
div.footer { div.footer {
color: #ffffff; color: #ffffff;
width: 100%; width: 100%;
@ -69,7 +69,7 @@ div.footer {
background: transparent; background: transparent;
clear:both; clear:both;
} }
div.footer a { div.footer a {
color: #ffffff; color: #ffffff;
text-decoration: none; text-decoration: none;
@ -79,14 +79,14 @@ div.footer a:hover {
color: #e88f00; color: #e88f00;
text-decoration: underline; text-decoration: underline;
} }
div.related { div.related {
line-height: 30px; line-height: 30px;
color: #373839; color: #373839;
font-size: 0.8em; font-size: 0.8em;
background-color: #eee; background-color: #eee;
} }
div.related a { div.related a {
color: #1b61d6; color: #1b61d6;
} }
@ -94,7 +94,7 @@ div.related a {
div.related ul { div.related ul {
padding-left: calc({{ theme_sidebarwidth|todim }} + 10px); padding-left: calc({{ theme_sidebarwidth|todim }} + 10px);
} }
div.sphinxsidebar { div.sphinxsidebar {
font-size: 0.75em; font-size: 0.75em;
line-height: 1.5em; line-height: 1.5em;
@ -103,7 +103,7 @@ div.sphinxsidebar {
div.sphinxsidebarwrapper{ div.sphinxsidebarwrapper{
padding: 10px 0; padding: 10px 0;
} }
div.sphinxsidebar h3, div.sphinxsidebar h3,
div.sphinxsidebar h4 { div.sphinxsidebar h4 {
font-family: "Neuton", sans-serif; font-family: "Neuton", sans-serif;
@ -118,30 +118,30 @@ div.sphinxsidebar h4 {
div.sphinxsidebar h4{ div.sphinxsidebar h4{
font-size: 1.3em; font-size: 1.3em;
} }
div.sphinxsidebar h3 a { div.sphinxsidebar h3 a {
color: #000000; color: #000000;
} }
div.sphinxsidebar p { div.sphinxsidebar p {
color: #888; color: #888;
padding: 5px 20px; padding: 5px 20px;
} }
div.sphinxsidebar p.topless { div.sphinxsidebar p.topless {
} }
div.sphinxsidebar ul { div.sphinxsidebar ul {
margin: 10px 20px; margin: 10px 20px;
padding: 0; padding: 0;
color: #373839; color: #373839;
} }
div.sphinxsidebar a { div.sphinxsidebar a {
color: #444; color: #444;
} }
div.sphinxsidebar input { div.sphinxsidebar input {
border: 1px solid #ccc; border: 1px solid #ccc;
font-family: sans-serif; font-family: sans-serif;
@ -171,16 +171,16 @@ p.sidebar-title {
} }
/* -- body styles ----------------------------------------------------------- */ /* -- body styles ----------------------------------------------------------- */
a, a .pre { a, a .pre {
color: #1b61d6; color: #1b61d6;
text-decoration: none; text-decoration: none;
} }
a:hover, a:hover .pre { a:hover, a:hover .pre {
text-decoration: underline; text-decoration: underline;
} }
div.body h1, div.body h1,
div.body h2, div.body h2,
div.body h3, div.body h3,
@ -194,29 +194,29 @@ div.body h6 {
margin: 30px 0px 10px 0px; margin: 30px 0px 10px 0px;
padding: 5px 0; padding: 5px 0;
} }
div.body h1 { border-top: 20px solid white; margin-top: 0; font-size: 200%; } div.body h1 { border-top: 20px solid white; margin-top: 0; font-size: 200%; }
div.body h2 { font-size: 150%; background-color: #ffffff; } div.body h2 { font-size: 150%; background-color: #ffffff; }
div.body h3 { font-size: 120%; background-color: #ffffff; } div.body h3 { font-size: 120%; background-color: #ffffff; }
div.body h4 { font-size: 110%; background-color: #ffffff; } div.body h4 { font-size: 110%; background-color: #ffffff; }
div.body h5 { font-size: 100%; background-color: #ffffff; } div.body h5 { font-size: 100%; background-color: #ffffff; }
div.body h6 { font-size: 100%; background-color: #ffffff; } div.body h6 { font-size: 100%; background-color: #ffffff; }
a.headerlink { a.headerlink {
color: #1b61d6; color: #1b61d6;
font-size: 0.8em; font-size: 0.8em;
padding: 0 4px 0 4px; padding: 0 4px 0 4px;
text-decoration: none; text-decoration: none;
} }
a.headerlink:hover { a.headerlink:hover {
text-decoration: underline; text-decoration: underline;
} }
div.body p, div.body dd, div.body li { div.body p, div.body dd, div.body li {
line-height: 1.5em; line-height: 1.5em;
} }
div.admonition p.admonition-title + p { div.admonition p.admonition-title + p {
display: inline; display: inline;
} }
@ -236,7 +236,7 @@ div.note {
padding: 10px 20px 10px 60px; padding: 10px 20px 10px 60px;
background: #e1ecfe url(dialog-note.png) no-repeat 10px 8px; background: #e1ecfe url(dialog-note.png) no-repeat 10px 8px;
} }
div.seealso { div.seealso {
background: #fff6bf url(dialog-seealso.png) no-repeat 10px 8px; background: #fff6bf url(dialog-seealso.png) no-repeat 10px 8px;
border: 2px solid #ffd324; border: 2px solid #ffd324;
@ -244,7 +244,7 @@ div.seealso {
border-right-style: none; border-right-style: none;
padding: 10px 20px 10px 60px; padding: 10px 20px 10px 60px;
} }
div.topic { div.topic {
background: #eeeeee; background: #eeeeee;
border: 2px solid #C6C9CB; border: 2px solid #C6C9CB;
@ -252,7 +252,7 @@ div.topic {
border-right-style: none; border-right-style: none;
border-left-style: none; border-left-style: none;
} }
div.warning { div.warning {
background: #fbe3e4 url(dialog-warning.png) no-repeat 10px 8px; background: #fbe3e4 url(dialog-warning.png) no-repeat 10px 8px;
border: 2px solid #fbc2c4; border: 2px solid #fbc2c4;
@ -268,18 +268,18 @@ div.admonition-todo {
border-left-style: none; border-left-style: none;
padding: 10px 20px 10px 60px; padding: 10px 20px 10px 60px;
} }
div.note p.admonition-title, div.note p.admonition-title,
div.warning p.admonition-title, div.warning p.admonition-title,
div.seealso p.admonition-title, div.seealso p.admonition-title,
div.admonition-todo p.admonition-title { div.admonition-todo p.admonition-title {
display: none; display: none;
} }
p.admonition-title:after { p.admonition-title:after {
content: ":"; content: ":";
} }
pre { pre {
padding: 10px; padding: 10px;
line-height: 1.2em; line-height: 1.2em;
@ -289,7 +289,7 @@ pre {
border-right-style: none; border-right-style: none;
border-left-style: none; border-left-style: none;
} }
code { code {
background-color: transparent; background-color: transparent;
color: #222; color: #222;

View File

@ -138,7 +138,7 @@ div.footer a {
/* -- body styles ----------------------------------------------------------- */ /* -- body styles ----------------------------------------------------------- */
p { p {
margin: 0.8em 0 0.5em 0; margin: 0.8em 0 0.5em 0;
} }

View File

@ -439,8 +439,8 @@ def _should_unwrap(subject: Callable) -> bool:
return False return False
def signature(subject: Callable, bound_method: bool = False, follow_wrapped: bool = False def signature(subject: Callable, bound_method: bool = False, follow_wrapped: bool = False,
) -> inspect.Signature: type_aliases: Dict = {}) -> inspect.Signature:
"""Return a Signature object for the given *subject*. """Return a Signature object for the given *subject*.
:param bound_method: Specify *subject* is a bound method or not :param bound_method: Specify *subject* is a bound method or not
@ -470,7 +470,7 @@ def signature(subject: Callable, bound_method: bool = False, follow_wrapped: boo
try: try:
# Update unresolved annotations using ``get_type_hints()``. # Update unresolved annotations using ``get_type_hints()``.
annotations = typing.get_type_hints(subject) annotations = typing.get_type_hints(subject, None, type_aliases)
for i, param in enumerate(parameters): for i, param in enumerate(parameters):
if isinstance(param.annotation, str) and param.name in annotations: if isinstance(param.annotation, str) and param.name in annotations:
parameters[i] = param.replace(annotation=annotations[param.name]) parameters[i] = param.replace(annotation=annotations[param.name])

View File

@ -63,7 +63,11 @@ def is_system_TypeVar(typ: Any) -> bool:
def stringify(annotation: Any) -> str: def stringify(annotation: Any) -> str:
"""Stringify type annotation object.""" """Stringify type annotation object."""
if isinstance(annotation, str): if isinstance(annotation, str):
return annotation if annotation.startswith("'") and annotation.endswith("'"):
# might be a double Forward-ref'ed type. Go unquoting.
return annotation[1:-2]
else:
return annotation
elif isinstance(annotation, TypeVar): # type: ignore elif isinstance(annotation, TypeVar): # type: ignore
return annotation.__name__ return annotation.__name__
elif not annotation: elif not annotation:
@ -105,7 +109,10 @@ def _stringify_py37(annotation: Any) -> str:
return repr(annotation) return repr(annotation)
if getattr(annotation, '__args__', None): if getattr(annotation, '__args__', None):
if qualname == 'Union': if not isinstance(annotation.__args__, (list, tuple)):
# broken __args__ found
pass
elif qualname == 'Union':
if len(annotation.__args__) > 1 and annotation.__args__[-1] is NoneType: if len(annotation.__args__) > 1 and annotation.__args__[-1] is NoneType:
if len(annotation.__args__) > 2: if len(annotation.__args__) > 2:
args = ', '.join(stringify(a) for a in annotation.__args__[:-1]) args = ', '.join(stringify(a) for a in annotation.__args__[:-1])

View File

@ -1 +1 @@
exclude_patterns = ['_build'] exclude_patterns = ['_build']

View File

@ -0,0 +1,25 @@
from __future__ import annotations
from typing import overload
myint = int
def sum(x: myint, y: myint) -> myint:
"""docstring"""
return x + y
@overload
def mult(x: myint, y: myint) -> myint:
...
@overload
def mult(x: float, y: float) -> float:
...
def mult(x, y):
"""docstring"""
return x, y

View File

@ -1,5 +1,5 @@
# SOME DESCRIPTIVE TITLE. # SOME DESCRIPTIVE TITLE.
# Copyright (C) # Copyright (C)
# This file is distributed under the same license as the Sphinx intl <Tests> package. # This file is distributed under the same license as the Sphinx intl <Tests> package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# #

View File

@ -0,0 +1,2 @@
exclude_patterns = ['_build']
linkcheck_anchors = True

View File

@ -0,0 +1 @@
`local server <http://localhost:7777/#anchor>`_

View File

@ -1 +1 @@
exclude_patterns = ['_build'] exclude_patterns = ['_build']

View File

@ -1,2 +1,2 @@
recursive-include test_theme *.conf recursive-include test_theme *.conf

View File

@ -1,3 +1,3 @@
html_theme = 'test-theme' html_theme = 'test-theme'
html_theme_path = ['.', 'test_theme'] html_theme_path = ['.', 'test_theme']
exclude_patterns = ['_build'] exclude_patterns = ['_build']

View File

@ -1,5 +1,5 @@
======= =======
Theming Theming
======= =======

View File

@ -1,11 +1,11 @@
from setuptools import setup, find_packages from setuptools import setup, find_packages
setup( setup(
name='test-theme', name='test-theme',
packages=find_packages(), packages=find_packages(),
include_package_data=True, include_package_data=True,
entry_points=""" entry_points="""
[sphinx_themes] [sphinx_themes]
path = test_theme:get_path path = test_theme:get_path
""", """,
) )

View File

@ -1,5 +1,5 @@
import os import os
def get_path(): def get_path():
return os.path.dirname(os.path.abspath(__file__)) return os.path.dirname(os.path.abspath(__file__))

View File

@ -8,8 +8,10 @@
:license: BSD, see LICENSE for details. :license: BSD, see LICENSE for details.
""" """
import http.server
import json import json
import re import re
import threading
from unittest import mock from unittest import mock
import pytest import pytest
@ -106,6 +108,21 @@ def test_anchors_ignored(app, status, warning):
# expect all ok when excluding #top # expect all ok when excluding #top
assert not content assert not content
@pytest.mark.sphinx('linkcheck', testroot='linkcheck-localserver', freshenv=True)
def test_raises_for_invalid_status(app, status, warning):
server_thread = HttpServerThread(InternalServerErrorHandler, daemon=True)
server_thread.start()
try:
app.builder.build_all()
finally:
server_thread.terminate()
content = (app.outdir / 'output.txt').read_text()
assert content == (
"index.rst:1: [broken] http://localhost:7777/#anchor: "
"500 Server Error: Internal Server Error "
"for url: http://localhost:7777/\n"
)
@pytest.mark.sphinx( @pytest.mark.sphinx(
'linkcheck', testroot='linkcheck', freshenv=True, 'linkcheck', testroot='linkcheck', freshenv=True,
@ -160,3 +177,22 @@ def test_linkcheck_request_headers(app, status, warning):
assert headers["X-Secret"] == "open sesami" assert headers["X-Secret"] == "open sesami"
else: else:
assert headers["Accept"] == "text/html,application/xhtml+xml;q=0.9,*/*;q=0.8" assert headers["Accept"] == "text/html,application/xhtml+xml;q=0.9,*/*;q=0.8"
class HttpServerThread(threading.Thread):
def __init__(self, handler, *args, **kwargs):
super().__init__(*args, **kwargs)
self.server = http.server.HTTPServer(("localhost", 7777), handler)
def run(self):
self.server.serve_forever(poll_interval=0.01)
def terminate(self):
self.server.shutdown()
self.server.server_close()
self.join()
class InternalServerErrorHandler(http.server.BaseHTTPRequestHandler):
def do_GET(self):
self.send_error(500, "Internal Server Error")

View File

@ -642,6 +642,54 @@ def test_autodoc_typehints_description_for_invalid_node(app):
restructuredtext.parse(app, text) # raises no error restructuredtext.parse(app, text) # raises no error
@pytest.mark.skipif(sys.version_info < (3, 7), reason='python 3.7+ is required.')
@pytest.mark.sphinx('text', testroot='ext-autodoc')
def test_autodoc_type_aliases(app):
# default
options = {"members": None}
actual = do_autodoc(app, 'module', 'target.annotations', options)
assert list(actual) == [
'',
'.. py:module:: target.annotations',
'',
'',
'.. py:function:: mult(x: int, y: int) -> int',
' mult(x: float, y: float) -> float',
' :module: target.annotations',
'',
' docstring',
'',
'',
'.. py:function:: sum(x: int, y: int) -> int',
' :module: target.annotations',
'',
' docstring',
'',
]
# define aliases
app.config.autodoc_type_aliases = {'myint': 'myint'}
actual = do_autodoc(app, 'module', 'target.annotations', options)
assert list(actual) == [
'',
'.. py:module:: target.annotations',
'',
'',
'.. py:function:: mult(x: myint, y: myint) -> myint',
' mult(x: float, y: float) -> float',
' :module: target.annotations',
'',
' docstring',
'',
'',
'.. py:function:: sum(x: myint, y: myint) -> myint',
' :module: target.annotations',
'',
' docstring',
'',
]
@pytest.mark.sphinx('html', testroot='ext-autodoc') @pytest.mark.sphinx('html', testroot='ext-autodoc')
def test_autodoc_default_options(app): def test_autodoc_default_options(app):
# no settings # no settings

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