<pre style='margin:0'>
Christopher Nielsen (mascguy) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/ebe02cae9dab3d68ac6f69c53d3df124b7922b84">https://github.com/macports/macports-ports/commit/ebe02cae9dab3d68ac6f69c53d3df124b7922b84</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new ebe02cae9da py-docutils: add commit r8555 to address various usage issues
</span>ebe02cae9da is described below

<span style='display:block; white-space:pre;color:#808000;'>commit ebe02cae9dab3d68ac6f69c53d3df124b7922b84
</span>Author: Michael Dickens <michaelld@macports.org>
AuthorDate: Thu Nov 11 14:13:26 2021 -0500

<span style='display:block; white-space:pre;color:#404040;'>    py-docutils: add commit r8555 to address various usage issues
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Closes: https://trac.macports.org/ticket/63765
</span><span style='display:block; white-space:pre;color:#404040;'>    Closes: https://trac.macports.org/ticket/63739
</span><span style='display:block; white-space:pre;color:#404040;'>    Closes: https://trac.macports.org/ticket/63727
</span>---
 python/py-docutils/Portfile                     |   4 +
 python/py-docutils/files/patch-commit-8885.diff | 448 ++++++++++++++++++++++++
 2 files changed, 452 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-docutils/Portfile b/python/py-docutils/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index bf0bd67190f..a04492fdbf8 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-docutils/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-docutils/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -6,6 +6,7 @@ PortGroup           select 1.0
</span> 
 name                py-docutils
 version             0.18
