summaryrefslogtreecommitdiff
path: root/docutils
diff options
context:
space:
mode:
authormilde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2019-12-23 10:21:19 +0000
committermilde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2019-12-23 10:21:19 +0000
commit9d01f14e3e6e5b2056e7d7f41372cdde80bc8b10 (patch)
tree62476c0d85529c6b0a43c51028b023f37bfd5080 /docutils
parente96e2a66f4d53bd44e26a6ad2109f8c7177987cd (diff)
downloaddocutils-9d01f14e3e6e5b2056e7d7f41372cdde80bc8b10.tar.gz
Extend _traversal_list auxiliary class.
The return value of node.traverse will change to an iterator in future. The auxiliary class giving a FutureWarning was missing functions used in Sphinx < 2.3.0. git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8445 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
Diffstat (limited to 'docutils')
-rw-r--r--docutils/docutils/nodes.py45
1 files changed, 38 insertions, 7 deletions
diff --git a/docutils/docutils/nodes.py b/docutils/docutils/nodes.py
index 164126a1b..2e84c74cf 100644
--- a/docutils/docutils/nodes.py
+++ b/docutils/docutils/nodes.py
@@ -37,17 +37,14 @@ if sys.version_info >= (3, 0):
class _traversal_list():
# auxiliary class to report a FutureWarning
+ msg = ("\n The iterable returned by Node.traverse()"
+ "\n will become an iterator instead of a list in "
+ "Docutils > 0.16.")
def __init__(self, iterable):
self.nodes = list(iterable)
- def __getattr__(self, name):
- msg = ("The iterable returned by Node.traverse()\n "
- "will become an iterator instead of a list in "
- "Docutils > 0.16.")
- warnings.warn(msg, FutureWarning, stacklevel=2)
- return getattr(self.nodes, name)
-
+ # iterating is not affected from the future change:
def __iter__(self):
return iter(self.nodes)
@@ -55,6 +52,40 @@ class _traversal_list():
# used in Python 2.7 when typecasting to `list` or `tuple`
return len(self.nodes)
+ # other methods give a FutureWarning:
+
+ def __getattr__(self, name):
+ warnings.warn(self.msg, FutureWarning, stacklevel=2)
+ return getattr(self.nodes, name)
+
+ def __getitem__(self, i):
+ warnings.warn(self.msg, FutureWarning, stacklevel=2)
+ return self.nodes[i]
+
+ def __getslice__(self, i, j):
+ warnings.warn(self.msg, FutureWarning, stacklevel=2)
+ return self.nodes[i:j]
+
+ def __reversed__(self):
+ warnings.warn(self.msg, FutureWarning, stacklevel=2)
+ return self.nodes.__reversed__()
+
+ def append(self, object):
+ warnings.warn(self.msg, FutureWarning, stacklevel=2)
+ return self.nodes.append(object)
+
+ def extend(self, iterable):
+ warnings.warn(self.msg, FutureWarning, stacklevel=2)
+ return self.nodes.extend(iterable)
+
+ def pop(self):
+ warnings.warn(self.msg, FutureWarning, stacklevel=2)
+ return self.nodes.pop()
+
+ def reverse(self):
+ warnings.warn(self.msg, FutureWarning, stacklevel=2)
+ return self.nodes.reverse()
+
# ==============================
# Functional Node Base Classes