[Python-checkins] r54659 - sandbox/trunk/abc/abc.py sandbox/trunk/abc/test_abc.py

guido.van.rossum python-checkins at python.org
Mon Apr 2 19:31:28 CEST 2007


Author: guido.van.rossum
Date: Mon Apr  2 19:31:27 2007
New Revision: 54659

Modified:
   sandbox/trunk/abc/abc.py
   sandbox/trunk/abc/test_abc.py
Log:
Add set adaptation.


Modified: sandbox/trunk/abc/abc.py
==============================================================================
--- sandbox/trunk/abc/abc.py	(original)
+++ sandbox/trunk/abc/abc.py	Mon Apr  2 19:31:27 2007
@@ -554,11 +554,10 @@
 
 class AdaptToSequence(Sequence):
 
-    def __new__(cls, *args):
-        return Sequence.__new__(cls)
-
-    def __init__(self, adaptee):
+    def __new__(cls, adaptee):
+        self = Sequence.__new__(cls)
         self.adaptee = adaptee
+        return self
 
     def __getitem__(self, index):
         return self.adaptee[index]
@@ -569,11 +568,10 @@
 
 class AdaptToMapping(SizeableMapping):
 
-    def __new__(cls, *args):
-        return SizeableMapping.__new__(cls)
-
-    def __init__(self, adaptee):
+    def __new__(cls, adaptee):
+        self = SizeableMapping.__new__(cls)
         self.adaptee = adaptee
+        return self
 
     def __getitem__(self, index):
         return self.adaptee[index]
@@ -583,3 +581,20 @@
 
     def __iter__(self):
         return iter(self.adaptee)
+
+
+class AdaptToSet(SizeableSet):
+
+    def __new__(cls, adaptee):
+        self = SizeableSet.__new__(cls)
+        self.adaptee = adaptee
+        return self
+
+    def __contains__(self, elem):
+        return elem in self.adaptee
+
+    def __iter__(self):
+        return iter(self.adaptee)
+
+    def __len__(self):
+        return len(self.adaptee)

Modified: sandbox/trunk/abc/test_abc.py
==============================================================================
--- sandbox/trunk/abc/test_abc.py	(original)
+++ sandbox/trunk/abc/test_abc.py	Mon Apr  2 19:31:27 2007
@@ -65,6 +65,13 @@
         #self.assertEqual(a.items(), {(1, 10), (2, 20)})
         #self.assertEqual(a.values(), {10, 20})
 
+    def test_adapt_to_set(self):
+        a = abc.AdaptToSet({1, 2, 3})
+        self.assertEqual(1 in a, True)
+        self.assertEqual(2 in a, True)
+        self.assertEqual(42 in a, False)
+        self.assertEqual(len(a), 3)
+
 
 if __name__ == "__main__":
     unittest.main()


More information about the Python-checkins mailing list