Added Sequence.__contains__ so that we test nodes by identity rather than by value.
authorFrederic Jolliton <frederic@jolliton.com>
Tue, 13 Sep 2005 07:06:02 +0000 (07:06 +0000)
committerFrederic Jolliton <frederic@jolliton.com>
Tue, 13 Sep 2005 07:06:02 +0000 (07:06 +0000)
 * Added Sequence.__contains__ such that 'node in someSequence' return
   True if node is part of someSequence, while previously True was
   returned if a node had the same *value* (different node with same
   dmStringValue.)
git-archimport-id: frederic@jolliton.com--2005-main/tx--main--0.1--patch-41

sequence.py

index 0b9ce13..53a95ef 100644 (file)
@@ -101,7 +101,16 @@ class Sequence( tuple ) :
                if not isinstance( other , Sequence ) :
                        return len( self ) == 1 and self[ 0 ] == other
                else :
-                       return self.type == other.type and tuple.__eq__( self , other )
+                       return self.type == other.type and super( Sequence , self ).__eq__( other )
+
+       def __contains__( self , other ) :
+
+               if isinstance( other , Node ) :
+                       for item in self :
+                               if item is other :
+                                       return True
+               else :
+                       return super( Sequence , self ).__contains__( other )
 
        def __add__( self , other , type = None ) :