<span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            1
</span> categories-append   textproc
 license             public-domain BSD PSF-2.1.1
 maintainers         {jmr @jmroot} alexnicksay.com:alex openmaintainer
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -35,6 +36,9 @@ if {$subport ne $name} {
</span>         copy -force ${filespath}/docutils ${worksrcpath}/${subport}
     }
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles-append patch-commit-8885.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patch.pre_args -p1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span>     post-patch {
         reinplace \
             "s,@PYTHON_BRANCH@,${python.branch},g" \
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-docutils/files/patch-commit-8885.diff b/python/py-docutils/files/patch-commit-8885.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..ee3cdfb3dfe
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-docutils/files/patch-commit-8885.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,448 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/docutils/nodes.py b/docutils/nodes.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 720caef..454ae7d 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/docutils/nodes.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/docutils/nodes.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -212,39 +212,57 @@ class Node(object):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             visitor.dispatch_departure(self)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         return stop
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    def _fast_traverse(self, cls):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    def _fast_findall(self, cls):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """Return iterator that only supports instance checks."""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if isinstance(self, cls):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             yield self
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         for child in self.children:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            for subnode in child._fast_traverse(cls):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            for subnode in child._fast_findall(cls):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 yield subnode
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    def _all_traverse(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    def _superfast_findall(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """Return iterator that doesn't check for a condition."""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        # This is different from ``iter(self)`` implemented via
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        # __getitem__() and __len__() in the Element subclass,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        # which yields only the direct children.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         yield self
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         for child in self.children:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            for subnode in child._all_traverse():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            for subnode in child._superfast_findall():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 yield subnode
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def traverse(self, condition=None, include_self=True, descend=True,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                  siblings=False, ascend=False):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        """Return list of nodes following `self`.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        For looping, Node.findall() is faster and more memory efficient.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        """
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        # traverse() may be eventually removed:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        warnings.warn('nodes.Node.traverse() is obsoleted by Node.findall().',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                      PendingDeprecationWarning, stacklevel=2)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return list(self.findall(condition, include_self, descend,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                 siblings, ascend))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    def findall(self, condition=None, include_self=True, descend=True,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                siblings=False, ascend=False):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        Return an iterator yielding
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        Return an iterator yielding nodes following `self`.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        * self (if include_self is true)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        * all descendants in tree traversal order (if descend is true)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        * all siblings (if siblings is true) and their descendants (if
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          also descend is true)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        * the siblings of the parent (if ascend is true) and their
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          descendants (if also descend is true), and so on
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        * self (if `include_self` is true)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        * all descendants in tree traversal order (if `descend` is true)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        * all siblings (if `siblings` is true) and their descendants (if
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          also `descend` is true)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        * the siblings of the parent (if `ascend` is true) and their
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          descendants (if also `descend` is true), and so on
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         If `condition` is not None, the iterator yields only nodes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         for which ``condition(node)`` is true.  If `condition` is a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         node class ``cls``, it is equivalent to a function consisting
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         of ``return isinstance(node, cls)``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        If ascend is true, assume siblings to be true as well.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        If `ascend` is true, assume `siblings` to be true as well.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        To allow processing of the return value or modification while
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        iterating, wrap calls to findall() in a ``tuple()`` or ``list()``.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         For example, given the following tree::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -256,26 +274,25 @@ class Node(object):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 <reference name="Baz" refid="baz">
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     Baz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        Then list(emphasis.traverse()) equals ::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        Then tuple(emphasis.traverse()) equals ::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            [<emphasis>, <strong>, <#text: Foo>, <#text: Bar>]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            (<emphasis>, <strong>, <#text: Foo>, <#text: Bar>)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        and list(strong.traverse(ascend=True)) equals ::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        and list(strong.traverse(ascend=True) equals ::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             [<strong>, <#text: Foo>, <#text: Bar>, <reference>, <#text: Baz>]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if ascend:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             siblings=True
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # Check for special argument combinations that allow using an
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # optimized version of traverse()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if include_self and descend and not siblings:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if condition is None:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                for subnode in self._all_traverse():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                for subnode in self._superfast_findall():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     yield subnode
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 return
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             elif isinstance(condition, type):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                for subnode in self._fast_traverse(condition):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                for subnode in self._fast_findall(condition):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     yield subnode
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 return
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # Check if `condition` is a class (check for TypeType for Python
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -290,7 +307,7 @@ class Node(object):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             yield self
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if descend and len(self.children):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             for child in self:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                for subnode in child.traverse(condition=condition,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                for subnode in child.findall(condition=condition,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                     include_self=True, descend=True,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                     siblings=False, ascend=False):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     yield subnode
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -299,7 +316,7 @@ class Node(object):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             while node.parent:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 index = node.parent.index(node)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 for sibling in node.parent[index+1:]:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                    for subnode in sibling.traverse(condition=condition,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                    for subnode in sibling.findall(condition=condition,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                         include_self=True, descend=descend,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                         siblings=False, ascend=False):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                         yield subnode
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -311,16 +328,15 @@ class Node(object):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def next_node(self, condition=None, include_self=False, descend=True,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   siblings=False, ascend=False):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        Return the first node in the iterator returned by traverse(),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        Return the first node in the iterator returned by findall(),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         or None if the iterable is empty.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        Parameter list is the same as of traverse.  Note that
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        include_self defaults to False, though.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        Parameter list is the same as of traverse.  Note that `include_self`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        defaults to False, though.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        node_iterator = self.traverse(condition, include_self,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                                      descend, siblings, ascend)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            return next(node_iterator)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            return next(self.findall(condition, include_self,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                     descend, siblings, ascend))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         except StopIteration:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             return None
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -469,6 +485,11 @@ class Element(Node):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         element[0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    to iterate over the child nodes (without descending), use::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        for child in element:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            ...
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     Elements may be constructed using the ``+=`` operator.  To add one new
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     child node to element, do::
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/docutils/parsers/recommonmark_wrapper.py b/docutils/parsers/recommonmark_wrapper.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 218642b..73f76de 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/docutils/parsers/recommonmark_wrapper.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/docutils/parsers/recommonmark_wrapper.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -78,7 +78,7 @@ if CommonMarkParser:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             # ---------------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             # merge adjoining Text nodes:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            for node in document.traverse(nodes.TextElement):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            for node in document.findall(nodes.TextElement):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 children = node.children
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 i = 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 while i+1 < len(children):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -89,18 +89,18 @@ if CommonMarkParser:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                         i += 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            # add "code" class argument to inline literal (code spans)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            for node in document.traverse(lambda n: isinstance(n,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            # add "code" class argument to literal elements (inline and block)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            for node in document.findall(lambda n: isinstance(n,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                     (nodes.literal, nodes.literal_block))):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 node['classes'].append('code')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             # move "language" argument to classes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            for node in document.traverse(nodes.literal_block):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            for node in document.findall(nodes.literal_block):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 if 'language' in node.attributes:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     node['classes'].append(node['language'])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     del node['language']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             # remove empty target nodes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            for node in list(document.traverse(nodes.target)):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            for node in list(document.findall(nodes.target)):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 # remove empty name
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 node['names'] = [v for v in node['names'] if v]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 if node.children or [v for v in node.attributes.values() if v]:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -109,12 +109,12 @@ if CommonMarkParser:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             # replace raw nodes if raw is not allowed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if not document.settings.raw_enabled:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                for node in document.traverse(nodes.raw):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                for node in document.findall(nodes.raw):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     warning = document.reporter.warning('Raw content disabled.')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     node.parent.replace(node, warning)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             # fix section nodes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            for node in document.traverse(nodes.section):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            for node in document.findall(nodes.section):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 # remove spurious IDs (first may be from duplicate name)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 if len(node['ids']) > 1:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     node['ids'].pop()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -132,7 +132,7 @@ if CommonMarkParser:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                         del node['level']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             # drop pending_xref (Sphinx cross reference extension)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            for node in document.traverse(addnodes.pending_xref):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            for node in document.findall(addnodes.pending_xref):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 reference = node.children[0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 if 'name' not in reference:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     reference['name'] = nodes.fully_normalize_name(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/docutils/parsers/rst/states.py b/docutils/parsers/rst/states.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 02482b2..2103261 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/docutils/parsers/rst/states.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/docutils/parsers/rst/states.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2064,7 +2064,7 @@ class Body(RSTState):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 del substitution_node[i]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 i += 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        for node in substitution_node.traverse(nodes.Element):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        for node in substitution_node.findall(nodes.Element):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if self.disallowed_inside_substitution_definitions(node):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 pformat = nodes.literal_block('', node.pformat().rstrip())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 msg = self.reporter.error(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/docutils/transforms/frontmatter.py b/docutils/transforms/frontmatter.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 28fc20b..b3fc7bd 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/docutils/transforms/frontmatter.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/docutils/transforms/frontmatter.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -281,10 +281,10 @@ class SectionSubTitle(TitlePromoter):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def apply(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if not self.document.settings.setdefault('sectsubtitle_xform', True):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             return
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        for section in self.document.traverse(nodes.section):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        for section in self.document.findall(nodes.section):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             # On our way through the node tree, we are modifying it
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             # but only the not-yet-visited part, so that the iterator
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            # returned by traverse() is not corrupted.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            # returned by findall() is not corrupted.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             self.promote_subtitle(section)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -513,7 +513,7 @@ class DocInfo(Transform):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # @@ keep original formatting? (e.g. ``:authors: A. Test, *et-al*``)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         text = ''.join(unicode(node)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                       for node in field[1].traverse(nodes.Text))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                       for node in field[1].findall(nodes.Text))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if not text:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             raise TransformError
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         for authorsep in self.language.author_separators:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/docutils/transforms/misc.py b/docutils/transforms/misc.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index cd68ee1..3e92325 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/docutils/transforms/misc.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/docutils/transforms/misc.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -94,7 +94,7 @@ class Transitions(Transform):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     default_priority = 830
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def apply(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        for node in self.document.traverse(nodes.transition):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        for node in self.document.findall(nodes.transition):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             self.visit_transition(node)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def visit_transition(self, node):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/docutils/transforms/references.py b/docutils/transforms/references.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index b0f4bc0..7aafa86 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/docutils/transforms/references.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/docutils/transforms/references.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -41,7 +41,7 @@ class PropagateTargets(Transform):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     default_priority = 260
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def apply(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        for target in self.document.traverse(nodes.target):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        for target in self.document.findall(nodes.target):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             # Only block-level targets without reference (like ".. _target:"):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if (isinstance(target.parent, nodes.TextElement) or
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 (target.hasattr('refid') or target.hasattr('refuri') or
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -118,10 +118,10 @@ class AnonymousHyperlinks(Transform):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def apply(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         anonymous_refs = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         anonymous_targets = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        for node in self.document.traverse(nodes.reference):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        for node in self.document.findall(nodes.reference):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if node.get('anonymous'):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 anonymous_refs.append(node)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        for node in self.document.traverse(nodes.target):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        for node in self.document.findall(nodes.target):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if node.get('anonymous'):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 anonymous_targets.append(node)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if len(anonymous_refs) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -354,7 +354,7 @@ class ExternalTargets(Transform):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     default_priority = 640
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def apply(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        for target in self.document.traverse(nodes.target):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        for target in self.document.findall(nodes.target):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if target.hasattr('refuri'):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 refuri = target['refuri']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 for name in target['names']:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -374,7 +374,7 @@ class InternalTargets(Transform):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     default_priority = 660
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def apply(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        for target in self.document.traverse(nodes.target):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        for target in self.document.findall(nodes.target):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if not target.hasattr('refuri') and not target.hasattr('refid'):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 self.resolve_reference_ids(target)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -671,7 +671,7 @@ class Substitutions(Transform):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         line_length_limit = getattr(self.document.settings,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                     "line_length_limit", 10000)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        subreflist = list(self.document.traverse(nodes.substitution_reference))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        subreflist = list(self.document.findall(nodes.substitution_reference))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         for ref in subreflist:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             msg = ''
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             refname = ref['refname']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -714,7 +714,7 @@ class Substitutions(Transform):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             subdef_copy = subdef.deepcopy()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 # Take care of nested substitution references:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                for nested_ref in subdef_copy.traverse(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                for nested_ref in subdef_copy.findall(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                         nodes.substitution_reference):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     nested_name = normed[nested_ref['refname'].lower()]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     if nested_name in nested.setdefault(nested_name, []):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -777,7 +777,7 @@ class TargetNotes(Transform):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def apply(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         notes = {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         nodelist = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        for target in self.document.traverse(nodes.target):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        for target in self.document.findall(nodes.target):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             # Only external targets.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if not target.hasattr('refuri'):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 continue
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -793,7 +793,7 @@ class TargetNotes(Transform):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 notes[target['refuri']] = footnote
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 nodelist.append(footnote)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # Take care of anonymous references.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        for ref in self.document.traverse(nodes.reference):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        for ref in self.document.findall(nodes.reference):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if not ref.get('anonymous'):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 continue
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if ref.hasattr('refuri'):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -856,7 +856,7 @@ class DanglingReferences(Transform):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         self.document.walk(visitor)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # *After* resolving all references, check for unreferenced
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # targets:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        for target in self.document.traverse(nodes.target):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        for target in self.document.findall(nodes.target):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if not target.referenced:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 if target.get('anonymous'):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     # If we have unreferenced anonymous targets, there
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/docutils/transforms/universal.py b/docutils/transforms/universal.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index f81a434..976bbbe 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/docutils/transforms/universal.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/docutils/transforms/universal.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -108,7 +108,7 @@ class ExposeInternals(Transform):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def apply(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if self.document.settings.expose_internals:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            for node in self.document.traverse(self.not_Text):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            for node in self.document.findall(self.not_Text):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 for att in self.document.settings.expose_internals:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     value = getattr(node, att, None)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     if value is not None:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -149,7 +149,7 @@ class FilterMessages(Transform):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     default_priority = 870
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def apply(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        for node in tuple(self.document.traverse(nodes.system_message)):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        for node in tuple(self.document.findall(nodes.system_message)):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if node['level'] < self.document.reporter.report_level:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 node.parent.remove(node)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -181,7 +181,7 @@ class StripComments(Transform):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def apply(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if self.document.settings.strip_comments:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            for node in tuple(self.document.traverse(nodes.comment)):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            for node in tuple(self.document.findall(nodes.comment)):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 node.parent.remove(node)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -200,14 +200,14 @@ class StripClassesAndElements(Transform):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             self.strip_elements = set(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 self.document.settings.strip_elements_with_classes)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             # Iterate over a tuple as removing the current node
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            # corrupts the iterator returned by `traverse`:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            for node in tuple(self.document.traverse(self.check_classes)):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            # corrupts the iterator returned by `iter`:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            for node in tuple(self.document.findall(self.check_classes)):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 node.parent.remove(node)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if not self.document.settings.strip_classes:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             return
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         strip_classes = self.document.settings.strip_classes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        for node in self.document.traverse(nodes.Element):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        for node in self.document.findall(nodes.Element):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             for class_value in strip_classes:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     node['classes'].remove(class_value)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -282,7 +282,7 @@ class SmartQuotes(Transform):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # "Educate" quotes in normal text. Handle each block of text
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # (TextElement node) as a unit to keep context around inline nodes:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        for node in self.document.traverse(nodes.TextElement):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        for node in self.document.findall(nodes.TextElement):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             # skip preformatted text blocks and special elements:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if isinstance(node, self.nodes_to_skip):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 continue
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -291,7 +291,7 @@ class SmartQuotes(Transform):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 continue
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             # list of text nodes in the "text block":
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            txtnodes = [txtnode for txtnode in node.traverse(nodes.Text)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            txtnodes = [txtnode for txtnode in node.findall(nodes.Text)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                         if not isinstance(txtnode.parent,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                           nodes.option_string)]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/docutils/transforms/writer_aux.py b/docutils/transforms/writer_aux.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c5818d9..4489361 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/docutils/transforms/writer_aux.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/docutils/transforms/writer_aux.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -38,7 +38,7 @@ class Compound(Transform):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     default_priority = 910
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def apply(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        for compound in self.document.traverse(nodes.compound):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        for compound in self.document.findall(nodes.compound):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             first_child = True
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             for child in compound:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 if first_child:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -75,7 +75,7 @@ class Admonitions(Transform):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def apply(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         language = languages.get_language(self.document.settings.language_code,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                           self.document.reporter)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        for node in self.document.traverse(nodes.Admonition):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        for node in self.document.findall(nodes.Admonition):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             node_name = node.__class__.__name__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             # Set class, so that we know what node this admonition came from.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             node['classes'].append(node_name)
</span></pre><pre style='margin:0'>

</pre>