]> granicus.if.org Git - python/commitdiff
Make ABC containers inherit as documented.
authorRaymond Hettinger <python@rcn.com>
Sat, 9 Feb 2008 01:18:42 +0000 (01:18 +0000)
committerRaymond Hettinger <python@rcn.com>
Sat, 9 Feb 2008 01:18:42 +0000 (01:18 +0000)
Lib/_abcoll.py

index 4009ccb591706ad3f244f4c646ba101a5478c1ce..6f1759b4e8b3917bcaba6293ade8ae8336623fb7 100644 (file)
@@ -56,7 +56,7 @@ class Iterable:
 Iterable.register(str)
 
 
-class Iterator:
+class Iterator(Iterable):
     __metaclass__ = ABCMeta
 
     @abstractmethod
@@ -122,7 +122,7 @@ class Callable:
 ### SETS ###
 
 
-class Set:
+class Set(Sized, Iterable, Container):
     __metaclass__ = ABCMeta
 
     """A set is a finite, iterable container.
@@ -135,19 +135,6 @@ class Set:
     then the other operations will automatically follow suit.
     """
 
-    @abstractmethod
-    def __contains__(self, value):
-        return False
-
-    @abstractmethod
-    def __iter__(self):
-        while False:
-            yield None
-
-    @abstractmethod
-    def __len__(self):
-        return 0
-
     def __le__(self, other):
         if not isinstance(other, Set):
             return NotImplemented
@@ -324,7 +311,7 @@ MutableSet.register(set)
 ### MAPPINGS ###
 
 
-class Mapping:
+class Mapping(Sized, Iterable, Container):
     __metaclass__ = ABCMeta
 
     @abstractmethod
@@ -345,15 +332,6 @@ class Mapping:
         else:
             return True
 
-    @abstractmethod
-    def __len__(self):
-        return 0
-
-    @abstractmethod
-    def __iter__(self):
-        while False:
-            yield None
-
     def keys(self):
         return KeysView(self)
 
@@ -370,7 +348,7 @@ class Mapping:
     def __ne__(self, other):
         return not (self == other)
 
-class MappingView:
+class MappingView(Sized):
     __metaclass__ = ABCMeta
 
     def __init__(self, mapping):
@@ -490,7 +468,7 @@ MutableMapping.register(dict)
 ### SEQUENCES ###
 
 
-class Sequence:
+class Sequence(Sized, Iterable, Container):
     __metaclass__ = ABCMeta
 
     """All the operations on a read-only sequence.
@@ -503,10 +481,6 @@ class Sequence:
     def __getitem__(self, index):
         raise IndexError
 
-    @abstractmethod
-    def __len__(self):
-        return 0
-
     def __iter__(self):
         i = 0
         try: