From 62723872bce3527e2a0d5a04bf255fcf076f1950 Mon Sep 17 00:00:00 2001 From: Dmitry Shachnev Date: Mon, 2 May 2016 15:45:16 +0300 Subject: [PATCH 01/31] imgmath: Add missing parentheses for string formatting --- sphinx/ext/imgmath.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sphinx/ext/imgmath.py b/sphinx/ext/imgmath.py index 307145adb..755e417fe 100644 --- a/sphinx/ext/imgmath.py +++ b/sphinx/ext/imgmath.py @@ -178,8 +178,8 @@ def render_math(self, math): raise self.builder.warn('%s command %r cannot be run (needed for math ' 'display), check the imgmath_%s setting' % - image_translator, image_translator_executable, - image_translator) + (image_translator, image_translator_executable, + image_translator)) self.builder._imgmath_warned_image_translator = True return None, None From 26fecafb4920a8d9dacaa9e3614bf182ce12696a Mon Sep 17 00:00:00 2001 From: shimizukawa Date: Thu, 5 May 2016 23:26:19 +0900 Subject: [PATCH 02/31] fix #2522: Sphinx touches mo files under installed directory that caused permission error. --- CHANGES | 1 + sphinx/application.py | 15 ++++++++++----- sphinx/locale/__init__.py | 9 +-------- sphinx/transforms.py | 4 +--- 4 files changed, 13 insertions(+), 16 deletions(-) diff --git a/CHANGES b/CHANGES index 7c1692dbe..ab2bd65a1 100644 --- a/CHANGES +++ b/CHANGES @@ -52,6 +52,7 @@ Bugs fixed * #2492: Figure directive with :figwidth: generates incorrect Latex-code * The caption of figure is always put on center even if ``:align:`` was specified * #2526: LaTeX writer crashes if the section having only images +* #2522: Sphinx touches mo files under installed directory that caused permission error. Release 1.4.1 (released Apr 12, 2016) diff --git a/sphinx/application.py b/sphinx/application.py index a833816f1..e82719d77 100644 --- a/sphinx/application.py +++ b/sphinx/application.py @@ -44,6 +44,7 @@ from sphinx.util.osutil import ENOENT from sphinx.util.logging import is_suppressed_warning from sphinx.util.console import bold, lightgray, darkgray, darkgreen, \ term_width_line +from sphinx.util.i18n import find_catalog_source_files if hasattr(sys, 'intern'): intern = sys.intern @@ -207,13 +208,17 @@ class Sphinx(object): if self.config.language is not None: self.info(bold('loading translations [%s]... ' % self.config.language), nonl=True) - locale_dirs = [None, path.join(package_dir, 'locale')] + \ - [path.join(self.srcdir, x) for x in self.config.locale_dirs] + user_locale_dirs = [ + path.join(self.srcdir, x) for x in self.config.locale_dirs] + # compile mo files if sphinx.po file in user locale directories are updated + for catinfo in find_catalog_source_files( + user_locale_dirs, self.config.language, domains=['sphinx'], + charset=self.config.source_encoding): + catinfo.write_mo(self.config.language) + locale_dirs = [None, path.join(package_dir, 'locale')] + user_locale_dirs else: locale_dirs = [] - self.translator, has_translation = locale.init(locale_dirs, - self.config.language, - charset=self.config.source_encoding) + self.translator, has_translation = locale.init(locale_dirs, self.config.language) if self.config.language is not None: if has_translation or self.config.language == 'en': # "en" never needs to be translated diff --git a/sphinx/locale/__init__.py b/sphinx/locale/__init__.py index f7a375dec..d2d08c628 100644 --- a/sphinx/locale/__init__.py +++ b/sphinx/locale/__init__.py @@ -195,7 +195,7 @@ else: return translators['sphinx'].ugettext(message) -def init(locale_dirs, language, catalog='sphinx', charset='utf-8'): +def init(locale_dirs, language, catalog='sphinx'): """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 @@ -209,13 +209,6 @@ def init(locale_dirs, language, catalog='sphinx', charset='utf-8'): # the None entry is the system's default locale path has_translation = True - # compile mo files if po file is updated - # TODO: remove circular importing - from sphinx.util.i18n import find_catalog_source_files - for catinfo in find_catalog_source_files(locale_dirs, language, domains=[catalog], - charset=charset): - catinfo.write_mo(language) - # loading for dir_ in locale_dirs: try: diff --git a/sphinx/transforms.py b/sphinx/transforms.py index 47e22237e..abeab7dab 100644 --- a/sphinx/transforms.py +++ b/sphinx/transforms.py @@ -239,9 +239,7 @@ class Locale(Transform): # fetch translations dirs = [path.join(env.srcdir, directory) for directory in env.config.locale_dirs] - catalog, has_catalog = init_locale(dirs, env.config.language, - textdomain, - charset=env.config.source_encoding) + catalog, has_catalog = init_locale(dirs, env.config.language, textdomain) if not has_catalog: return From 2038932b832cf959cba4534158856b8e4d708adb Mon Sep 17 00:00:00 2001 From: barbara-sfx Date: Fri, 6 May 2016 09:13:48 -0700 Subject: [PATCH 03/31] Add info on inline web link syntax --- doc/rest.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/rest.rst b/doc/rest.rst index 9fca31b6e..293b2ea02 100644 --- a/doc/rest.rst +++ b/doc/rest.rst @@ -196,6 +196,8 @@ Use ```Link text `_`` for inline web links. If the link text should be the web address, you don't need special markup at all, the parser finds links and mail addresses in ordinary text. +.. important:: There must be a space between the link text and the opening \< for the URL. + You can also separate the link and the target definition (:duref:`ref `), like this:: From 696237c50e5c3175023ece434fb69cf28107413c Mon Sep 17 00:00:00 2001 From: Dmitry Shachnev Date: Sun, 8 May 2016 12:10:40 +0300 Subject: [PATCH 04/31] Adapt to typing private API change in Python 3.5.2 Fixes #2519. --- sphinx/ext/autodoc.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py index 7dc89d39a..e32511afa 100644 --- a/sphinx/ext/autodoc.py +++ b/sphinx/ext/autodoc.py @@ -269,9 +269,17 @@ def format_annotation(annotation): if isinstance(annotation, typing.TypeVar): return annotation.__name__ elif hasattr(typing, 'GenericMeta') and \ - isinstance(annotation, typing.GenericMeta) and \ - hasattr(annotation, '__parameters__'): - params = annotation.__parameters__ + isinstance(annotation, typing.GenericMeta): + # In Python 3.5.2+, all arguments are stored in __args__, + # whereas __parameters__ only contains generic parameters. + # + # Prior to Python 3.5.2, __args__ is not available, and all + # arguments are in __parameters__. + params = None + if hasattr(annotation, '__args__'): + params = annotation.__args__ + elif hasattr(annotation, '__parameters__'): + params = annotation.__parameters__ if params is not None: param_str = ', '.join(format_annotation(p) for p in params) return '%s[%s]' % (qualified_name, param_str) From b412a9c8865443dfa363510ac881e217b67b2f5f Mon Sep 17 00:00:00 2001 From: Dmitry Shachnev Date: Sun, 8 May 2016 12:13:55 +0300 Subject: [PATCH 05/31] Add Python 3.5-dev to Travis configuration --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 7549a579d..c468867ae 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,6 +9,7 @@ python: - "3.3" - "3.4" - "3.5" + - "3.5-dev" - "pypy" env: global: From 12b83372ac9316e8cbe86e7fed889296a4cc29ee Mon Sep 17 00:00:00 2001 From: Jakob Lykke Andersen Date: Fri, 13 May 2016 09:22:46 +0900 Subject: [PATCH 06/31] C++, fix crash reported in #2536. --- CHANGES | 1 + sphinx/domains/cpp.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index ab2bd65a1..d4e5f952b 100644 --- a/CHANGES +++ b/CHANGES @@ -53,6 +53,7 @@ Bugs fixed * The caption of figure is always put on center even if ``:align:`` was specified * #2526: LaTeX writer crashes if the section having only images * #2522: Sphinx touches mo files under installed directory that caused permission error. +* #2536: C++, fix crash when an immediately nested scope has the same name as the current scope. Release 1.4.1 (released Apr 12, 2016) diff --git a/sphinx/domains/cpp.py b/sphinx/domains/cpp.py index 6306ac901..2d28a71fb 100644 --- a/sphinx/domains/cpp.py +++ b/sphinx/domains/cpp.py @@ -2587,7 +2587,7 @@ class Symbol(object): s = s._find_named_symbol(identifier, templateParams, templateArgs, operator, templateShorthand=False, - matchSelf=True) + matchSelf=False) if not s: return None return s From 74b15cc64c83f788cb58a95b120b9b223d5ed5cf Mon Sep 17 00:00:00 2001 From: Jakub Wilk Date: Sat, 14 May 2016 12:28:40 +0200 Subject: [PATCH 07/31] Fix format string in assert_in()/assert_not_in() --- tests/util.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/util.py b/tests/util.py index 454cc0d9c..b3f5e01d9 100644 --- a/tests/util.py +++ b/tests/util.py @@ -109,10 +109,10 @@ try: except ImportError: def assert_in(x, thing, msg=''): if x not in thing: - assert False, msg or '%r is not in %r%r' % (x, thing) + assert False, msg or '%r is not in %r' % (x, thing) def assert_not_in(x, thing, msg=''): if x in thing: - assert False, msg or '%r is in %r%r' % (x, thing) + assert False, msg or '%r is in %r' % (x, thing) def skip_if(condition, msg=None): From 3fb644b929a5ecb1071b08550db138709964e88d Mon Sep 17 00:00:00 2001 From: jfbu Date: Mon, 16 May 2016 20:44:09 +0200 Subject: [PATCH 08/31] Extend pdflatex config in sphinx.sty to subparagraphs This addresses #2547. As the two Sphinx classes set secnumdepth to 2 by default, the label for paragraphs with the numbering is still skipped by default. But if user increases secnumdepth to 4 or higher it will show, contrarily to earlier situation. Also formerly paragraph headings used \small, which looks wrong because the body text did not use \small. And subparagraphs were not at all configured with \titleformat, thus did not use same font as other headings. --- 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 1ff808314..9a81d90be 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -454,8 +454,12 @@ {\py@TitleColor\thesubsection}{0.5em}{\py@TitleColor}{\py@NormalColor} \titleformat{\subsubsection}{\py@HeaderFamily}% {\py@TitleColor\thesubsubsection}{0.5em}{\py@TitleColor}{\py@NormalColor} -\titleformat{\paragraph}{\small\py@HeaderFamily}% - {\py@TitleColor}{0em}{\py@TitleColor}{\py@NormalColor} +% By default paragraphs (and subsubsections) will not be numbered because +% sphinxmanual.cls and sphinxhowto.cls set secnumdepth to 2 +\titleformat{\paragraph}{\py@HeaderFamily}% + {\py@TitleColor\theparagraph}{0.5em}{\py@TitleColor}{\py@NormalColor} +\titleformat{\subparagraph}{\py@HeaderFamily}% + {\py@TitleColor\thesubparagraph}{0.5em}{\py@TitleColor}{\py@NormalColor} % {fulllineitems} is the main environment for object descriptions. % From 65638c12b83ba9995339dc4509c8c3d2a334aac8 Mon Sep 17 00:00:00 2001 From: Dmitry Shachnev Date: Tue, 17 May 2016 15:43:59 +0300 Subject: [PATCH 09/31] Make our custom compile_catalog command work with Babel 2.3 In new Babel versions, self.domain is a list rather than a string. --- setup.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/setup.py b/setup.py index 8c10f1f63..a35c7690b 100644 --- a/setup.py +++ b/setup.py @@ -97,6 +97,13 @@ else: def run(self): compile_catalog.run(self) + if isinstance(self.domain, list): + for domain in self.domain: + self._run_domain_js(domain) + else: + self._run_domain_js(self.domain) + + def _run_domain_js(self, domain): po_files = [] js_files = [] @@ -105,20 +112,20 @@ else: po_files.append((self.locale, os.path.join(self.directory, self.locale, 'LC_MESSAGES', - self.domain + '.po'))) + domain + '.po'))) js_files.append(os.path.join(self.directory, self.locale, 'LC_MESSAGES', - self.domain + '.js')) + domain + '.js')) else: for locale in os.listdir(self.directory): po_file = os.path.join(self.directory, locale, 'LC_MESSAGES', - self.domain + '.po') + domain + '.po') if os.path.exists(po_file): po_files.append((locale, po_file)) js_files.append(os.path.join(self.directory, locale, 'LC_MESSAGES', - self.domain + '.js')) + domain + '.js')) else: po_files.append((self.locale, self.input_file)) if self.output_file: @@ -126,7 +133,7 @@ else: else: js_files.append(os.path.join(self.directory, self.locale, 'LC_MESSAGES', - self.domain + '.js')) + domain + '.js')) for js_file, (locale, po_file) in zip(js_files, po_files): infile = open(po_file, 'r') From a441ac98a1fcec7c438eef2e13d1ac3321933ea9 Mon Sep 17 00:00:00 2001 From: Jakob Lykke Andersen Date: Wed, 18 May 2016 09:38:27 +0900 Subject: [PATCH 10/31] Fix crash on any-references with unicode. Fixes sphinx-doc/sphinx#2555. --- CHANGES | 1 + sphinx/domains/cpp.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index d4e5f952b..f5eb1e2b3 100644 --- a/CHANGES +++ b/CHANGES @@ -54,6 +54,7 @@ Bugs fixed * #2526: LaTeX writer crashes if the section having only images * #2522: Sphinx touches mo files under installed directory that caused permission error. * #2536: C++, fix crash when an immediately nested scope has the same name as the current scope. +* #2555: Fix crash on any-references with unicode. Release 1.4.1 (released Apr 12, 2016) diff --git a/sphinx/domains/cpp.py b/sphinx/domains/cpp.py index 2d28a71fb..7d41d6570 100644 --- a/sphinx/domains/cpp.py +++ b/sphinx/domains/cpp.py @@ -4100,7 +4100,7 @@ class CPPDomain(Domain): parser.assert_end() except DefinitionError as e: warner.warn('Unparseable C++ cross-reference: %r\n%s' - % (target, str(e.description))) + % (target, text_type(e.description))) return None, None parentKey = node.get("cpp:parent_key", None) rootSymbol = self.data['root_symbol'] From 0f0d5058185ce252961ce672d3697655fbde691c Mon Sep 17 00:00:00 2001 From: jfbu Date: Sat, 14 May 2016 10:49:02 +0200 Subject: [PATCH 11/31] Fix #2517: wrong bookmark encoding in PDF if using LuaLaTeX --- sphinx/texinputs/sphinx.sty | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index 1ff808314..dabb44cba 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -699,7 +699,10 @@ % to make pdf with correct encoded bookmarks in Japanese % this should precede the hyperref package -\ifx\kanjiskip\undefined\else +\ifx\kanjiskip\undefined +% for non-Japanese: make sure bookmarks are ok also with lualatex + \PassOptionsToPackage{pdfencoding=unicode}{hyperref} +\else \usepackage{atbegshi} \ifx\ucs\undefined \ifnum 42146=\euc"A4A2 From 66bf27584bece1430ea7d722d563d8f2828845b5 Mon Sep 17 00:00:00 2001 From: jfbu Date: Wed, 18 May 2016 08:13:24 +0200 Subject: [PATCH 12/31] Update CHANGES for PR#2542 --- CHANGES | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES b/CHANGES index f5eb1e2b3..86d440f14 100644 --- a/CHANGES +++ b/CHANGES @@ -55,6 +55,7 @@ Bugs fixed * #2522: Sphinx touches mo files under installed directory that caused permission error. * #2536: C++, fix crash when an immediately nested scope has the same name as the current scope. * #2555: Fix crash on any-references with unicode. +* #2517: wrong bookmark encoding in PDF if using LuaLaTeX Release 1.4.1 (released Apr 12, 2016) From 53c875223b19d15bd23be5b9851b7afabdc67cf4 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sat, 21 May 2016 00:35:48 +0900 Subject: [PATCH 13/31] Fix #2512: generated Makefile causes BSD make crashed if sphinx-build not found --- CHANGES | 1 + sphinx/quickstart.py | 20 -------------------- 2 files changed, 1 insertion(+), 20 deletions(-) diff --git a/CHANGES b/CHANGES index 86d440f14..d4e807ba0 100644 --- a/CHANGES +++ b/CHANGES @@ -56,6 +56,7 @@ Bugs fixed * #2536: C++, fix crash when an immediately nested scope has the same name as the current scope. * #2555: Fix crash on any-references with unicode. * #2517: wrong bookmark encoding in PDF if using LuaLaTeX +* #2512: generated Makefile causes BSD make crashed if sphinx-build not found Release 1.4.1 (released Apr 12, 2016) diff --git a/sphinx/quickstart.py b/sphinx/quickstart.py index 9511eda11..1f14c0d09 100644 --- a/sphinx/quickstart.py +++ b/sphinx/quickstart.py @@ -534,16 +534,6 @@ SPHINXBUILD = sphinx-build PAPER = BUILDDIR = %(rbuilddir)s -# User-friendly check for sphinx-build -ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) -\t$(error \ -The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx \ -installed, then set the SPHINXBUILD environment variable to point \ -to the full path of the '$(SPHINXBUILD)' executable. Alternatively you \ -can add the directory with the executable to your PATH. \ -If you don\\'t have Sphinx installed, grab it from http://sphinx-doc.org/) -endif - # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter @@ -1061,16 +1051,6 @@ SPHINXPROJ = %(project_fn)s SOURCEDIR = %(rsrcdir)s BUILDDIR = %(rbuilddir)s -# User-friendly check for sphinx-build. -ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) -$(error \ -The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx \ -installed, then set the SPHINXBUILD environment variable to point \ -to the full path of the '$(SPHINXBUILD)' executable. Alternatively you \ -can add the directory with the executable to your PATH. \ -If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) -endif - # Has to be explicit, otherwise we don't get "make" without targets right. help: \t@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) From 8ca9d551198203fa82cc97f321124099b99e71b0 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sat, 21 May 2016 01:20:49 +0900 Subject: [PATCH 14/31] Fix issue number --- CHANGES | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index d4e807ba0..e54f42414 100644 --- a/CHANGES +++ b/CHANGES @@ -56,7 +56,7 @@ Bugs fixed * #2536: C++, fix crash when an immediately nested scope has the same name as the current scope. * #2555: Fix crash on any-references with unicode. * #2517: wrong bookmark encoding in PDF if using LuaLaTeX -* #2512: generated Makefile causes BSD make crashed if sphinx-build not found +* #2521: generated Makefile causes BSD make crashed if sphinx-build not found Release 1.4.1 (released Apr 12, 2016) From 20b3da5cf6aa4917301b2db2259bc78c3e20a122 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sat, 21 May 2016 11:50:13 +0900 Subject: [PATCH 15/31] Fix #2470: ``typing`` backport package causes autodoc errors with python 2.7 --- CHANGES | 1 + sphinx/ext/autodoc.py | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index e54f42414..7064b391f 100644 --- a/CHANGES +++ b/CHANGES @@ -57,6 +57,7 @@ Bugs fixed * #2555: Fix crash on any-references with unicode. * #2517: wrong bookmark encoding in PDF if using LuaLaTeX * #2521: generated Makefile causes BSD make crashed if sphinx-build not found +* #2470: ``typing`` backport package causes autodoc errors with python 2.7 Release 1.4.1 (released Apr 12, 2016) diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py index e32511afa..6ae0966fb 100644 --- a/sphinx/ext/autodoc.py +++ b/sphinx/ext/autodoc.py @@ -35,7 +35,10 @@ from sphinx.util.inspect import getargspec, isdescriptor, safe_getmembers, \ from sphinx.util.docstrings import prepare_docstring try: - import typing + if sys.version_info >= (3,): + import typing + else: + typing = None except ImportError: typing = None From 9546fdaf5edbff6b42a7ab399f652228852a5f23 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Mon, 23 May 2016 12:11:10 +0900 Subject: [PATCH 16/31] Fix ``sphinx.ext.intersphinx`` crashes if non-string value is used for key of `intersphinx_mapping` --- CHANGES | 1 + sphinx/ext/intersphinx.py | 7 +++++-- tests/test_ext_intersphinx.py | 5 +++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index 7064b391f..e3f058095 100644 --- a/CHANGES +++ b/CHANGES @@ -58,6 +58,7 @@ Bugs fixed * #2517: wrong bookmark encoding in PDF if using LuaLaTeX * #2521: generated Makefile causes BSD make crashed if sphinx-build not found * #2470: ``typing`` backport package causes autodoc errors with python 2.7 +* ``sphinx.ext.intersphinx`` crashes if non-string value is used for key of `intersphinx_mapping` Release 1.4.1 (released Apr 12, 2016) diff --git a/sphinx/ext/intersphinx.py b/sphinx/ext/intersphinx.py index b755253c7..844826e5f 100644 --- a/sphinx/ext/intersphinx.py +++ b/sphinx/ext/intersphinx.py @@ -33,7 +33,7 @@ import posixpath from os import path import re -from six import iteritems +from six import iteritems, string_types from six.moves.urllib import parse, request from docutils import nodes from docutils.utils import relative_path @@ -271,7 +271,10 @@ def load_mappings(app): if isinstance(value, tuple): # new format name, (uri, inv) = key, value - if not name.isalnum(): + if not isinstance(name, string_types): + app.warn('intersphinx identifier %r is not string. Ignored' % name) + continue + elif not name.isalnum(): app.warn('intersphinx identifier %r is not alphanumeric' % name) else: # old format, no name diff --git a/tests/test_ext_intersphinx.py b/tests/test_ext_intersphinx.py index decc985fe..099debc1a 100644 --- a/tests/test_ext_intersphinx.py +++ b/tests/test_ext_intersphinx.py @@ -170,13 +170,14 @@ def test_load_mappings_warnings(tempdir, app, status, warning): 'py3k': ('https://docs.python.org/py3k/', inv_file), 'repoze.workflow': ('http://docs.repoze.org/workflow/', inv_file), 'django-taggit': ('http://django-taggit.readthedocs.org/en/latest/', - inv_file) + inv_file), + 12345: ('http://www.sphinx-doc.org/en/stable/', inv_file), } app.config.intersphinx_cache_limit = 0 # load the inventory and check if it's done correctly load_mappings(app) - assert warning.getvalue().count('\n') == 2 + assert warning.getvalue().count('\n') == 3 class TestStripBasicAuth(unittest.TestCase): From 37882b9c778308cddca2e26be73b535df69f05f8 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Mon, 23 May 2016 12:14:56 +0900 Subject: [PATCH 17/31] Fix #2518: `intersphinx_mapping` disallows non alphanumeric keys --- CHANGES | 1 + sphinx/ext/intersphinx.py | 2 -- tests/test_ext_intersphinx.py | 4 ++-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index e3f058095..6485b5037 100644 --- a/CHANGES +++ b/CHANGES @@ -59,6 +59,7 @@ Bugs fixed * #2521: generated Makefile causes BSD make crashed if sphinx-build not found * #2470: ``typing`` backport package causes autodoc errors with python 2.7 * ``sphinx.ext.intersphinx`` crashes if non-string value is used for key of `intersphinx_mapping` +* #2518: `intersphinx_mapping` disallows non alphanumeric keys Release 1.4.1 (released Apr 12, 2016) diff --git a/sphinx/ext/intersphinx.py b/sphinx/ext/intersphinx.py index 844826e5f..8e6573e8a 100644 --- a/sphinx/ext/intersphinx.py +++ b/sphinx/ext/intersphinx.py @@ -274,8 +274,6 @@ def load_mappings(app): if not isinstance(name, string_types): app.warn('intersphinx identifier %r is not string. Ignored' % name) continue - elif not name.isalnum(): - app.warn('intersphinx identifier %r is not alphanumeric' % name) else: # old format, no name name, uri, inv = None, key, value diff --git a/tests/test_ext_intersphinx.py b/tests/test_ext_intersphinx.py index 099debc1a..13b5d1aff 100644 --- a/tests/test_ext_intersphinx.py +++ b/tests/test_ext_intersphinx.py @@ -161,7 +161,7 @@ def test_missing_reference(tempdir, app, status, warning): def test_load_mappings_warnings(tempdir, app, status, warning): """ load_mappings issues a warning if new-style mapping - identifiers are not alphanumeric + identifiers are not string """ inv_file = tempdir / 'inventory' inv_file.write_bytes(inventory_v2) @@ -177,7 +177,7 @@ def test_load_mappings_warnings(tempdir, app, status, warning): app.config.intersphinx_cache_limit = 0 # load the inventory and check if it's done correctly load_mappings(app) - assert warning.getvalue().count('\n') == 3 + assert warning.getvalue().count('\n') == 1 class TestStripBasicAuth(unittest.TestCase): From b4df9180719532ac692962513b03188d7ed908b8 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Tue, 24 May 2016 11:27:20 +0900 Subject: [PATCH 18/31] Fix #2558: unpack error on devhelp builder --- CHANGES | 1 + sphinx/builders/devhelp.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 6485b5037..7456fa5c2 100644 --- a/CHANGES +++ b/CHANGES @@ -60,6 +60,7 @@ Bugs fixed * #2470: ``typing`` backport package causes autodoc errors with python 2.7 * ``sphinx.ext.intersphinx`` crashes if non-string value is used for key of `intersphinx_mapping` * #2518: `intersphinx_mapping` disallows non alphanumeric keys +* #2558: unpack error on devhelp builder Release 1.4.1 (released Apr 12, 2016) diff --git a/sphinx/builders/devhelp.py b/sphinx/builders/devhelp.py index 5ebaf2dc5..62e2c9843 100644 --- a/sphinx/builders/devhelp.py +++ b/sphinx/builders/devhelp.py @@ -123,7 +123,7 @@ class DevhelpBuilder(StandaloneHTMLBuilder): subitem[1], []) for (key, group) in index: - for title, (refs, subitems) in group: + for title, (refs, subitems, key) in group: write_index(title, refs, subitems) # Dump the XML file From 5e6dbe10884bc60babbfd58f7fc936c581e360fa Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Tue, 24 May 2016 11:39:20 +0900 Subject: [PATCH 19/31] Fix #2561: Info builder crashes when a footnote contains a link --- CHANGES | 1 + sphinx/writers/texinfo.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 7456fa5c2..e4495b349 100644 --- a/CHANGES +++ b/CHANGES @@ -61,6 +61,7 @@ Bugs fixed * ``sphinx.ext.intersphinx`` crashes if non-string value is used for key of `intersphinx_mapping` * #2518: `intersphinx_mapping` disallows non alphanumeric keys * #2558: unpack error on devhelp builder +* #2561: Info builder crashes when a footnote contains a link Release 1.4.1 (released Apr 12, 2016) diff --git a/sphinx/writers/texinfo.py b/sphinx/writers/texinfo.py index 978d56c0b..6ec077fd7 100644 --- a/sphinx/writers/texinfo.py +++ b/sphinx/writers/texinfo.py @@ -650,7 +650,7 @@ class TexinfoTranslator(nodes.NodeVisitor): self.next_section_ids.add(node['refid']) self.next_section_ids.update(node['ids']) return - except IndexError: + except (IndexError, AttributeError): pass if 'refuri' in node: return From 881455ca4bfcfc39225a6256493880d4c96131bc Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Tue, 24 May 2016 11:42:19 +0900 Subject: [PATCH 20/31] Fix docstring; structure of index node has changed since Sphinx-1.4 --- sphinx/addnodes.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sphinx/addnodes.py b/sphinx/addnodes.py index 026770f32..311aa232b 100644 --- a/sphinx/addnodes.py +++ b/sphinx/addnodes.py @@ -116,8 +116,8 @@ class index(nodes.Invisible, nodes.Inline, nodes.TextElement): """Node for index entries. This node is created by the ``index`` directive and has one attribute, - ``entries``. Its value is a list of 4-tuples of ``(entrytype, entryname, - target, ignored)``. + ``entries``. Its value is a list of 5-tuples of ``(entrytype, entryname, + target, ignored, key)``. *entrytype* is one of "single", "pair", "double", "triple". """ From 4c2d679815b13b81f9f045b92ce303417b21ab9a Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Tue, 24 May 2016 23:47:06 +0900 Subject: [PATCH 21/31] Fix #2565: The descriptions of objects generated by ``sphinx.ext.autosummary`` overflow lines at LaTeX writer --- CHANGES | 1 + sphinx/ext/autosummary/__init__.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index e4495b349..180deb891 100644 --- a/CHANGES +++ b/CHANGES @@ -62,6 +62,7 @@ Bugs fixed * #2518: `intersphinx_mapping` disallows non alphanumeric keys * #2558: unpack error on devhelp builder * #2561: Info builder crashes when a footnote contains a link +* #2565: The descriptions of objects generated by ``sphinx.ext.autosummary`` overflow lines at LaTeX writer Release 1.4.1 (released Apr 12, 2016) diff --git a/sphinx/ext/autosummary/__init__.py b/sphinx/ext/autosummary/__init__.py index 9ef48ca88..3635ad07f 100644 --- a/sphinx/ext/autosummary/__init__.py +++ b/sphinx/ext/autosummary/__init__.py @@ -337,7 +337,7 @@ class Autosummary(Directive): *items* is a list produced by :meth:`get_items`. """ table_spec = addnodes.tabular_col_spec() - table_spec['spec'] = 'll' + table_spec['spec'] = 'p{0.5\linewidth}p{0.5\linewidth}' table = autosummary_table('') real_table = nodes.table('', classes=['longtable']) From 2484efc855b72e1a4c49190c502ce54e4f1ccb61 Mon Sep 17 00:00:00 2001 From: jfbu Date: Tue, 24 May 2016 22:35:36 +0200 Subject: [PATCH 22/31] Update CHANGES for PR #2551 --- CHANGES | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES b/CHANGES index 180deb891..436a8c435 100644 --- a/CHANGES +++ b/CHANGES @@ -63,6 +63,7 @@ Bugs fixed * #2558: unpack error on devhelp builder * #2561: Info builder crashes when a footnote contains a link * #2565: The descriptions of objects generated by ``sphinx.ext.autosummary`` overflow lines at LaTeX writer +* Extend pdflatex config in sphinx.sty to subparagraphs (ref: #2551) Release 1.4.1 (released Apr 12, 2016) From cf2ff7594f27a896d6b07d3d62f8ee710a67ab26 Mon Sep 17 00:00:00 2001 From: jfbu Date: Tue, 24 May 2016 22:52:09 +0200 Subject: [PATCH 23/31] Fix formatting typo in CHANGES --- CHANGES | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 436a8c435..ed6607900 100644 --- a/CHANGES +++ b/CHANGES @@ -23,7 +23,7 @@ Features added code lines themselves) obey the indentation in lists or quoted blocks. * #2343: the long source lines in code-blocks are wrapped (without modifying - the line numbering) in LaTeX output (ref #1534, #2304). + the line numbering) in LaTeX output (ref #1534, #2304). Bugs fixed ---------- From 27f03cecd5b193c9f0d36ca21c018d324488c746 Mon Sep 17 00:00:00 2001 From: Julien Schueller Date: Wed, 25 May 2016 14:20:21 +0200 Subject: [PATCH 24/31] Fix MathExtError arguments in imgmath It's constructor is: ```class MathExtError(SphinxError): def __init__(self, msg, stderr=None, stdout=None):``` --- sphinx/ext/imgmath.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sphinx/ext/imgmath.py b/sphinx/ext/imgmath.py index 755e417fe..f7a48545b 100644 --- a/sphinx/ext/imgmath.py +++ b/sphinx/ext/imgmath.py @@ -185,7 +185,7 @@ def render_math(self, math): stdout, stderr = p.communicate() if p.returncode != 0: - raise MathExtError('%s exited with error', + raise MathExtError('%s exited with error' % image_translator, stderr, stdout) depth = None if use_preview and image_format == 'png': # depth is only useful for png From 89360dd3f17f409a69a2999cb98f008c7ee74b37 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Wed, 25 May 2016 12:06:49 +0900 Subject: [PATCH 25/31] Add testcase for rst_prolog and rst_epilog --- tests/roots/test-prolog/conf.py | 3 +++ tests/roots/test-prolog/index.rst | 2 ++ tests/test_markup.py | 22 +++++++++++++++++++++- 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 tests/roots/test-prolog/conf.py create mode 100644 tests/roots/test-prolog/index.rst diff --git a/tests/roots/test-prolog/conf.py b/tests/roots/test-prolog/conf.py new file mode 100644 index 000000000..a3a55897f --- /dev/null +++ b/tests/roots/test-prolog/conf.py @@ -0,0 +1,3 @@ +master_doc = 'index' +rst_prolog = '*Hello world*.\n\n' +rst_epilog = '\n\n*Good-bye world*.' diff --git a/tests/roots/test-prolog/index.rst b/tests/roots/test-prolog/index.rst new file mode 100644 index 000000000..536ac9d50 --- /dev/null +++ b/tests/roots/test-prolog/index.rst @@ -0,0 +1,2 @@ +prolog and epilog +================= diff --git a/tests/test_markup.py b/tests/test_markup.py index 38dc243fa..f5acbd14e 100644 --- a/tests/test_markup.py +++ b/tests/test_markup.py @@ -10,6 +10,7 @@ """ import re +import pickle from docutils import frontend, utils, nodes from docutils.parsers import rst @@ -18,7 +19,7 @@ from sphinx.util import texescape from sphinx.writers.html import HTMLWriter, SmartyPantsHTMLTranslator from sphinx.writers.latex import LaTeXWriter, LaTeXTranslator -from util import TestApp +from util import TestApp, with_app, assert_node app = settings = parser = None @@ -142,3 +143,22 @@ def test_latex_escaping(): # in URIs yield (verify_re, u'`test `_', None, r'\\href{http://example.com/~me/}{test}.*') + + +@with_app(buildername='dummy', testroot='prolog') +def test_rst_prolog(app, status, warning): + app.builder.build_all() + doctree = pickle.loads((app.doctreedir / 'index.doctree').bytes()) + + # rst_prolog + assert_node(doctree[0], nodes.paragraph) + assert_node(doctree[0][0], nodes.emphasis) + assert_node(doctree[0][0][0], nodes.Text) + assert doctree[0][0][0] == 'Hello world' + + # rst_epilog + assert_node(doctree[-1], nodes.section) + assert_node(doctree[-1][-1], nodes.paragraph) + assert_node(doctree[-1][-1][0], nodes.emphasis) + assert_node(doctree[-1][-1][0][0], nodes.Text) + assert doctree[-1][-1][0][0] == 'Good-bye world' From 9cd5ba994cdf539acda28cd91bee54589e068991 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Wed, 25 May 2016 19:58:15 +0900 Subject: [PATCH 26/31] Fix #2445: `rst_prolog` and `rst_epilog` affect to non reST sources --- CHANGES | 1 + sphinx/io.py | 20 ++++++++++++--- tests/roots/test-prolog/conf.py | 9 +++++++ tests/roots/test-prolog/index.rst | 5 ++++ tests/roots/test-prolog/markdown.md | 3 +++ .../test-prolog/prolog_markdown_parser.py | 12 +++++++++ tests/roots/test-prolog/restructuredtext.rst | 4 +++ tests/test_markup.py | 25 +++++++++++-------- 8 files changed, 65 insertions(+), 14 deletions(-) create mode 100644 tests/roots/test-prolog/markdown.md create mode 100644 tests/roots/test-prolog/prolog_markdown_parser.py create mode 100644 tests/roots/test-prolog/restructuredtext.rst diff --git a/CHANGES b/CHANGES index ed6607900..ca92e993b 100644 --- a/CHANGES +++ b/CHANGES @@ -64,6 +64,7 @@ Bugs fixed * #2561: Info builder crashes when a footnote contains a link * #2565: The descriptions of objects generated by ``sphinx.ext.autosummary`` overflow lines at LaTeX writer * Extend pdflatex config in sphinx.sty to subparagraphs (ref: #2551) +* #2445: `rst_prolog` and `rst_epilog` affect to non reST sources Release 1.4.1 (released Apr 12, 2016) diff --git a/sphinx/io.py b/sphinx/io.py index a186e22e6..8d9970e80 100644 --- a/sphinx/io.py +++ b/sphinx/io.py @@ -112,14 +112,26 @@ class SphinxFileInput(FileInput): return data.decode(self.encoding, 'sphinx') # py2: decoding def read(self): + def get_parser_type(docname): + path = self.env.doc2path(docname) + for suffix in self.env.config.source_parsers: + if 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') + return parser_class.supported + else: + return ('restructuredtext',) + data = FileInput.read(self) if self.app: arg = [data] self.app.emit('source-read', self.env.docname, arg) data = arg[0] docinfo, data = split_docinfo(data) - if self.env.config.rst_epilog: - data = data + '\n' + self.env.config.rst_epilog + '\n' - if self.env.config.rst_prolog: - data = self.env.config.rst_prolog + '\n' + data + if 'restructuredtext' in get_parser_type(self.env.docname): + if self.env.config.rst_epilog: + data = data + '\n' + self.env.config.rst_epilog + '\n' + if self.env.config.rst_prolog: + data = self.env.config.rst_prolog + '\n' + data return docinfo + data diff --git a/tests/roots/test-prolog/conf.py b/tests/roots/test-prolog/conf.py index a3a55897f..a52ca878a 100644 --- a/tests/roots/test-prolog/conf.py +++ b/tests/roots/test-prolog/conf.py @@ -1,3 +1,12 @@ +# -*- coding: utf-8 -*- + +import os +import sys +sys.path.insert(0, os.path.abspath('.')) + + master_doc = 'index' +extensions = ['prolog_markdown_parser'] + rst_prolog = '*Hello world*.\n\n' rst_epilog = '\n\n*Good-bye world*.' diff --git a/tests/roots/test-prolog/index.rst b/tests/roots/test-prolog/index.rst index 536ac9d50..2178d734d 100644 --- a/tests/roots/test-prolog/index.rst +++ b/tests/roots/test-prolog/index.rst @@ -1,2 +1,7 @@ prolog and epilog ================= + +.. toctree:: + + restructuredtext + markdown diff --git a/tests/roots/test-prolog/markdown.md b/tests/roots/test-prolog/markdown.md new file mode 100644 index 000000000..e400720af --- /dev/null +++ b/tests/roots/test-prolog/markdown.md @@ -0,0 +1,3 @@ +# sample document + +This is a sample document in markdown diff --git a/tests/roots/test-prolog/prolog_markdown_parser.py b/tests/roots/test-prolog/prolog_markdown_parser.py new file mode 100644 index 000000000..f28c37b4e --- /dev/null +++ b/tests/roots/test-prolog/prolog_markdown_parser.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- + +from docutils.parsers import Parser + + +class DummyMarkdownParser(Parser): + def parse(self, inputstring, document): + document.rawsource = inputstring + + +def setup(app): + app.add_source_parser('.md', DummyMarkdownParser) diff --git a/tests/roots/test-prolog/restructuredtext.rst b/tests/roots/test-prolog/restructuredtext.rst new file mode 100644 index 000000000..f1fafb687 --- /dev/null +++ b/tests/roots/test-prolog/restructuredtext.rst @@ -0,0 +1,4 @@ +sample document +=============== + +This is a sample document in reST diff --git a/tests/test_markup.py b/tests/test_markup.py index f5acbd14e..d12138692 100644 --- a/tests/test_markup.py +++ b/tests/test_markup.py @@ -148,17 +148,22 @@ def test_latex_escaping(): @with_app(buildername='dummy', testroot='prolog') def test_rst_prolog(app, status, warning): app.builder.build_all() - doctree = pickle.loads((app.doctreedir / 'index.doctree').bytes()) + rst = pickle.loads((app.doctreedir / 'restructuredtext.doctree').bytes()) + md = pickle.loads((app.doctreedir / 'markdown.doctree').bytes()) # rst_prolog - assert_node(doctree[0], nodes.paragraph) - assert_node(doctree[0][0], nodes.emphasis) - assert_node(doctree[0][0][0], nodes.Text) - assert doctree[0][0][0] == 'Hello world' + assert_node(rst[0], nodes.paragraph) + assert_node(rst[0][0], nodes.emphasis) + assert_node(rst[0][0][0], nodes.Text) + assert rst[0][0][0] == 'Hello world' # rst_epilog - assert_node(doctree[-1], nodes.section) - assert_node(doctree[-1][-1], nodes.paragraph) - assert_node(doctree[-1][-1][0], nodes.emphasis) - assert_node(doctree[-1][-1][0][0], nodes.Text) - assert doctree[-1][-1][0][0] == 'Good-bye world' + assert_node(rst[-1], nodes.section) + assert_node(rst[-1][-1], nodes.paragraph) + assert_node(rst[-1][-1][0], nodes.emphasis) + assert_node(rst[-1][-1][0][0], nodes.Text) + assert rst[-1][-1][0][0] == 'Good-bye world' + + # rst_prolog & rst_epilog on exlucding reST parser + assert not md.rawsource.startswith('*Hello world*.') + assert not md.rawsource.endswith('*Good-bye world*.\n') From 03af1ca4dda22841bc616d134c3a101aa97c9a42 Mon Sep 17 00:00:00 2001 From: shimizukawa Date: Wed, 25 May 2016 22:59:03 +0900 Subject: [PATCH 27/31] add docstring to write more detail of 'key' of index node --- sphinx/addnodes.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sphinx/addnodes.py b/sphinx/addnodes.py index 311aa232b..8c4e39e75 100644 --- a/sphinx/addnodes.py +++ b/sphinx/addnodes.py @@ -120,6 +120,10 @@ class index(nodes.Invisible, nodes.Inline, nodes.TextElement): target, ignored, key)``. *entrytype* is one of "single", "pair", "double", "triple". + + *key* is categolziation characters (usually it is single character) for + general index page. For the detail of this, please see also: + :rst:directive:`glossary` and issue #2320. """ From 94f2dc2843db9efbdbcfcef44f49cbd1bd7098cd Mon Sep 17 00:00:00 2001 From: Dmitry Shachnev Date: Wed, 18 May 2016 11:48:36 +0300 Subject: [PATCH 28/31] Make Xapian search work with Python 3 --- sphinx/websupport/search/xapiansearch.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sphinx/websupport/search/xapiansearch.py b/sphinx/websupport/search/xapiansearch.py index ee9b33da7..1e43dcbe9 100644 --- a/sphinx/websupport/search/xapiansearch.py +++ b/sphinx/websupport/search/xapiansearch.py @@ -11,6 +11,8 @@ import xapian +from six import string_types + from sphinx.util.osutil import ensuredir from sphinx.websupport.search import BaseSearch @@ -73,7 +75,10 @@ class XapianSearch(BaseSearch): results = [] for m in matches: - context = self.extract_context(m.document.get_data()) + data = m.document.get_data() + if not isinstance(data, string_types): + data = data.decode("utf-8") + context = self.extract_context(data) results.append((m.document.get_value(self.DOC_PATH), m.document.get_value(self.DOC_TITLE), ''.join(context))) From 6447ba772e0c636d8be3784f5c0a3f1508701fb1 Mon Sep 17 00:00:00 2001 From: Julien Schueller Date: Wed, 25 May 2016 14:39:17 +0200 Subject: [PATCH 29/31] Dont add the imgmath dvi->svg arg twice It's already added in the general case for png too a few lines below --- sphinx/ext/imgmath.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/sphinx/ext/imgmath.py b/sphinx/ext/imgmath.py index f7a48545b..f8e402be3 100644 --- a/sphinx/ext/imgmath.py +++ b/sphinx/ext/imgmath.py @@ -162,8 +162,6 @@ def render_math(self, math): image_translator_args += ['-o', outfn] # add custom ones from config value image_translator_args.extend(self.builder.config.imgmath_dvisvgm_args) - # last, the input file name - image_translator_args.append(path.join(tempdir, 'math.dvi')) else: raise MathExtError( 'imgmath_image_format must be either "png" or "svg"') From 5087228977caf5f750cb4d3af2097e68aa1c4bb5 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Thu, 26 May 2016 00:56:53 +0900 Subject: [PATCH 30/31] Update CHANGES for PR#2576 and PR#2577 --- CHANGES | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES b/CHANGES index ca92e993b..40e0b7823 100644 --- a/CHANGES +++ b/CHANGES @@ -65,6 +65,8 @@ Bugs fixed * #2565: The descriptions of objects generated by ``sphinx.ext.autosummary`` overflow lines at LaTeX writer * Extend pdflatex config in sphinx.sty to subparagraphs (ref: #2551) * #2445: `rst_prolog` and `rst_epilog` affect to non reST sources +* #2576: ``sphinx.ext.imgmath`` crashes if subprocess raises error +* #2577: ``sphinx.ext.imgmath``: Invalid argument are passed to dvisvgm Release 1.4.1 (released Apr 12, 2016) From 2c351a1261a5eb414f0e03a4aa811ee798f79819 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Thu, 26 May 2016 10:56:21 +0900 Subject: [PATCH 31/31] Update CHANGES for PR#2556 --- CHANGES | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES b/CHANGES index 40e0b7823..676bb2fda 100644 --- a/CHANGES +++ b/CHANGES @@ -67,6 +67,7 @@ Bugs fixed * #2445: `rst_prolog` and `rst_epilog` affect to non reST sources * #2576: ``sphinx.ext.imgmath`` crashes if subprocess raises error * #2577: ``sphinx.ext.imgmath``: Invalid argument are passed to dvisvgm +* #2556: Xapian search does not work with Python 3 Release 1.4.1 (released Apr 12, 2016)