From ecb394a9780e38a643ad3b0cc61ee3d8978ab28f Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Tue, 25 May 2010 01:05:36 +0200 Subject: [PATCH] Monkey-patch Node.__contains__ to get consistent behavior for docutils 0.5 and 0.6. --- sphinx/util/nodes.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/sphinx/util/nodes.py b/sphinx/util/nodes.py index a4033947a..82427f134 100644 --- a/sphinx/util/nodes.py +++ b/sphinx/util/nodes.py @@ -124,3 +124,15 @@ nodes.Node._old_traverse = nodes.Node.traverse nodes.Node._all_traverse = _all_traverse nodes.Node._fast_traverse = _fast_traverse nodes.Node.traverse = _new_traverse + +# monkey-patch Node.__contains__ to get consistent "in" operator behavior +# across docutils versions + +def _new_contains(self, key): + # support both membership test for children and attributes + # (has_key is translated to "in" by 2to3) + if isinstance(key, basestring): + return key in self.attributes + return key in self.children + +nodes.Node.__contains__ = _new_contains