<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/4242160ff197533b1bebdf654f4e4e7858487470">https://github.com/macports/macports-ports/commit/4242160ff197533b1bebdf654f4e4e7858487470</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 4242160ff197533b1bebdf654f4e4e7858487470
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Sat May 13 16:17:12 2023 +1000
<span style='display:block; white-space:pre;color:#404040;'> py35-sphinx: delete
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> No remaining dependents. Also delete deps with no other dependents.
</span>---
python/py-alabaster/Portfile | 2 +-
python/py-imagesize/Portfile | 2 +-
python/py-jinja2/Portfile | 4 +-
python/py-snowballstemmer/Portfile | 6 +-
python/py-sphinx/Portfile | 17 +-
python/py-sphinx/files/docutils-0.18-v345.patch | 753 -----------------------
python/py-sphinx/files/py34-sphinx | 4 -
python/py-sphinx/files/py35-sphinx | 4 -
python/py-sphinxcontrib-devhelp/Portfile | 7 +-
python/py-sphinxcontrib-jsmath/Portfile | 7 +-
python/py-sphinxcontrib-qthelp/Portfile | 7 +-
python/py-sphinxcontrib-serializinghtml/Portfile | 9 +-
12 files changed, 19 insertions(+), 803 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-alabaster/Portfile b/python/py-alabaster/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index b00ddef821e..9c910bc365d 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-alabaster/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-alabaster/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -17,7 +17,7 @@ checksums md5 2e05a5f4fe5a8b95e5e576cbf4a5d503 \
</span> rmd160 d81f91bd9eb6d873d765e14783a4a936fd6f26a0 \
sha256 a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2
<span style='display:block; white-space:pre;background:#ffe0e0;'>-python.versions 27 35 36 37 38 39 310 311
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+python.versions 27 36 37 38 39 310 311
</span>
if {$subport ne $name} {
if {${python.version} >= 36} {
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-imagesize/Portfile b/python/py-imagesize/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index e0a78a43a07..12942765285 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-imagesize/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-imagesize/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -22,7 +22,7 @@ checksums md5 5a40586a25c07e1a8f16f6267252c321 \
</span> rmd160 ad86267becebc8ea811d77ee46570393629898be \
sha256 69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a
<span style='display:block; white-space:pre;background:#ffe0e0;'>-python.versions 27 35 36 37 38 39 310 311
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+python.versions 27 36 37 38 39 310 311
</span>
if {$subport ne $name} {
if {${python.version} >= 36} {
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-jinja2/Portfile b/python/py-jinja2/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 0a80cdc059d..30b061e776f 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-jinja2/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-jinja2/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -25,7 +25,7 @@ checksums md5 d31148abd89c1df1cdb077a55db27d02 \
</span> rmd160 833e083e218d42721449141f03677e29b24b7137 \
sha256 31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852
<span style='display:block; white-space:pre;background:#ffe0e0;'>-python.versions 27 35 36 37 38 39 310 311
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+python.versions 27 36 37 38 39 310 311
</span>
if {$subport ne $name} {
if {${python.version} == 36} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -35,7 +35,7 @@ if {$subport ne $name} {
</span> rmd160 55e0346653a9baed024bcaf88d19f673ad7437fc \
sha256 611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {${python.version} <= 35} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${python.version} == 27} {
</span> version 2.11.3
revision 0
checksums md5 231dc00d34afb2672c497713fa9cdaaa \
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-snowballstemmer/Portfile b/python/py-snowballstemmer/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 7d085fc2fa2..b84ae8565af 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-snowballstemmer/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-snowballstemmer/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -22,12 +22,16 @@ checksums sha256 09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be
</span> rmd160 09e0627ddbe30c84f722bfd45e7971e5affcf339 \
size 86699
<span style='display:block; white-space:pre;background:#ffe0e0;'>-python.versions 27 35 36 37 38 39 310 311
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+python.versions 27 36 37 38 39 310 311
</span>
if {${subport} ne ${name}} {
depends_build-append \
port:py${python.version}-setuptools
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${python.version} >= 36} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ python.pep517 yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> post-destroot {
set docdir ${prefix}/share/doc/${subport}
xinstall -d ${destroot}${docdir}
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-sphinx/Portfile b/python/py-sphinx/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 05c4ef2e35f..9c12484ac3c 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-sphinx/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-sphinx/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -27,7 +27,7 @@ checksums md5 ffbafb3bbc0a978813947b183da1c0b5 \
</span> rmd160 08743068737f0d5fc171fa7a3fe24faec00aba47 \
sha256 6d56a34697bb749ffa0152feafc4b19836c755d90a7c59b72bc7dfd371b9cc6b
<span style='display:block; white-space:pre;background:#ffe0e0;'>-python.versions 27 35 36 37 38 39 310 311
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+python.versions 27 36 37 38 39 310 311
</span>
if {$subport ne $name} {
depends_lib port:py${python.version}-docutils
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -49,8 +49,6 @@ if {$subport ne $name} {
</span> if {${python.version} >= 38} {
patchfiles-append pyproject.toml.patch
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- depends_lib-append port:py${python.version}-setuptools
</span> }
if {${python.version} in {36 37}} {
version 5.3.0
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -60,18 +58,6 @@ if {$subport ne $name} {
</span> sha256 51026de0a9ff9fc13c05d74913ad66047e104f56a129ff73e174eb5c3ee794b5
patchfiles pyproject.toml-5.3.0.patch
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {${python.version} == 35} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- version 3.5.4
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- revision 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- checksums md5 dd46088ebc01f6f721ee7618df680d68 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- rmd160 70102258335337eff3cc16526e84e9a95c625018 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sha256 19010b7b9fa0dc7756a6e105b2aacd3a80f798af3c25c273be64d7beeb482cb1 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- size 5911093
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- patch.pre_args -p1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Source of patch: https://github.com/catap/sphinx/tree/docutils-1.8-v354
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- patchfiles docutils-0.18-v345.patch
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span> if {${python.version} == 27} {
version 1.8.5
revision 0
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -79,6 +65,7 @@ if {$subport ne $name} {
</span> rmd160 a7a38523976288c13a8a7e5bf4a81367db9af462 \
sha256 c7658aab75c920288a8cf6f09f244c6cfdae30d82d803ac1634d9f223a80ca08
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_lib-append port:py${python.version}-setuptools
</span> depends_run-append port:py${python.version}-six \
port:py${python.version}-sphinxcontrib-websupport \
port:py${python.version}-typing
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-sphinx/files/docutils-0.18-v345.patch b/python/py-sphinx/files/docutils-0.18-v345.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index fdf75acf27a..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-sphinx/files/docutils-0.18-v345.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,753 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From 5c39bece6da259752396f3881a5bb17694c0f7f4 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Takeshi KOMIYA <i.tkomiya@gmail.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Sun, 3 Oct 2021 18:32:39 +0900
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH 1/6] Support docutils-0.18; Meta directive and meta node has
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- moved
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sphinx/addnodes.py | 8 ++++++--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sphinx/directives/patches.py | 19 ++++++++++++++-----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- tests/test_versioning.py | 9 +++++++--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 3 files changed, 27 insertions(+), 9 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/sphinx/addnodes.py b/sphinx/addnodes.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 5f371e46b..048001990 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/sphinx/addnodes.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/sphinx/addnodes.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -16,9 +16,11 @@ from docutils.nodes import Element, Node
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from sphinx.deprecation import RemovedInSphinx40Warning
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from sphinx.util import docutils
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if False:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- # For type annotation
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from sphinx.application import Sphinx
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # For type annotation
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class document(nodes.document):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -412,7 +414,6 @@ def setup(app: "Sphinx") -> Dict[str, Any]:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- app.add_node(start_of_file)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- app.add_node(highlightlang)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- app.add_node(tabular_col_spec)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- app.add_node(meta)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- app.add_node(pending_xref)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- app.add_node(number_reference)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- app.add_node(download_reference)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -420,6 +421,9 @@ def setup(app: "Sphinx") -> Dict[str, Any]:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- app.add_node(literal_strong)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- app.add_node(manpage)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if docutils.__version_info__ < (0, 18):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ app.add_node(meta)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 'version': 'builtin',
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 'parallel_read_safe': True,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/sphinx/directives/patches.py b/sphinx/directives/patches.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 1eae6d0c8..4ad5ce8fd 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/sphinx/directives/patches.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/sphinx/directives/patches.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -11,7 +11,7 @@ from typing import Any, Dict, List, Tuple, cast
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from docutils import nodes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from docutils.nodes import Node, make_id, system_message
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from docutils.parsers.rst import directives
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--from docutils.parsers.rst.directives import html, images, tables
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from docutils.parsers.rst.directives import images, tables
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from sphinx import addnodes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from sphinx.directives import optional_int
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -19,6 +19,15 @@ from sphinx.domains.math import MathDomain
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from sphinx.util.docutils import SphinxDirective
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from sphinx.util.nodes import set_source_info
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+try:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ from docutils.nodes import meta as meta_node # type: ignore
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ from docutils.parsers.rst.directives.misc import Meta as MetaBase # type: ignore
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+except ImportError:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # docutils-0.17 or older
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ from docutils.parsers.rst.directives.html import Meta as MetaBase
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ from docutils.parsers.rst.directives.html import MetaBody
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ meta_node = MetaBody.meta
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if False:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # For type annotation
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from sphinx.application import Sphinx
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -50,19 +59,19 @@ class Figure(images.Figure):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return [figure_node]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--class Meta(html.Meta, SphinxDirective):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+class Meta(MetaBase, SphinxDirective):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def run(self) -> List[Node]:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- result = super().run()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- for node in result:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (isinstance(node, nodes.pending) and
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- isinstance(node.details['nodes'][0], html.MetaBody.meta)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ isinstance(node.details['nodes'][0], meta_node)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- meta = node.details['nodes'][0]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- meta.source = self.env.doc2path(self.env.docname)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- meta.line = self.lineno
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- meta.rawcontent = meta['content'] # type: ignore
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ meta.rawcontent = meta['content']
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # docutils' meta nodes aren't picklable because the class is nested
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- meta.__class__ = addnodes.meta # type: ignore
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ meta.__class__ = addnodes.meta
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return result
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/tests/test_versioning.py b/tests/test_versioning.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 33fb045ce..8ec1405ad 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/tests/test_versioning.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/tests/test_versioning.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -11,12 +11,17 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import pickle
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import pytest
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--from docutils.parsers.rst.directives.html import MetaBody
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from sphinx import addnodes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from sphinx.testing.util import SphinxTestApp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from sphinx.versioning import add_uids, get_ratio, merge_doctrees
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+try:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ from docutils.parsers.rst.directives.html import MetaBody
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ meta = MetaBody.meta
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+except ImportError:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ from docutils.nodes import meta
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- app = original = original_uids = None
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -64,7 +69,7 @@ def test_picklablility():
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- copy.settings.warning_stream = None
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- copy.settings.env = None
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- copy.settings.record_dependencies = None
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- for metanode in copy.traverse(MetaBody.meta):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ for metanode in copy.traverse(meta):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- metanode.__class__ = addnodes.meta
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- loaded = pickle.loads(pickle.dumps(copy, pickle.HIGHEST_PROTOCOL))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- assert all(getattr(n, 'uid', False) for n in loaded.traverse(is_paragraph))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-2.33.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From b43f35286a374890cabc52ce95f7d4f496a337af Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Takeshi KOMIYA <i.tkomiya@gmail.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Sun, 3 Oct 2021 18:44:37 +0900
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH 2/6] Support docutils-0.18; Disable embed_images and
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- section_self_link
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-embed_images:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- HTML Builder always use non-embeded (linked) images.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-section_self_link:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- HTML Builder controls hyperlink generation for each section via
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- `html_permalinks` option.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sphinx/environment/__init__.py | 2 ++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1 file changed, 2 insertions(+)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/sphinx/environment/__init__.py b/sphinx/environment/__init__.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 6b2acab9f..b7b0a2433 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/sphinx/environment/__init__.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/sphinx/environment/__init__.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -44,6 +44,7 @@ if False:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- logger = logging.getLogger(__name__)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- default_settings = {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 'embed_images': False,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 'embed_stylesheet': False,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 'cloak_email_addresses': True,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 'pep_base_url': 'https://www.python.org/dev/peps/',
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -53,6 +54,7 @@ default_settings = {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 'input_encoding': 'utf-8-sig',
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 'doctitle_xform': False,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 'sectsubtitle_xform': False,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 'section_self_link': False,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 'halt_level': 5,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 'file_insertion_enabled': True,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 'smartquotes_locales': [],
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-2.33.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From b7416673fe78c2b55a9bfd11f70cc5043f979eb0 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Takeshi KOMIYA <i.tkomiya@gmail.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Sun, 10 Oct 2021 15:24:12 +0900
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH 3/6] refactor: Node.traverse() will returns generator since
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 0.18
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sphinx/transforms/i18n.py | 10 +++++-----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sphinx/writers/latex.py | 2 +-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sphinx/writers/text.py | 2 +-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- tests/test_util_nodes.py | 14 +++++++-------
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 4 files changed, 14 insertions(+), 14 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/sphinx/transforms/i18n.py b/sphinx/transforms/i18n.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 6bea6c6ee..a345b819d 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/sphinx/transforms/i18n.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/sphinx/transforms/i18n.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -297,7 +297,7 @@ class Locale(SphinxTransform):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- is_autofootnote_ref = NodeMatcher(nodes.footnote_reference, auto=Any)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- old_foot_refs = node.traverse(is_autofootnote_ref) # type: List[nodes.footnote_reference] # NOQA
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- new_foot_refs = patch.traverse(is_autofootnote_ref) # type: List[nodes.footnote_reference] # NOQA
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if len(old_foot_refs) != len(new_foot_refs):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if len(list(old_foot_refs)) != len(list(new_foot_refs)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- old_foot_ref_rawsources = [ref.rawsource for ref in old_foot_refs]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- new_foot_ref_rawsources = [ref.rawsource for ref in new_foot_refs]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- logger.warning(__('inconsistent footnote references in translated message.' +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -340,7 +340,7 @@ class Locale(SphinxTransform):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- is_refnamed_ref = NodeMatcher(nodes.reference, refname=Any)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- old_refs = node.traverse(is_refnamed_ref) # type: List[nodes.reference]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- new_refs = patch.traverse(is_refnamed_ref) # type: List[nodes.reference]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if len(old_refs) != len(new_refs):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if len(list(old_refs)) != len(list(new_refs)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- old_ref_rawsources = [ref.rawsource for ref in old_refs]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- new_ref_rawsources = [ref.rawsource for ref in new_refs]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- logger.warning(__('inconsistent references in translated message.' +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -368,7 +368,7 @@ class Locale(SphinxTransform):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- old_foot_refs = node.traverse(is_refnamed_footnote_ref)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- new_foot_refs = patch.traverse(is_refnamed_footnote_ref)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- refname_ids_map = {} # type: Dict[str, List[str]]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if len(old_foot_refs) != len(new_foot_refs):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if len(list(old_foot_refs)) != len(list(new_foot_refs)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- old_foot_ref_rawsources = [ref.rawsource for ref in old_foot_refs]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- new_foot_ref_rawsources = [ref.rawsource for ref in new_foot_refs]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- logger.warning(__('inconsistent footnote references in translated message.' +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -387,7 +387,7 @@ class Locale(SphinxTransform):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- old_cite_refs = node.traverse(is_citation_ref) # type: List[nodes.citation_reference] # NOQA
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- new_cite_refs = patch.traverse(is_citation_ref) # type: List[nodes.citation_reference] # NOQA
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- refname_ids_map = {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if len(old_cite_refs) != len(new_cite_refs):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if len(list(old_cite_refs)) != len(list(new_cite_refs)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- old_cite_ref_rawsources = [ref.rawsource for ref in old_cite_refs]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- new_cite_ref_rawsources = [ref.rawsource for ref in new_cite_refs]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- logger.warning(__('inconsistent citation references in translated message.' +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -407,7 +407,7 @@ class Locale(SphinxTransform):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- old_xrefs = node.traverse(addnodes.pending_xref)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- new_xrefs = patch.traverse(addnodes.pending_xref)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- xref_reftarget_map = {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if len(old_xrefs) != len(new_xrefs):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if len(list(old_xrefs)) != len(list(new_xrefs)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- old_xref_rawsources = [xref.rawsource for xref in old_xrefs]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- new_xref_rawsources = [xref.rawsource for xref in new_xrefs]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- logger.warning(__('inconsistent term references in translated message.' +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 247a7dfb5..4dd8eedd3 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/sphinx/writers/latex.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/sphinx/writers/latex.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1001,7 +1001,7 @@ class LaTeXTranslator(SphinxTranslator):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- context = ('\\par' + CR + '\\vskip-\\baselineskip'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- '\\vbox{\\hbox{\\strut}}\\end{varwidth}%' + CR + context)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.needs_linetrimming = 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if len(node.traverse(nodes.paragraph)) >= 2:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if len(list(node.traverse(nodes.paragraph))) >= 2:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.table.has_oldproblematic = True
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if isinstance(node.parent.parent, nodes.thead) or (cell.col in self.table.stubs):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if len(node) == 1 and isinstance(node[0], nodes.paragraph) and node.astext() == '':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/sphinx/writers/text.py b/sphinx/writers/text.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index c0ebe32a2..ec5debd84 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/sphinx/writers/text.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/sphinx/writers/text.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -834,7 +834,7 @@ class TextTranslator(SphinxTranslator):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.end_state(first='%s. ' % self.list_counter[-1])
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def visit_definition_list_item(self, node: Element) -> None:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- self._classifier_count_in_li = len(node.traverse(nodes.classifier))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ self._classifier_count_in_li = len(list(node.traverse(nodes.classifier)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def depart_definition_list_item(self, node: Element) -> None:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- pass
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/tests/test_util_nodes.py b/tests/test_util_nodes.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index cb2ae70a8..421930cf5 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/tests/test_util_nodes.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/tests/test_util_nodes.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -60,31 +60,31 @@ def test_NodeMatcher():
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # search by node class
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- matcher = NodeMatcher(nodes.paragraph)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- assert len(doctree.traverse(matcher)) == 3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert len(list(doctree.traverse(matcher))) == 3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # search by multiple node classes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- matcher = NodeMatcher(nodes.paragraph, nodes.literal_block)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- assert len(doctree.traverse(matcher)) == 4
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert len(list(doctree.traverse(matcher))) == 4
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # search by node attribute
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- matcher = NodeMatcher(block=1)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- assert len(doctree.traverse(matcher)) == 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert len(list(doctree.traverse(matcher))) == 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # search by node attribute (Any)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- matcher = NodeMatcher(block=Any)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- assert len(doctree.traverse(matcher)) == 3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert len(list(doctree.traverse(matcher))) == 3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # search by both class and attribute
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- matcher = NodeMatcher(nodes.paragraph, block=Any)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- assert len(doctree.traverse(matcher)) == 2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert len(list(doctree.traverse(matcher))) == 2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # mismatched
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- matcher = NodeMatcher(nodes.title)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- assert len(doctree.traverse(matcher)) == 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert len(list(doctree.traverse(matcher))) == 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # search with Any does not match to Text node
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- matcher = NodeMatcher(blah=Any)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- assert len(doctree.traverse(matcher)) == 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ assert len(list(doctree.traverse(matcher))) == 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- @pytest.mark.parametrize(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-2.33.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From 893776f280fed8a7b8d1f8c89dd4830f006060f1 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Takeshi KOMIYA <i.tkomiya@gmail.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Mon, 11 Oct 2021 01:23:29 +0900
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH 4/6] Support docutils-0.18: allow PreBibliographic nodes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- before docinfo
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Since 0.18, `meta` directive inserts meta node into the top of the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-document. It confuses MetadataCollector.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-This allows doctree contains PreBibliographic nodes just before docinfo
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-node.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sphinx/environment/collectors/metadata.py | 9 ++++++---
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1 file changed, 6 insertions(+), 3 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/sphinx/environment/collectors/metadata.py b/sphinx/environment/collectors/metadata.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 7b3628c9a..d04d80595 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/sphinx/environment/collectors/metadata.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/sphinx/environment/collectors/metadata.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -33,9 +33,12 @@ class MetadataCollector(EnvironmentCollector):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Keep processing minimal -- just return what docutils says.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- """
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if len(doctree) > 0 and isinstance(doctree[0], nodes.docinfo):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ index = doctree.first_child_not_matching_class(nodes.PreBibliographic)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if index is None:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ elif isinstance(doctree[index], nodes.docinfo):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- md = app.env.metadata[app.env.docname]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- for node in doctree[0]:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ for node in doctree[index]: # type: ignore
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # nodes are multiply inherited...
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if isinstance(node, nodes.authors):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- authors = cast(List[nodes.author], node)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -58,7 +61,7 @@ class MetadataCollector(EnvironmentCollector):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- value = 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- md[name] = value
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- doctree.pop(0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ doctree.pop(index)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def setup(app: Sphinx) -> Dict[str, Any]:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-2.33.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From f63b487b899ccefccd69a0ec0c6ad52c64361b04 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Takeshi KOMIYA <i.tkomiya@gmail.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Wed, 27 Oct 2021 01:49:57 +0900
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH 5/6] Support docutils-0.18: Consume iterator of
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Element.traverse()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Since 0.18, Element.traverse() returns an iterator instead of
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-intermediate object. As a result, the return value is always considered
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-as truthy value. And it becomes fragile when the caller modifies the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-doctree on the loop.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sphinx/builders/_epub_base.py | 8 ++++----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sphinx/builders/latex/transforms.py | 10 +++++-----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sphinx/domains/index.py | 2 +-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sphinx/domains/python.py | 2 +-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sphinx/environment/adapters/toctree.py | 4 ++--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sphinx/ext/autosummary/__init__.py | 2 +-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sphinx/ext/linkcode.py | 2 +-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sphinx/ext/todo.py | 2 +-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sphinx/ext/viewcode.py | 4 ++--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sphinx/transforms/__init__.py | 4 ++--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sphinx/transforms/i18n.py | 2 +-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sphinx/transforms/post_transforms/code.py | 2 +-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sphinx/util/nodes.py | 4 ++--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sphinx/writers/latex.py | 2 +-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sphinx/writers/manpage.py | 4 ++--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 15 files changed, 27 insertions(+), 27 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/sphinx/builders/_epub_base.py b/sphinx/builders/_epub_base.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 7df3f8df5..5de83c672 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/sphinx/builders/_epub_base.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/sphinx/builders/_epub_base.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -318,14 +318,14 @@ class EpubBuilder(StandaloneHTMLBuilder):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # a) place them after the last existing footnote
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # b) place them after an (empty) Footnotes rubric
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # c) create an empty Footnotes rubric at the end of the document
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- fns = tree.traverse(nodes.footnote)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ fns = list(tree.traverse(nodes.footnote))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if fns:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- fn = fns[-1]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return fn.parent, fn.parent.index(fn) + 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- for node in tree.traverse(nodes.rubric):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if len(node) == 1 and node.astext() == FOOTNOTES_RUBRIC_NAME:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return node.parent, node.parent.index(node) + 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- doc = tree.traverse(nodes.document)[0]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ doc = list(tree.traverse(nodes.document))[0]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- rub = nodes.rubric()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- rub.append(nodes.Text(FOOTNOTES_RUBRIC_NAME))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- doc.append(rub)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -334,10 +334,10 @@ class EpubBuilder(StandaloneHTMLBuilder):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if show_urls == 'no':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if show_urls == 'footnote':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- doc = tree.traverse(nodes.document)[0]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ doc = list(tree.traverse(nodes.document))[0]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- fn_spot, fn_idx = footnote_spot(tree)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- nr = 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- for node in tree.traverse(nodes.reference):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ for node in list(tree.traverse(nodes.reference)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- uri = node.get('refuri', '')
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (uri.startswith('http:') or uri.startswith('https:') or
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- uri.startswith('ftp:')) and uri not in node.astext():
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/sphinx/builders/latex/transforms.py b/sphinx/builders/latex/transforms.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 0a74eded4..97baf467a 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/sphinx/builders/latex/transforms.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/sphinx/builders/latex/transforms.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -45,7 +45,7 @@ class SubstitutionDefinitionsRemover(SphinxPostTransform):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- formats = ('latex',)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def run(self, **kwargs: Any) -> None:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- for node in self.document.traverse(nodes.substitution_definition):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ for node in list(self.document.traverse(nodes.substitution_definition)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- node.parent.remove(node)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -81,7 +81,7 @@ class ShowUrlsTransform(SphinxPostTransform):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if show_urls is False or show_urls == 'no':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- for node in self.document.traverse(nodes.reference):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ for node in list(self.document.traverse(nodes.reference)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- uri = node.get('refuri', '')
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if uri.startswith(URI_SCHEMES):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if uri.startswith('mailto:'):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -501,7 +501,7 @@ class BibliographyTransform(SphinxPostTransform):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def run(self, **kwargs: Any) -> None:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- citations = thebibliography()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- for node in self.document.traverse(nodes.citation):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ for node in list(self.document.traverse(nodes.citation)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- node.parent.remove(node)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- citations += node
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -602,9 +602,9 @@ class IndexInSectionTitleTransform(SphinxPostTransform):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- formats = ('latex',)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def run(self, **kwargs: Any) -> None:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- for node in self.document.traverse(nodes.title):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ for node in list(self.document.traverse(nodes.title)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if isinstance(node.parent, nodes.section):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- for i, index in enumerate(node.traverse(addnodes.index)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ for i, index in enumerate(list(node.traverse(addnodes.index))):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # move the index node next to the section title
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- node.remove(index)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- node.parent.insert(i + 1, index)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/sphinx/domains/index.py b/sphinx/domains/index.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 4a91d6ad1..ba4ba4515 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/sphinx/domains/index.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/sphinx/domains/index.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -48,7 +48,7 @@ class IndexDomain(Domain):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def process_doc(self, env: BuildEnvironment, docname: str, document: Node) -> None:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- """Process a document after it is read by the environment."""
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- entries = self.entries.setdefault(env.docname, [])
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- for node in document.traverse(addnodes.index):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ for node in list(document.traverse(addnodes.index)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- try:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- for entry in node['entries']:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- split_index_msg(entry[0], entry[1])
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/sphinx/domains/python.py b/sphinx/domains/python.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 552742bb8..baae1b819 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/sphinx/domains/python.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/sphinx/domains/python.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -287,7 +287,7 @@ class PyXrefMixin:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- text = target[1:]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- elif prefix == '~':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- text = target.split('.')[-1]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- for node in result.traverse(nodes.Text):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ for node in list(result.traverse(nodes.Text)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- node.parent[node.parent.index(node)] = nodes.Text(text)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- break
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return result
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/sphinx/environment/adapters/toctree.py b/sphinx/environment/adapters/toctree.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index f0a37ab7f..49454be0f 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/sphinx/environment/adapters/toctree.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/sphinx/environment/adapters/toctree.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -194,13 +194,13 @@ class TocTree:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- for toplevel in children:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # nodes with length 1 don't have any children anyway
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if len(toplevel) > 1:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- subtrees = toplevel.traverse(addnodes.toctree)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ subtrees = list(toplevel.traverse(addnodes.toctree))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if subtrees:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- toplevel[1][:] = subtrees # type: ignore
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- else:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- toplevel.pop(1)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # resolve all sub-toctrees
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- for subtocnode in toc.traverse(addnodes.toctree):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ for subtocnode in list(toc.traverse(addnodes.toctree)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if not (subtocnode.get('hidden', False) and
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- not includehidden):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- i = subtocnode.parent.index(subtocnode) + 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/sphinx/ext/autosummary/__init__.py b/sphinx/ext/autosummary/__init__.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index b268127d0..a71f1b6ac 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/sphinx/ext/autosummary/__init__.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/sphinx/ext/autosummary/__init__.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -564,7 +564,7 @@ def extract_summary(doc: List[str], document: Any) -> str:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- node = parse(doc, document.settings)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if summary.endswith(WELL_KNOWN_ABBREVIATIONS):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- pass
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- elif not node.traverse(nodes.system_message):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ elif not list(node.traverse(nodes.system_message)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # considered as that splitting by period does not break inline markups
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- break
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/sphinx/ext/linkcode.py b/sphinx/ext/linkcode.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 5c118a9fb..495bb5073 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/sphinx/ext/linkcode.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/sphinx/ext/linkcode.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -39,7 +39,7 @@ def doctree_read(app: Sphinx, doctree: Node) -> None:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 'js': ['object', 'fullname'],
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- for objnode in doctree.traverse(addnodes.desc):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ for objnode in list(doctree.traverse(addnodes.desc)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- domain = objnode.get('domain')
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- uris = set() # type: Set[str]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- for signode in objnode:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/sphinx/ext/todo.py b/sphinx/ext/todo.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index a73dea84d..16d157164 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/sphinx/ext/todo.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/sphinx/ext/todo.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -160,7 +160,7 @@ class TodoListProcessor:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def process(self, doctree: nodes.document, docname: str) -> None:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- todos = sum(self.domain.todos.values(), []) # type: List[todo_node]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- for node in doctree.traverse(todolist):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ for node in list(doctree.traverse(todolist)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if not self.config.todo_include_todos:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- node.parent.remove(node)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- continue
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/sphinx/ext/viewcode.py b/sphinx/ext/viewcode.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 6bedf2e1c..d2341810c 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/sphinx/ext/viewcode.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/sphinx/ext/viewcode.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -108,7 +108,7 @@ def doctree_read(app: Sphinx, doctree: Node) -> None:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return False
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- for objnode in doctree.traverse(addnodes.desc):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ for objnode in list(doctree.traverse(addnodes.desc)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if objnode.get('domain') != 'py':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- continue
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- names = set() # type: Set[str]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -183,7 +183,7 @@ class ViewcodeAnchorTransform(SphinxPostTransform):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- node.replace_self(refnode)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def remove_viewcode_anchors(self) -> None:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- for node in self.document.traverse(viewcode_anchor):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ for node in list(self.document.traverse(viewcode_anchor)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- node.parent.remove(node)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/sphinx/transforms/__init__.py b/sphinx/transforms/__init__.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 45640308f..4512053c7 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/sphinx/transforms/__init__.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/sphinx/transforms/__init__.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -128,7 +128,7 @@ class MoveModuleTargets(SphinxTransform):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- default_priority = 210
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def apply(self, **kwargs: Any) -> None:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- for node in self.document.traverse(nodes.target):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ for node in list(self.document.traverse(nodes.target)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if not node['ids']:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- continue
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if ('ismod' in node and
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -298,7 +298,7 @@ class FilterSystemMessages(SphinxTransform):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def apply(self, **kwargs: Any) -> None:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- filterlevel = 2 if self.config.keep_warnings else 5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- for node in self.document.traverse(nodes.system_message):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ for node in list(self.document.traverse(nodes.system_message)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if node['level'] < filterlevel:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- logger.debug('%s [filtered system message]', node.astext())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- node.parent.remove(node)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/sphinx/transforms/i18n.py b/sphinx/transforms/i18n.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index a345b819d..ccc14c23f 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/sphinx/transforms/i18n.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/sphinx/transforms/i18n.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -486,7 +486,7 @@ class RemoveTranslatableInline(SphinxTransform):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- matcher = NodeMatcher(nodes.inline, translatable=Any)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- for inline in self.document.traverse(matcher): # type: nodes.inline
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ for inline in list(self.document.traverse(matcher)): # type: nodes.inline
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- inline.parent.remove(inline)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- inline.parent += inline.children
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/sphinx/transforms/post_transforms/code.py b/sphinx/transforms/post_transforms/code.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 20df1db3c..59fa115e5 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/sphinx/transforms/post_transforms/code.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/sphinx/transforms/post_transforms/code.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -40,7 +40,7 @@ class HighlightLanguageTransform(SphinxTransform):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.config.highlight_language)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.document.walkabout(visitor)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- for node in self.document.traverse(addnodes.highlightlang):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ for node in list(self.document.traverse(addnodes.highlightlang)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- node.parent.remove(node)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/sphinx/util/nodes.py b/sphinx/util/nodes.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index d5e43e716..06af8bedd 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/sphinx/util/nodes.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/sphinx/util/nodes.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -349,7 +349,7 @@ def clean_astext(node: Element) -> str:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- node = node.deepcopy()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- for img in node.traverse(nodes.image):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- img['alt'] = ''
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- for raw in node.traverse(nodes.raw):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ for raw in list(node.traverse(nodes.raw)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- raw.parent.remove(raw)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return node.astext()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -413,7 +413,7 @@ def inline_all_toctrees(builder: "Builder", docnameset: Set[str], docname: str,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Record all docnames in *docnameset*, and output docnames with *colorfunc*.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- """
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- tree = cast(nodes.document, tree.deepcopy())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- for toctreenode in tree.traverse(addnodes.toctree):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ for toctreenode in list(tree.traverse(addnodes.toctree)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- newnodes = []
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- includefiles = map(str, toctreenode['includefiles'])
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- for includefile in includefiles:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 4dd8eedd3..b0878efe5 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/sphinx/writers/latex.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/sphinx/writers/latex.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -658,7 +658,7 @@ class LaTeXTranslator(SphinxTranslator):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- raise nodes.SkipNode
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- else:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- short = ''
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if node.traverse(nodes.image):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if list(node.traverse(nodes.image)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- short = ('[%s]' % self.escape(' '.join(clean_astext(node).split())))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- try:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/sphinx/writers/manpage.py b/sphinx/writers/manpage.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 9ef429ba3..e2d3f3b38 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/sphinx/writers/manpage.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/sphinx/writers/manpage.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -58,7 +58,7 @@ class NestedInlineTransform:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def apply(self, **kwargs: Any) -> None:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- matcher = NodeMatcher(nodes.literal, nodes.emphasis, nodes.strong)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- for node in self.document.traverse(matcher): # type: TextElement
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ for node in list(self.document.traverse(matcher)): # type: TextElement
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if any(matcher(subnode) for subnode in node):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- pos = node.parent.index(node)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- for subnode in reversed(node[1:]):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -214,7 +214,7 @@ class ManualPageTranslator(SphinxTranslator, BaseTranslator):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # overwritten -- don't make whole of term bold if it includes strong node
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def visit_term(self, node: Element) -> None:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if node.traverse(nodes.strong):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if list(node.traverse(nodes.strong)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.body.append('\n')
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- else:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- super().visit_term(node)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-2.33.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From ae4a354aadb5782733cd87bd4cddd430e44b34a7 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Takeshi KOMIYA <i.tkomiya@gmail.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Sun, 31 Oct 2021 01:33:16 +0900
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH 6/6] Support docutils-0.18: Consume generator of
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Element.traverse()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-The last fix in i18n module was incorrect because it compares the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-"already consumed" generators. It should compares the lists of nodes.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sphinx/transforms/i18n.py | 18 +++++++++---------
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1 file changed, 9 insertions(+), 9 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/sphinx/transforms/i18n.py b/sphinx/transforms/i18n.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index ccc14c23f..ffb316126 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/sphinx/transforms/i18n.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/sphinx/transforms/i18n.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -297,7 +297,7 @@ class Locale(SphinxTransform):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- is_autofootnote_ref = NodeMatcher(nodes.footnote_reference, auto=Any)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- old_foot_refs = node.traverse(is_autofootnote_ref) # type: List[nodes.footnote_reference] # NOQA
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- new_foot_refs = patch.traverse(is_autofootnote_ref) # type: List[nodes.footnote_reference] # NOQA
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if len(list(old_foot_refs)) != len(list(new_foot_refs)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if len(old_foot_refs) != len(new_foot_refs):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- old_foot_ref_rawsources = [ref.rawsource for ref in old_foot_refs]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- new_foot_ref_rawsources = [ref.rawsource for ref in new_foot_refs]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- logger.warning(__('inconsistent footnote references in translated message.' +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -340,7 +340,7 @@ class Locale(SphinxTransform):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- is_refnamed_ref = NodeMatcher(nodes.reference, refname=Any)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- old_refs = node.traverse(is_refnamed_ref) # type: List[nodes.reference]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- new_refs = patch.traverse(is_refnamed_ref) # type: List[nodes.reference]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if len(list(old_refs)) != len(list(new_refs)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if len(old_refs) != len(new_refs):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- old_ref_rawsources = [ref.rawsource for ref in old_refs]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- new_ref_rawsources = [ref.rawsource for ref in new_refs]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- logger.warning(__('inconsistent references in translated message.' +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -368,7 +368,7 @@ class Locale(SphinxTransform):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- old_foot_refs = node.traverse(is_refnamed_footnote_ref)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- new_foot_refs = patch.traverse(is_refnamed_footnote_ref)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- refname_ids_map = {} # type: Dict[str, List[str]]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if len(list(old_foot_refs)) != len(list(new_foot_refs)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if len(old_foot_refs) != len(new_foot_refs):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- old_foot_ref_rawsources = [ref.rawsource for ref in old_foot_refs]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- new_foot_ref_rawsources = [ref.rawsource for ref in new_foot_refs]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- logger.warning(__('inconsistent footnote references in translated message.' +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -384,10 +384,10 @@ class Locale(SphinxTransform):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # citation should use original 'ids'.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- is_citation_ref = NodeMatcher(nodes.citation_reference, refname=Any)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- old_cite_refs = node.traverse(is_citation_ref) # type: List[nodes.citation_reference] # NOQA
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- new_cite_refs = patch.traverse(is_citation_ref) # type: List[nodes.citation_reference] # NOQA
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ old_cite_refs = list(node.traverse(is_citation_ref)) # type: List[nodes.citation_reference] # NOQA
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ new_cite_refs = list(patch.traverse(is_citation_ref)) # type: List[nodes.citation_reference] # NOQA
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- refname_ids_map = {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if len(list(old_cite_refs)) != len(list(new_cite_refs)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if len(old_cite_refs) != len(new_cite_refs):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- old_cite_ref_rawsources = [ref.rawsource for ref in old_cite_refs]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- new_cite_ref_rawsources = [ref.rawsource for ref in new_cite_refs]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- logger.warning(__('inconsistent citation references in translated message.' +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -404,10 +404,10 @@ class Locale(SphinxTransform):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Original pending_xref['reftarget'] contain not-translated
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # target name, new pending_xref must use original one.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # This code restricts to change ref-targets in the translation.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- old_xrefs = node.traverse(addnodes.pending_xref)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- new_xrefs = patch.traverse(addnodes.pending_xref)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ old_xrefs = list(node.traverse(addnodes.pending_xref))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ new_xrefs = list(patch.traverse(addnodes.pending_xref))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- xref_reftarget_map = {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if len(list(old_xrefs)) != len(list(new_xrefs)):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if len(old_xrefs) != len(new_xrefs):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- old_xref_rawsources = [xref.rawsource for xref in old_xrefs]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- new_xref_rawsources = [xref.rawsource for xref in new_xrefs]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- logger.warning(__('inconsistent term references in translated message.' +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-2.33.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-sphinx/files/py34-sphinx b/python/py-sphinx/files/py34-sphinx
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0e2f6a63894..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-sphinx/files/py34-sphinx
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,4 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-${frameworks_dir}/Python.framework/Versions/3.4/bin/sphinx-apidoc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-${frameworks_dir}/Python.framework/Versions/3.4/bin/sphinx-quickstart
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-${frameworks_dir}/Python.framework/Versions/3.4/bin/sphinx-autogen
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-${frameworks_dir}/Python.framework/Versions/3.4/bin/sphinx-build
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-sphinx/files/py35-sphinx b/python/py-sphinx/files/py35-sphinx
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index c6bead7e161..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-sphinx/files/py35-sphinx
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,4 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-${frameworks_dir}/Python.framework/Versions/3.5/bin/sphinx-apidoc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-${frameworks_dir}/Python.framework/Versions/3.5/bin/sphinx-quickstart
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-${frameworks_dir}/Python.framework/Versions/3.5/bin/sphinx-autogen
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-${frameworks_dir}/Python.framework/Versions/3.5/bin/sphinx-build
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-sphinxcontrib-devhelp/Portfile b/python/py-sphinxcontrib-devhelp/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index eef82b58a48..7d8ffcda79a 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-sphinxcontrib-devhelp/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-sphinxcontrib-devhelp/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -16,18 +16,15 @@ description sphinx extension which outputs Devhelp document
</span> long_description sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document.
homepage http://sphinx-doc.org/
<span style='display:block; white-space:pre;background:#ffe0e0;'>-master_sites pypi:s/sphinxcontrib-devhelp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-distname sphinxcontrib-devhelp-${version}
</span>
checksums rmd160 10ab655ca874f228604f17c7cd521f0bcb1f446f \
sha256 ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4 \
size 17398
<span style='display:block; white-space:pre;background:#ffe0e0;'>-python.versions 35 36 37 38 39 310 311
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+python.versions 36 37 38 39 310 311
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+python.pep517 yes
</span>
if {${name} ne ${subport}} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- depends_build-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- port:py${python.version}-setuptools
</span> depends_run-append \
port:py${python.version}-docutils
livecheck.type none
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-sphinxcontrib-jsmath/Portfile b/python/py-sphinxcontrib-jsmath/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 62891376b6f..bbf0628a09d 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-sphinxcontrib-jsmath/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-sphinxcontrib-jsmath/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -16,18 +16,15 @@ description sphinx extension which renders display math in HTML via Java
</span> long_description sphinxcontrib-jsmath is a sphinx extension which renders display math in HTML via JavaScript.
homepage http://sphinx-doc.org/
<span style='display:block; white-space:pre;background:#ffe0e0;'>-master_sites pypi:s/sphinxcontrib-jsmath
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-distname sphinxcontrib-jsmath-${version}
</span>
checksums rmd160 9ff064c88f8f121bd7876ae3f79b4c31f5a9264f \
sha256 a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8 \
size 5787
<span style='display:block; white-space:pre;background:#ffe0e0;'>-python.versions 35 36 37 38 39 310 311
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+python.versions 36 37 38 39 310 311
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+python.pep517 yes
</span>
if {${name} ne ${subport}} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- depends_build-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- port:py${python.version}-setuptools
</span> depends_run-append \
port:py${python.version}-docutils
livecheck.type none
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-sphinxcontrib-qthelp/Portfile b/python/py-sphinxcontrib-qthelp/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 93837293e21..2e945539f1e 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-sphinxcontrib-qthelp/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-sphinxcontrib-qthelp/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -16,18 +16,15 @@ description sphinx extension which outputs QtHelp document
</span> long_description sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document.
homepage http://sphinx-doc.org/
<span style='display:block; white-space:pre;background:#ffe0e0;'>-master_sites pypi:s/sphinxcontrib-qthelp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-distname sphinxcontrib-qthelp-${version}
</span>
checksums rmd160 b41a6b415c5653b0828009bcd73b18823d3cc1b8 \
sha256 4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72 \
size 21658
<span style='display:block; white-space:pre;background:#ffe0e0;'>-python.versions 35 36 37 38 39 310 311
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+python.versions 36 37 38 39 310 311
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+python.pep517 yes
</span>
if {${name} ne ${subport}} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- depends_build-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- port:py${python.version}-setuptools
</span> depends_run-append \
port:py${python.version}-docutils
livecheck.type none
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-sphinxcontrib-serializinghtml/Portfile b/python/py-sphinxcontrib-serializinghtml/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 60d93625ef6..8e7eecbd4db 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-sphinxcontrib-serializinghtml/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-sphinxcontrib-serializinghtml/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -22,10 +22,5 @@ checksums rmd160 c8e1910f916f8d07d5e87bc433c964634146773f \
</span> sha256 aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952 \
size 21019
<span style='display:block; white-space:pre;background:#ffe0e0;'>-python.versions 35 36 37 38 39 310 311
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if {${name} ne ${subport}} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- depends_build-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- port:py${python.version}-setuptools
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- livecheck.type none
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+python.versions 36 37 38 39 310 311
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+python.pep517 yes
</span></pre><pre style='margin:0'>
</pre>