Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-Sphinx for openSUSE:Factory checked in at 2021-04-19 21:05:42 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-Sphinx (Old) and /work/SRC/openSUSE:Factory/.python-Sphinx.new.12324 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-Sphinx" Mon Apr 19 21:05:42 2021 rev:74 rq:885911 version:3.5.4 Changes: -------- --- /work/SRC/openSUSE:Factory/python-Sphinx/python-Sphinx.changes 2021-04-08 21:02:24.205916055 +0200 +++ /work/SRC/openSUSE:Factory/.python-Sphinx.new.12324/python-Sphinx.changes 2021-04-19 21:05:53.876020250 +0200 @@ -1,0 +2,9 @@ +Fri Apr 16 07:02:35 UTC 2021 - Dirk M??ller <dmuel...@suse.com> + +- update to 3.5.4: + * #9071: Restrict docutils to 0.16 + * #9078: autodoc: Async staticmethods and classmethods are considered as non + async coroutine-functions with Python3.10 + * #8870, #9001, #9051: html theme: The style are not applied with docutils-0.17 + +------------------------------------------------------------------- Old: ---- Sphinx-3.5.3.tar.gz Sphinx-3.5.3.tar.gz.asc New: ---- Sphinx-3.5.4.tar.gz Sphinx-3.5.4.tar.gz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-Sphinx.spec ++++++ --- /var/tmp/diff_new_pack.SaocdF/_old 2021-04-19 21:05:54.340020944 +0200 +++ /var/tmp/diff_new_pack.SaocdF/_new 2021-04-19 21:05:54.340020944 +0200 @@ -28,7 +28,7 @@ %endif %define skip_python2 1 Name: python-Sphinx%{psuffix} -Version: 3.5.3 +Version: 3.5.4 Release: 0 Summary: Python documentation generator License: BSD-2-Clause ++++++ Sphinx-3.5.3.tar.gz -> Sphinx-3.5.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Sphinx-3.5.3/CHANGES new/Sphinx-3.5.4/CHANGES --- old/Sphinx-3.5.3/CHANGES 2021-03-20 15:03:00.000000000 +0100 +++ new/Sphinx-3.5.4/CHANGES 2021-04-11 13:26:52.000000000 +0200 @@ -1,3 +1,22 @@ +Release 3.5.4 (released Apr 11, 2021) +===================================== + +Dependencies +------------ + +* #9071: Restrict docutils to 0.16 + +Bugs fixed +---------- + +* #9078: autodoc: Async staticmethods and classmethods are considered as non + async coroutine-functions with Python3.10 +* #8870, #9001, #9051: html theme: The style are not applied with docutils-0.17 + + - toctree captions + - The content of ``sidebar`` directive + - figures + Release 3.5.3 (released Mar 20, 2021) ===================================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Sphinx-3.5.3/PKG-INFO new/Sphinx-3.5.4/PKG-INFO --- old/Sphinx-3.5.3/PKG-INFO 2021-03-20 15:03:27.273869300 +0100 +++ new/Sphinx-3.5.4/PKG-INFO 2021-04-11 13:27:26.356484200 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: Sphinx -Version: 3.5.3 +Version: 3.5.4 Summary: Python documentation generator Home-page: http://sphinx-doc.org/ Author: Georg Brandl diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Sphinx-3.5.3/Sphinx.egg-info/PKG-INFO new/Sphinx-3.5.4/Sphinx.egg-info/PKG-INFO --- old/Sphinx-3.5.3/Sphinx.egg-info/PKG-INFO 2021-03-20 15:03:25.000000000 +0100 +++ new/Sphinx-3.5.4/Sphinx.egg-info/PKG-INFO 2021-04-11 13:27:24.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: Sphinx -Version: 3.5.3 +Version: 3.5.4 Summary: Python documentation generator Home-page: http://sphinx-doc.org/ Author: Georg Brandl diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Sphinx-3.5.3/Sphinx.egg-info/requires.txt new/Sphinx-3.5.4/Sphinx.egg-info/requires.txt --- old/Sphinx-3.5.3/Sphinx.egg-info/requires.txt 2021-03-20 15:03:25.000000000 +0100 +++ new/Sphinx-3.5.4/Sphinx.egg-info/requires.txt 2021-04-11 13:27:24.000000000 +0200 @@ -6,7 +6,7 @@ sphinxcontrib-qthelp Jinja2>=2.3 Pygments>=2.0 -docutils>=0.12 +docutils<0.17,>=0.12 snowballstemmer>=1.1 babel>=1.3 alabaster<0.8,>=0.7 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Sphinx-3.5.3/setup.py new/Sphinx-3.5.4/setup.py --- old/Sphinx-3.5.3/setup.py 2021-03-20 14:54:40.000000000 +0100 +++ new/Sphinx-3.5.4/setup.py 2021-04-11 12:40:16.000000000 +0200 @@ -23,7 +23,7 @@ 'sphinxcontrib-qthelp', 'Jinja2>=2.3', 'Pygments>=2.0', - 'docutils>=0.12', + 'docutils>=0.12,<0.17', 'snowballstemmer>=1.1', 'babel>=1.3', 'alabaster>=0.7,<0.8', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Sphinx-3.5.3/sphinx/__init__.py new/Sphinx-3.5.4/sphinx/__init__.py --- old/Sphinx-3.5.3/sphinx/__init__.py 2021-03-20 15:03:00.000000000 +0100 +++ new/Sphinx-3.5.4/sphinx/__init__.py 2021-04-11 13:26:52.000000000 +0200 @@ -32,8 +32,8 @@ warnings.filterwarnings('ignore', "'U' mode is deprecated", DeprecationWarning, module='docutils.io') -__version__ = '3.5.3' -__released__ = '3.5.3' # used when Sphinx builds its own docs +__version__ = '3.5.4' +__released__ = '3.5.4' # used when Sphinx builds its own docs #: Version info for better programmatic use. #: @@ -43,7 +43,7 @@ #: #: .. versionadded:: 1.2 #: Before version 1.2, check the string ``sphinx.__version__``. -version_info = (3, 5, 3, 'final', 0) +version_info = (3, 5, 4, 'final', 0) package_dir = path.abspath(path.dirname(__file__)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Sphinx-3.5.3/sphinx/environment/adapters/toctree.py new/Sphinx-3.5.4/sphinx/environment/adapters/toctree.py --- old/Sphinx-3.5.3/sphinx/environment/adapters/toctree.py 2021-03-20 14:54:40.000000000 +0100 +++ new/Sphinx-3.5.4/sphinx/environment/adapters/toctree.py 2021-04-11 12:40:16.000000000 +0200 @@ -237,7 +237,7 @@ newnode = addnodes.compact_paragraph('', '') caption = toctree.attributes.get('caption') if caption: - caption_node = nodes.caption(caption, '', *[nodes.Text(caption)]) + caption_node = nodes.title(caption, '', *[nodes.Text(caption)]) caption_node.line = toctree.line caption_node.source = toctree.source caption_node.rawsource = toctree['rawcaption'] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Sphinx-3.5.3/sphinx/themes/agogo/static/agogo.css_t new/Sphinx-3.5.4/sphinx/themes/agogo/static/agogo.css_t --- old/Sphinx-3.5.3/sphinx/themes/agogo/static/agogo.css_t 2021-03-16 17:35:47.000000000 +0100 +++ new/Sphinx-3.5.4/sphinx/themes/agogo/static/agogo.css_t 2021-04-11 12:40:16.000000000 +0200 @@ -370,19 +370,25 @@ /* Styles copied from basic theme */ -img.align-left, .figure.align-left, object.align-left { +img.align-left, figure.align-left, .figure.align-left, object.align-left { clear: left; float: left; margin-right: 1em; } -img.align-right, .figure.align-right, object.align-right { +img.align-right, figure.align-right, .figure.align-right, object.align-right { clear: right; float: right; margin-left: 1em; } -img.align-center, .figure.align-center, object.align-center { +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { display: block; margin-left: auto; margin-right: auto; @@ -407,11 +413,13 @@ table caption span.caption-text { } -div.figure p.caption span.caption-number { +div.figure p.caption span.caption-number, +figcaption span.caption-number { font-style: italic; } -div.figure p.caption span.caption-text { +div.figure p.caption span.caption-text, +figcaption span.caption-text { } /* -- search page ----------------------------------------------------------- */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Sphinx-3.5.3/sphinx/themes/basic/static/basic.css_t new/Sphinx-3.5.4/sphinx/themes/basic/static/basic.css_t --- old/Sphinx-3.5.3/sphinx/themes/basic/static/basic.css_t 2021-03-20 14:54:40.000000000 +0100 +++ new/Sphinx-3.5.4/sphinx/themes/basic/static/basic.css_t 2021-04-11 12:40:16.000000000 +0200 @@ -277,25 +277,25 @@ font-weight: bold; } -img.align-left, .figure.align-left, object.align-left { +img.align-left, figure.align-left, .figure.align-left, object.align-left { clear: left; float: left; margin-right: 1em; } -img.align-right, .figure.align-right, object.align-right { +img.align-right, figure.align-right, .figure.align-right, object.align-right { clear: right; float: right; margin-left: 1em; } -img.align-center, .figure.align-center, object.align-center { +img.align-center, figure.align-center, .figure.align-center, object.align-center { display: block; margin-left: auto; margin-right: auto; } -img.align-default, .figure.align-default { +img.align-default, figure.align-default, .figure.align-default { display: block; margin-left: auto; margin-right: auto; @@ -319,7 +319,8 @@ /* -- sidebars -------------------------------------------------------------- */ -div.sidebar { +div.sidebar, +aside.sidebar { margin: 0 0 0.5em 1em; border: 1px solid #ddb; padding: 7px; @@ -377,12 +378,14 @@ /* -- content of sidebars/topics/admonitions -------------------------------- */ div.sidebar > :last-child, +aside.sidebar > :last-child, div.topic > :last-child, div.admonition > :last-child { margin-bottom: 0; } div.sidebar::after, +aside.sidebar::after, div.topic::after, div.admonition::after, blockquote::after { @@ -455,20 +458,22 @@ /* -- figures --------------------------------------------------------------- */ -div.figure { +div.figure, figure { margin: 0.5em; padding: 0.5em; } -div.figure p.caption { +div.figure p.caption, figcaption { padding: 0.3em; } -div.figure p.caption span.caption-number { +div.figure p.caption span.caption-number, +figcaption span.caption-number { font-style: italic; } -div.figure p.caption span.caption-text { +div.figure p.caption span.caption-text, +figcaption span.caption-text { } /* -- field list styles ----------------------------------------------------- */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Sphinx-3.5.3/sphinx/themes/epub/static/epub.css_t new/Sphinx-3.5.4/sphinx/themes/epub/static/epub.css_t --- old/Sphinx-3.5.3/sphinx/themes/epub/static/epub.css_t 2021-03-16 17:35:47.000000000 +0100 +++ new/Sphinx-3.5.4/sphinx/themes/epub/static/epub.css_t 2021-04-11 12:40:16.000000000 +0200 @@ -325,11 +325,13 @@ /* -- figures --------------------------------------------------------------- */ -div.figure p.caption span.caption-number { +div.figure p.caption span.caption-number, +figcaption span.caption-number { font-style: italic; } -div.figure p.caption span.caption-text { +div.figure p.caption span.caption-text, +figcaption span.caption-text { } /* -- field list styles ----------------------------------------------------- */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Sphinx-3.5.3/sphinx/themes/nonav/static/nonav.css new/Sphinx-3.5.4/sphinx/themes/nonav/static/nonav.css --- old/Sphinx-3.5.3/sphinx/themes/nonav/static/nonav.css 2021-03-16 17:35:47.000000000 +0100 +++ new/Sphinx-3.5.4/sphinx/themes/nonav/static/nonav.css 2021-04-11 12:40:16.000000000 +0200 @@ -314,11 +314,13 @@ /* -- figures --------------------------------------------------------------- */ -div.figure p.caption span.caption-number { +div.figure p.caption span.caption-number, +figcaption span.caption-number { font-style: italic; } -div.figure p.caption span.caption-text { +div.figure p.caption span.caption-text, +figcaption span.caption-text { } /* -- field list styles ----------------------------------------------------- */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Sphinx-3.5.3/sphinx/themes/scrolls/static/scrolls.css_t new/Sphinx-3.5.4/sphinx/themes/scrolls/static/scrolls.css_t --- old/Sphinx-3.5.3/sphinx/themes/scrolls/static/scrolls.css_t 2021-03-16 17:35:47.000000000 +0100 +++ new/Sphinx-3.5.4/sphinx/themes/scrolls/static/scrolls.css_t 2021-04-11 12:40:16.000000000 +0200 @@ -478,11 +478,13 @@ padding: 0 5px; } -div.figure p.caption span.caption-number { +div.figure p.caption span.caption-number, +figcaption span.caption-number { font-style: italic; } -div.figure p.caption span.caption-text { +div.figure p.caption span.caption-text, +figcaption span.caption-text { } /* math display */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Sphinx-3.5.3/sphinx/themes/traditional/static/traditional.css_t new/Sphinx-3.5.4/sphinx/themes/traditional/static/traditional.css_t --- old/Sphinx-3.5.3/sphinx/themes/traditional/static/traditional.css_t 2021-03-16 17:35:47.000000000 +0100 +++ new/Sphinx-3.5.4/sphinx/themes/traditional/static/traditional.css_t 2021-04-11 12:40:16.000000000 +0200 @@ -743,11 +743,13 @@ margin: 0; } -div.figure p.caption span.caption-number { +div.figure p.caption span.caption-number, +figcaption span.caption-number { font-style: italic; } -div.figure p.caption span.caption-text { +div.figure p.caption span.caption-text, +figcaption span.caption-text { } /* :::: MATH DISPLAY :::: */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Sphinx-3.5.3/sphinx/util/inspect.py new/Sphinx-3.5.4/sphinx/util/inspect.py --- old/Sphinx-3.5.3/sphinx/util/inspect.py 2021-03-20 14:54:40.000000000 +0100 +++ new/Sphinx-3.5.4/sphinx/util/inspect.py 2021-04-11 12:40:16.000000000 +0200 @@ -352,8 +352,18 @@ def iscoroutinefunction(obj: Any) -> bool: """Check if the object is coroutine-function.""" - # unwrap staticmethod, classmethod and partial (except wrappers) - obj = unwrap_all(obj, stop=lambda o: hasattr(o, '__wrapped__')) + def iswrappedcoroutine(obj: Any) -> bool: + """Check if the object is wrapped coroutine-function.""" + if isstaticmethod(obj) or isclassmethod(obj) or ispartial(obj): + # staticmethod, classmethod and partial method are not a wrapped coroutine-function + # Note: Since 3.10, staticmethod and classmethod becomes a kind of wrappers + return False + elif hasattr(obj, '__wrapped__'): + return True + else: + return False + + obj = unwrap_all(obj, stop=iswrappedcoroutine) if hasattr(obj, '__code__') and inspect.iscoroutinefunction(obj): # check obj.__code__ because iscoroutinefunction() crashes for custom method-like # objects (see https://github.com/sphinx-doc/sphinx/issues/6605) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Sphinx-3.5.3/sphinx/writers/html.py new/Sphinx-3.5.4/sphinx/writers/html.py --- old/Sphinx-3.5.3/sphinx/writers/html.py 2021-03-20 14:54:40.000000000 +0100 +++ new/Sphinx-3.5.4/sphinx/writers/html.py 2021-04-11 12:40:16.000000000 +0200 @@ -404,7 +404,12 @@ # overwritten def visit_title(self, node: Element) -> None: - super().visit_title(node) + if isinstance(node.parent, addnodes.compact_paragraph) and node.parent.get('toctree'): + self.body.append(self.starttag(node, 'p', '', CLASS='caption')) + self.body.append('<span class="caption-text">') + self.context.append('</span></p>\n') + else: + super().visit_title(node) self.add_secnumber(node) self.add_fignumber(node.parent) if isinstance(node.parent, nodes.table): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Sphinx-3.5.3/sphinx/writers/html5.py new/Sphinx-3.5.4/sphinx/writers/html5.py --- old/Sphinx-3.5.3/sphinx/writers/html5.py 2021-03-20 14:54:40.000000000 +0100 +++ new/Sphinx-3.5.4/sphinx/writers/html5.py 2021-04-11 12:40:16.000000000 +0200 @@ -355,7 +355,12 @@ # overwritten def visit_title(self, node: Element) -> None: - super().visit_title(node) + if isinstance(node.parent, addnodes.compact_paragraph) and node.parent.get('toctree'): + self.body.append(self.starttag(node, 'p', '', CLASS='caption')) + self.body.append('<span class="caption-text">') + self.context.append('</span></p>\n') + else: + super().visit_title(node) self.add_secnumber(node) self.add_fignumber(node.parent) if isinstance(node.parent, nodes.table): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Sphinx-3.5.3/tests/roots/test-linkcheck/links.txt new/Sphinx-3.5.4/tests/roots/test-linkcheck/links.txt --- old/Sphinx-3.5.3/tests/roots/test-linkcheck/links.txt 2021-03-16 17:35:47.000000000 +0100 +++ new/Sphinx-3.5.4/tests/roots/test-linkcheck/links.txt 2021-04-10 05:24:58.000000000 +0200 @@ -2,14 +2,14 @@ * Also, if there is a `default namespace <https://www.w3.org/TR/2006/REC-xml-names-20060816/#defaulting>`__, that full URI gets prepended to all of the non-prefixed tags. -* The URL having anchor: `http://www.sphinx-doc.org/en/1.4.8/tutorial.html#install-sphinx`_ +* The URL having anchor: `https://www.sphinx-doc.org/en/master/usage/installation.html#overview`_ Some additional anchors to exercise ignore code * `Example Bar invalid <https://www.google.com/#!bar>`_ * `Example Bar invalid <https://www.google.com#!bar>`_ tests that default ignore anchor of #! does not need to be prefixed with / * `Example Bar invalid <https://www.google.com/#top>`_ -* `Example anchor invalid <http://www.sphinx-doc.org/en/1.7/intro.html#does-not-exist>`_ +* `Example anchor invalid <http://www.sphinx-doc.org/en/master/index.html#does-not-exist>`_ * `Complete nonsense <https://localhost:7777/doesnotexist>`_ * `Example valid local file <conf.py>`_ * `Example invalid local file <path/to/notfound>`_ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Sphinx-3.5.3/tests/test_build_html.py new/Sphinx-3.5.4/tests/test_build_html.py --- old/Sphinx-3.5.3/tests/test_build_html.py 2021-03-20 14:54:40.000000000 +0100 +++ new/Sphinx-3.5.4/tests/test_build_html.py 2021-04-11 12:40:16.000000000 +0200 @@ -24,6 +24,12 @@ from sphinx.util import docutils, md5 from sphinx.util.inventory import InventoryFile +if docutils.__version_info__ < (0, 17): + FIGURE_CAPTION = ".//div[@class='figure align-default']/p[@class='caption']" +else: + FIGURE_CAPTION = ".//figure/figcaption/p" + + ENV_WARNINGS = """\ %(root)s/autodoc_fodder.py:docstring of autodoc_fodder.MarkupError:\\d+: \ WARNING: Explicit markup ends without a blank line; unexpected unindent. @@ -603,8 +609,7 @@ @pytest.mark.parametrize("fname,expect", flat_dict({ 'index.html': [ - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", None, True), + (FIGURE_CAPTION + "/span[@class='caption-number']", None, True), (".//table/caption/span[@class='caption-number']", None, True), (".//div[@class='code-block-caption']/" "span[@class='caption-number']", None, True), @@ -620,22 +625,19 @@ (".//li/p/a/span", '^Sect.1 Foo$', True), ], 'foo.html': [ - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", None, True), + (FIGURE_CAPTION + "/span[@class='caption-number']", None, True), (".//table/caption/span[@class='caption-number']", None, True), (".//div[@class='code-block-caption']/" "span[@class='caption-number']", None, True), ], 'bar.html': [ - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", None, True), + (FIGURE_CAPTION + "/span[@class='caption-number']", None, True), (".//table/caption/span[@class='caption-number']", None, True), (".//div[@class='code-block-caption']/" "span[@class='caption-number']", None, True), ], 'baz.html': [ - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", None, True), + (FIGURE_CAPTION + "/span[@class='caption-number']", None, True), (".//table/caption/span[@class='caption-number']", None, True), (".//div[@class='code-block-caption']/" "span[@class='caption-number']", None, True), @@ -671,10 +673,8 @@ @pytest.mark.parametrize("fname,expect", flat_dict({ 'index.html': [ - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 9 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 10 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 9 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 10 $', True), (".//table/caption/span[@class='caption-number']", '^Table 9 $', True), (".//table/caption/span[@class='caption-number']", @@ -695,14 +695,10 @@ (".//li/p/code/span", '^Sect.{number}$', True), ], 'foo.html': [ - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 1 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 2 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 3 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 4 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 1 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 2 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 3 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 4 $', True), (".//table/caption/span[@class='caption-number']", '^Table 1 $', True), (".//table/caption/span[@class='caption-number']", @@ -721,12 +717,9 @@ "span[@class='caption-number']", '^Listing 4 $', True), ], 'bar.html': [ - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 5 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 7 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 8 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 5 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 7 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 8 $', True), (".//table/caption/span[@class='caption-number']", '^Table 5 $', True), (".//table/caption/span[@class='caption-number']", @@ -741,8 +734,7 @@ "span[@class='caption-number']", '^Listing 8 $', True), ], 'baz.html': [ - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 6 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 6 $', True), (".//table/caption/span[@class='caption-number']", '^Table 6 $', True), (".//div[@class='code-block-caption']/" @@ -779,10 +771,8 @@ @pytest.mark.parametrize("fname,expect", flat_dict({ 'index.html': [ - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 1 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 2 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 1 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 2 $', True), (".//table/caption/span[@class='caption-number']", '^Table 1 $', True), (".//table/caption/span[@class='caption-number']", @@ -803,14 +793,10 @@ (".//li/p/a/span", '^Sect.1 Foo$', True), ], 'foo.html': [ - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 1.1 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 1.2 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 1.3 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 1.4 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 1.1 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 1.2 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 1.3 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 1.4 $', True), (".//table/caption/span[@class='caption-number']", '^Table 1.1 $', True), (".//table/caption/span[@class='caption-number']", @@ -829,12 +815,9 @@ "span[@class='caption-number']", '^Listing 1.4 $', True), ], 'bar.html': [ - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 2.1 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 2.3 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 2.4 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 2.1 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 2.3 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 2.4 $', True), (".//table/caption/span[@class='caption-number']", '^Table 2.1 $', True), (".//table/caption/span[@class='caption-number']", @@ -849,8 +832,7 @@ "span[@class='caption-number']", '^Listing 2.4 $', True), ], 'baz.html': [ - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 2.2 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 2.2 $', True), (".//table/caption/span[@class='caption-number']", '^Table 2.2 $', True), (".//div[@class='code-block-caption']/" @@ -884,10 +866,8 @@ @pytest.mark.parametrize("fname,expect", flat_dict({ 'index.html': [ - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Figure:1 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Figure:2 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Figure:1 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Figure:2 $', True), (".//table/caption/span[@class='caption-number']", '^Tab_1 $', True), (".//table/caption/span[@class='caption-number']", @@ -908,14 +888,10 @@ (".//li/p/a/span", '^Sect.1 Foo$', True), ], 'foo.html': [ - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Figure:1.1 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Figure:1.2 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Figure:1.3 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Figure:1.4 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Figure:1.1 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Figure:1.2 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Figure:1.3 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Figure:1.4 $', True), (".//table/caption/span[@class='caption-number']", '^Tab_1.1 $', True), (".//table/caption/span[@class='caption-number']", @@ -934,12 +910,9 @@ "span[@class='caption-number']", '^Code-1.4 $', True), ], 'bar.html': [ - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Figure:2.1 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Figure:2.3 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Figure:2.4 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Figure:2.1 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Figure:2.3 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Figure:2.4 $', True), (".//table/caption/span[@class='caption-number']", '^Tab_2.1 $', True), (".//table/caption/span[@class='caption-number']", @@ -954,8 +927,7 @@ "span[@class='caption-number']", '^Code-2.4 $', True), ], 'baz.html': [ - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Figure:2.2 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Figure:2.2 $', True), (".//table/caption/span[@class='caption-number']", '^Tab_2.2 $', True), (".//div[@class='code-block-caption']/" @@ -990,10 +962,8 @@ @pytest.mark.parametrize("fname,expect", flat_dict({ 'index.html': [ - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 1 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 2 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 1 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 2 $', True), (".//table/caption/span[@class='caption-number']", '^Table 1 $', True), (".//table/caption/span[@class='caption-number']", @@ -1014,14 +984,10 @@ (".//li/p/a/span", '^Sect.1 Foo$', True), ], 'foo.html': [ - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 1.1 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 1.1.1 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 1.1.2 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 1.2.1 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 1.1 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 1.1.1 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 1.1.2 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 1.2.1 $', True), (".//table/caption/span[@class='caption-number']", '^Table 1.1 $', True), (".//table/caption/span[@class='caption-number']", @@ -1040,12 +1006,9 @@ "span[@class='caption-number']", '^Listing 1.2.1 $', True), ], 'bar.html': [ - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 2.1.1 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 2.1.3 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 2.2.1 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 2.1.1 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 2.1.3 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 2.2.1 $', True), (".//table/caption/span[@class='caption-number']", '^Table 2.1.1 $', True), (".//table/caption/span[@class='caption-number']", @@ -1060,8 +1023,7 @@ "span[@class='caption-number']", '^Listing 2.2.1 $', True), ], 'baz.html': [ - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 2.1.2 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 2.1.2 $', True), (".//table/caption/span[@class='caption-number']", '^Table 2.1.2 $', True), (".//div[@class='code-block-caption']/" @@ -1081,10 +1043,8 @@ @pytest.mark.parametrize("fname,expect", flat_dict({ 'index.html': [ - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 1 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 2 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 1 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 2 $', True), (".//table/caption/span[@class='caption-number']", '^Table 1 $', True), (".//table/caption/span[@class='caption-number']", @@ -1103,14 +1063,10 @@ (".//li/p/a/span", '^Section.2.1$', True), (".//li/p/a/span", '^Fig.1 should be Fig.1$', True), (".//li/p/a/span", '^Sect.1 Foo$', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 1.1 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 1.2 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 1.3 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 1.4 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 1.1 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 1.2 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 1.3 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 1.4 $', True), (".//table/caption/span[@class='caption-number']", '^Table 1.1 $', True), (".//table/caption/span[@class='caption-number']", @@ -1127,12 +1083,9 @@ "span[@class='caption-number']", '^Listing 1.3 $', True), (".//div[@class='code-block-caption']/" "span[@class='caption-number']", '^Listing 1.4 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 2.1 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 2.3 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 2.4 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 2.1 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 2.3 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 2.4 $', True), (".//table/caption/span[@class='caption-number']", '^Table 2.1 $', True), (".//table/caption/span[@class='caption-number']", @@ -1145,8 +1098,7 @@ "span[@class='caption-number']", '^Listing 2.3 $', True), (".//div[@class='code-block-caption']/" "span[@class='caption-number']", '^Listing 2.4 $', True), - (".//div[@class='figure align-default']/p[@class='caption']/" - "span[@class='caption-number']", '^Fig. 2.2 $', True), + (FIGURE_CAPTION + "/span[@class='caption-number']", '^Fig. 2.2 $', True), (".//table/caption/span[@class='caption-number']", '^Table 2.2 $', True), (".//div[@class='code-block-caption']/" @@ -1164,12 +1116,9 @@ @pytest.mark.parametrize("fname,expect", flat_dict({ 'index.html': [ - (".//div[@class='figure align-default']/p[@class='caption']" - "/span[@class='caption-number']", "Fig. 1", True), - (".//div[@class='figure align-default']/p[@class='caption']" - "/span[@class='caption-number']", "Fig. 2", True), - (".//div[@class='figure align-default']/p[@class='caption']" - "/span[@class='caption-number']", "Fig. 3", True), + (FIGURE_CAPTION + "//span[@class='caption-number']", "Fig. 1", True), + (FIGURE_CAPTION + "//span[@class='caption-number']", "Fig. 2", True), + (FIGURE_CAPTION + "//span[@class='caption-number']", "Fig. 3", True), (".//div//span[@class='caption-number']", "No.1 ", True), (".//div//span[@class='caption-number']", "No.2 ", True), (".//li/p/a/span", 'Fig. 1', True), @@ -1332,9 +1281,14 @@ def test_html_anchor_for_figure(app): app.builder.build_all() content = (app.outdir / 'index.html').read_text() - assert ('<p class="caption"><span class="caption-text">The caption of pic</span>' - '<a class="headerlink" href="#id1" title="Permalink to this image">??</a></p>' - in content) + if docutils.__version_info__ < (0, 17): + assert ('<p class="caption"><span class="caption-text">The caption of pic</span>' + '<a class="headerlink" href="#id1" title="Permalink to this image">??</a></p>' + in content) + else: + assert ('<figcaption>\n<p><span class="caption-text">The caption of pic</span>' + '<a class="headerlink" href="#id1" title="Permalink to this image">??</a></p>\n</figcaption>' + in content) @pytest.mark.sphinx('html', testroot='directives-raw') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Sphinx-3.5.3/tests/test_build_linkcheck.py new/Sphinx-3.5.4/tests/test_build_linkcheck.py --- old/Sphinx-3.5.3/tests/test_build_linkcheck.py 2021-03-16 17:35:47.000000000 +0100 +++ new/Sphinx-3.5.4/tests/test_build_linkcheck.py 2021-04-10 05:24:58.000000000 +0200 @@ -97,7 +97,7 @@ assert "Anchor 'top' not found" == \ rowsby["https://www.google.com/#top"]["info"] assert "Anchor 'does-not-exist' not found" == \ - rowsby["http://www.sphinx-doc.org/en/1.7/intro.html#does-not-exist"]["info"] + rowsby["http://www.sphinx-doc.org/en/master/index.html#does-not-exist"]["info"] # images should fail assert "Not Found for url: https://www.google.com/image.png" in \ rowsby["https://www.google.com/image.png"]["info"] @@ -108,7 +108,7 @@ confoverrides={'linkcheck_anchors_ignore': ["^!", "^top$"], 'linkcheck_ignore': [ 'https://localhost:7777/doesnotexist', - 'http://www.sphinx-doc.org/en/1.7/intro.html#', + 'http://www.sphinx-doc.org/en/master/index.html#', 'https://www.google.com/image.png', 'https://www.google.com/image2.png', 'path/to/notfound'] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Sphinx-3.5.3/tests/test_environment_toctree.py new/Sphinx-3.5.4/tests/test_environment_toctree.py --- old/Sphinx-3.5.3/tests/test_environment_toctree.py 2021-03-16 17:35:47.000000000 +0100 +++ new/Sphinx-3.5.4/tests/test_environment_toctree.py 2021-04-10 19:17:55.000000000 +0200 @@ -10,7 +10,7 @@ import pytest from docutils import nodes -from docutils.nodes import bullet_list, caption, comment, list_item, reference +from docutils.nodes import bullet_list, comment, list_item, reference, title from sphinx import addnodes from sphinx.addnodes import compact_paragraph, only @@ -211,7 +211,7 @@ app.build() toctree = TocTree(app.env).get_toctree_for('index', app.builder, collapse=False) assert_node(toctree, - [compact_paragraph, ([caption, "Table of Contents"], + [compact_paragraph, ([title, "Table of Contents"], bullet_list, bullet_list, bullet_list)]) @@ -251,7 +251,7 @@ app.build() toctree = TocTree(app.env).get_toctree_for('index', app.builder, collapse=True) assert_node(toctree, - [compact_paragraph, ([caption, "Table of Contents"], + [compact_paragraph, ([title, "Table of Contents"], bullet_list, bullet_list, bullet_list)]) @@ -283,7 +283,7 @@ toctree = TocTree(app.env).get_toctree_for('index', app.builder, collapse=False, maxdepth=3) assert_node(toctree, - [compact_paragraph, ([caption, "Table of Contents"], + [compact_paragraph, ([title, "Table of Contents"], bullet_list, bullet_list, bullet_list)]) @@ -329,7 +329,7 @@ toctree = TocTree(app.env).get_toctree_for('index', app.builder, collapse=False, includehidden=False) assert_node(toctree, - [compact_paragraph, ([caption, "Table of Contents"], + [compact_paragraph, ([title, "Table of Contents"], bullet_list, bullet_list)]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Sphinx-3.5.3/tests/test_ext_autodoc.py new/Sphinx-3.5.4/tests/test_ext_autodoc.py --- old/Sphinx-3.5.3/tests/test_ext_autodoc.py 2021-03-20 14:54:40.000000000 +0100 +++ new/Sphinx-3.5.4/tests/test_ext_autodoc.py 2021-04-11 12:40:16.000000000 +0200 @@ -1373,9 +1373,16 @@ def test_enum_class(app): options = {"members": None} actual = do_autodoc(app, 'class', 'target.enums.EnumCls', options) + + if sys.version_info < (3, 10): + sig = '(value)' + else: + sig = ('(value, names=None, *, module=None, qualname=None, type=None, start=1, ' + 'boundary=None)') + assert list(actual) == [ '', - '.. py:class:: EnumCls(value)', + '.. py:class:: EnumCls%s' % sig, ' :module: target.enums', '', ' this is enum class', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Sphinx-3.5.3/tests/test_ext_autosummary.py new/Sphinx-3.5.4/tests/test_ext_autosummary.py --- old/Sphinx-3.5.3/tests/test_ext_autosummary.py 2021-03-16 17:35:47.000000000 +0100 +++ new/Sphinx-3.5.4/tests/test_ext_autosummary.py 2021-04-10 05:24:58.000000000 +0200 @@ -74,7 +74,7 @@ def test_extract_summary(capsys): - settings = Mock(language_code='', + settings = Mock(language_code='en', id_prefix='', auto_id_prefix='', pep_reference=False, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Sphinx-3.5.3/tests/test_ext_graphviz.py new/Sphinx-3.5.4/tests/test_ext_graphviz.py --- old/Sphinx-3.5.3/tests/test_ext_graphviz.py 2021-03-16 17:35:47.000000000 +0100 +++ new/Sphinx-3.5.4/tests/test_ext_graphviz.py 2021-04-10 05:24:58.000000000 +0200 @@ -13,6 +13,7 @@ import pytest from sphinx.ext.graphviz import ClickableMapDefinition +from sphinx.util import docutils @pytest.mark.sphinx('html', testroot='ext-graphviz') @@ -21,9 +22,15 @@ app.builder.build_all() content = (app.outdir / 'index.html').read_text() - html = (r'<div class="figure align-default" .*?>\s*' - r'<div class="graphviz"><img .*?/></div>\s*<p class="caption">' - r'<span class="caption-text">caption of graph</span>.*</p>\s*</div>') + if docutils.__version_info__ < (0, 17): + html = (r'<div class="figure align-default" .*?>\s*' + r'<div class="graphviz"><img .*?/></div>\s*<p class="caption">' + r'<span class="caption-text">caption of graph</span>.*</p>\s*</div>') + else: + html = (r'<figure class="align-default" .*?>\s*' + r'<div class="graphviz"><img .*?/></div>\s*<figcaption>\s*' + r'<p><span class="caption-text">caption of graph</span>.*</p>\s*' + r'</figcaption>\s*</figure>') assert re.search(html, content, re.S) html = 'Hello <div class="graphviz"><img .*?/></div>\n graphviz world' @@ -33,9 +40,15 @@ 'class="graphviz neato-graph" />') assert re.search(html, content, re.S) - html = (r'<div class="figure align-right" .*?>\s*' - r'<div class="graphviz"><img .*?/></div>\s*<p class="caption">' - r'<span class="caption-text">on <em>right</em></span>.*</p>\s*</div>') + if docutils.__version_info__ < (0, 17): + html = (r'<div class="figure align-right" .*?>\s*' + r'<div class="graphviz"><img .*?/></div>\s*<p class="caption">' + r'<span class="caption-text">on <em>right</em></span>.*</p>\s*</div>') + else: + html = (r'<figure class="align-right" .*?>\s*' + r'<div class="graphviz"><img .*?/></div>\s*<figcaption>\s*' + r'<p><span class="caption-text">on <em>right</em></span>.*</p>\s*' + r'</figcaption>\s*</figure>') assert re.search(html, content, re.S) html = (r'<div align=\"center\" class=\"align-center\">' @@ -53,13 +66,24 @@ content = (app.outdir / 'index.html').read_text() - html = (r'<div class=\"figure align-default\" .*?>\n' - r'<div class="graphviz"><object data=\".*\.svg\".*>\n' - r'\s*<p class=\"warning\">digraph foo {\n' - r'bar -> baz\n' - r'}</p></object></div>\n' - r'<p class=\"caption\"><span class=\"caption-text\">' - r'caption of graph</span>.*</p>\n</div>') + if docutils.__version_info__ < (0, 17): + html = (r'<div class=\"figure align-default\" .*?>\n' + r'<div class="graphviz"><object data=\".*\.svg\".*>\n' + r'\s*<p class=\"warning\">digraph foo {\n' + r'bar -> baz\n' + r'}</p></object></div>\n' + r'<p class=\"caption\"><span class=\"caption-text\">' + r'caption of graph</span>.*</p>\n</div>') + else: + html = (r'<figure class=\"align-default\" .*?>\n' + r'<div class="graphviz"><object data=\".*\.svg\".*>\n' + r'\s*<p class=\"warning\">digraph foo {\n' + r'bar -> baz\n' + r'}</p></object></div>\n' + r'<figcaption>\n' + r'<p><span class=\"caption-text\">caption of graph</span>.*</p>\n' + r'</figcaption>\n' + r'</figure>') assert re.search(html, content, re.S) html = (r'Hello <div class="graphviz"><object.*>\n' @@ -67,14 +91,25 @@ r' graphviz world') assert re.search(html, content, re.S) - html = (r'<div class=\"figure align-right\" .*\>\n' - r'<div class="graphviz"><object data=\".*\.svg\".*>\n' - r'\s*<p class=\"warning\">digraph bar {\n' - r'foo -> bar\n' - r'}</p></object></div>\n' - r'<p class=\"caption\"><span class=\"caption-text\">' - r'on <em>right</em></span>.*</p>\n' - r'</div>') + if docutils.__version_info__ < (0, 17): + html = (r'<div class=\"figure align-right\" .*\>\n' + r'<div class="graphviz"><object data=\".*\.svg\".*>\n' + r'\s*<p class=\"warning\">digraph bar {\n' + r'foo -> bar\n' + r'}</p></object></div>\n' + r'<p class=\"caption\"><span class=\"caption-text\">' + r'on <em>right</em></span>.*</p>\n' + r'</div>') + else: + html = (r'<figure class=\"align-right\" .*\>\n' + r'<div class="graphviz"><object data=\".*\.svg\".*>\n' + r'\s*<p class=\"warning\">digraph bar {\n' + r'foo -> bar\n' + r'}</p></object></div>\n' + r'<figcaption>\n' + r'<p><span class=\"caption-text\">on <em>right</em></span>.*</p>\n' + r'</figcaption>\n' + r'</figure>') assert re.search(html, content, re.S) html = (r'<div align=\"center\" class=\"align-center\">' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Sphinx-3.5.3/tests/test_ext_inheritance_diagram.py new/Sphinx-3.5.4/tests/test_ext_inheritance_diagram.py --- old/Sphinx-3.5.3/tests/test_ext_inheritance_diagram.py 2021-03-16 17:35:47.000000000 +0100 +++ new/Sphinx-3.5.4/tests/test_ext_inheritance_diagram.py 2021-04-10 05:24:58.000000000 +0200 @@ -16,6 +16,7 @@ from sphinx.ext.inheritance_diagram import (InheritanceDiagram, InheritanceException, import_classes) +from sphinx.util import docutils @pytest.mark.sphinx(buildername="html", testroot="inheritance") @@ -147,12 +148,20 @@ content = (app.outdir / 'index.html').read_text() - pattern = ('<div class="figure align-default" id="id1">\n' - '<div class="graphviz">' - '<img src="_images/inheritance-\\w+.png" alt="Inheritance diagram of test.Foo" ' - 'class="inheritance graphviz" /></div>\n<p class="caption">' - '<span class="caption-text">Test Foo!</span><a class="headerlink" href="#id1" ' - 'title="Permalink to this image">\xb6</a></p>') + if docutils.__version_info__ < (0, 17): + pattern = ('<div class="figure align-default" id="id1">\n' + '<div class="graphviz">' + '<img src="_images/inheritance-\\w+.png" alt="Inheritance diagram of test.Foo" ' + 'class="inheritance graphviz" /></div>\n<p class="caption">' + '<span class="caption-text">Test Foo!</span><a class="headerlink" href="#id1" ' + 'title="Permalink to this image">\xb6</a></p>\n</div>\n') + else: + pattern = ('<figure class="align-default" id="id1">\n' + '<div class="graphviz">' + '<img src="_images/inheritance-\\w+.png" alt="Inheritance diagram of test.Foo" ' + 'class="inheritance graphviz" /></div>\n<figcaption>\n<p>' + '<span class="caption-text">Test Foo!</span><a class="headerlink" href="#id1" ' + 'title="Permalink to this image">\xb6</a></p>\n</figcaption>\n</figure>\n') assert re.search(pattern, content, re.M) @@ -164,14 +173,25 @@ content = (app.outdir / 'index.html').read_text() - pattern = ('<div class="figure align-default" id="id1">\n' - '<div class="graphviz">' - '<object data="_images/inheritance-\\w+.svg" ' - 'type="image/svg\\+xml" class="inheritance graphviz">\n' - '<p class=\"warning\">Inheritance diagram of test.Foo</p>' - '</object></div>\n<p class="caption"><span class="caption-text">' - 'Test Foo!</span><a class="headerlink" href="#id1" ' - 'title="Permalink to this image">\xb6</a></p>') + if docutils.__version_info__ < (0, 17): + pattern = ('<div class="figure align-default" id="id1">\n' + '<div class="graphviz">' + '<object data="_images/inheritance-\\w+.svg" ' + 'type="image/svg\\+xml" class="inheritance graphviz">\n' + '<p class=\"warning\">Inheritance diagram of test.Foo</p>' + '</object></div>\n<p class="caption"><span class="caption-text">' + 'Test Foo!</span><a class="headerlink" href="#id1" ' + 'title="Permalink to this image">\xb6</a></p>\n</div>\n') + else: + pattern = ('<figure class="align-default" id="id1">\n' + '<div class="graphviz">' + '<object data="_images/inheritance-\\w+.svg" ' + 'type="image/svg\\+xml" class="inheritance graphviz">\n' + '<p class=\"warning\">Inheritance diagram of test.Foo</p>' + '</object></div>\n<figcaption>\n<p><span class="caption-text">' + 'Test Foo!</span><a class="headerlink" href="#id1" ' + 'title="Permalink to this image">\xb6</a></p>\n</figcaption>\n</figure>\n') + assert re.search(pattern, content, re.M) @@ -204,12 +224,20 @@ content = (app.outdir / 'index.html').read_text() - pattern = ('<div class="figure align-default" id="id1">\n' - '<div class="graphviz">' - '<img src="_images/inheritance-\\w+.png" alt="Inheritance diagram of test.Foo" ' - 'class="inheritance graphviz" /></div>\n<p class="caption">' - '<span class="caption-text">Test Foo!</span><a class="headerlink" href="#id1" ' - 'title="Permalink to this image">\xb6</a></p>') + if docutils.__version_info__ < (0, 17): + pattern = ('<div class="figure align-default" id="id1">\n' + '<div class="graphviz">' + '<img src="_images/inheritance-\\w+.png" alt="Inheritance diagram of test.Foo" ' + 'class="inheritance graphviz" /></div>\n<p class="caption">' + '<span class="caption-text">Test Foo!</span><a class="headerlink" href="#id1" ' + 'title="Permalink to this image">\xb6</a></p>\n</div>\n') + else: + pattern = ('<figure class="align-default" id="id1">\n' + '<div class="graphviz">' + '<img src="_images/inheritance-\\w+.png" alt="Inheritance diagram of test.Foo" ' + 'class="inheritance graphviz" /></div>\n<figcaption>\n<p>' + '<span class="caption-text">Test Foo!</span><a class="headerlink" href="#id1" ' + 'title="Permalink to this image">\xb6</a></p>\n</figcaption>\n</figure>\n') assert re.search(pattern, content, re.M) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Sphinx-3.5.3/tests/test_intl.py new/Sphinx-3.5.4/tests/test_intl.py --- old/Sphinx-3.5.3/tests/test_intl.py 2021-03-20 14:54:40.000000000 +0100 +++ new/Sphinx-3.5.4/tests/test_intl.py 2021-04-11 12:40:16.000000000 +0200 @@ -20,6 +20,7 @@ from sphinx import locale from sphinx.testing.util import (assert_node, assert_not_re_search, assert_re_search, assert_startswith, etree_parse, path, strip_escseq) +from sphinx.util import docutils sphinx_intl = pytest.mark.sphinx( testroot='intl', @@ -1083,8 +1084,12 @@ result = (app.outdir / 'raw.html').read_text() # raw block should not be translated - expected_expr = """<iframe src="http://sphinx-doc.org"></iframe></div>""" - assert_count(expected_expr, result, 1) + if docutils.__version_info__ < (0, 17): + expected_expr = """<iframe src="http://sphinx-doc.org"></iframe></div>""" + assert_count(expected_expr, result, 1) + else: + expected_expr = """<iframe src="http://sphinx-doc.org"></iframe></section>""" + assert_count(expected_expr, result, 1) # [figure.txt] @@ -1157,8 +1162,12 @@ result = (app.outdir / 'raw.html').read_text() # raw block should be translated - expected_expr = """<iframe src="HTTP://SPHINX-DOC.ORG"></iframe></div>""" - assert_count(expected_expr, result, 1) + if docutils.__version_info__ < (0, 17): + expected_expr = """<iframe src="HTTP://SPHINX-DOC.ORG"></iframe></div>""" + assert_count(expected_expr, result, 1) + else: + expected_expr = """<iframe src="HTTP://SPHINX-DOC.ORG"></iframe></section>""" + assert_count(expected_expr, result, 1) # [figure.txt] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Sphinx-3.5.3/tox.ini new/Sphinx-3.5.4/tox.ini --- old/Sphinx-3.5.3/tox.ini 2021-03-20 14:54:40.000000000 +0100 +++ new/Sphinx-3.5.4/tox.ini 2021-04-11 12:40:16.000000000 +0200 @@ -22,6 +22,7 @@ du14: docutils==0.14 du15: docutils==0.15 du16: docutils==0.16 + du17: docutils==0.17 extras = test setenv = ++++++ python3.inv ++++++ Binary files /var/tmp/diff_new_pack.SaocdF/_old and /var/tmp/diff_new_pack.SaocdF/_new differ