]> granicus.if.org Git - python/commitdiff
Issue #11333: Add __slots__ to the collections ABCs.
authorRaymond Hettinger <python@rcn.com>
Tue, 22 Mar 2011 18:46:25 +0000 (11:46 -0700)
committerRaymond Hettinger <python@rcn.com>
Tue, 22 Mar 2011 18:46:25 +0000 (11:46 -0700)
Lib/collections/abc.py
Misc/NEWS

index c80c7ddd4430300799011d7d7c60868dee19bd4a..7fbe84dfe97c092075ece7c29d777ed73edb2a0d 100644 (file)
@@ -46,6 +46,8 @@ dict_proxy = type(type.__dict__)
 
 class Hashable(metaclass=ABCMeta):
 
+    __slots__ = ()
+
     @abstractmethod
     def __hash__(self):
         return 0
@@ -63,6 +65,8 @@ class Hashable(metaclass=ABCMeta):
 
 class Iterable(metaclass=ABCMeta):
 
+    __slots__ = ()
+
     @abstractmethod
     def __iter__(self):
         while False:
@@ -78,6 +82,8 @@ class Iterable(metaclass=ABCMeta):
 
 class Iterator(Iterable):
 
+    __slots__ = ()
+
     @abstractmethod
     def __next__(self):
         raise StopIteration
@@ -109,6 +115,8 @@ Iterator.register(zip_iterator)
 
 class Sized(metaclass=ABCMeta):
 
+    __slots__ = ()
+
     @abstractmethod
     def __len__(self):
         return 0
@@ -123,6 +131,8 @@ class Sized(metaclass=ABCMeta):
 
 class Container(metaclass=ABCMeta):
 
+    __slots__ = ()
+
     @abstractmethod
     def __contains__(self, x):
         return False
@@ -137,6 +147,8 @@ class Container(metaclass=ABCMeta):
 
 class Callable(metaclass=ABCMeta):
 
+    __slots__ = ()
+
     @abstractmethod
     def __call__(self, *args, **kwds):
         return False
@@ -164,6 +176,8 @@ class Set(Sized, Iterable, Container):
     then the other operations will automatically follow suit.
     """
 
+    __slots__ = ()
+
     def __le__(self, other):
         if not isinstance(other, Set):
             return NotImplemented
@@ -275,6 +289,8 @@ Set.register(frozenset)
 
 class MutableSet(Set):
 
+    __slots__ = ()
+
     @abstractmethod
     def add(self, value):
         """Add an element."""
@@ -348,6 +364,8 @@ MutableSet.register(set)
 
 class Mapping(Sized, Iterable, Container):
 
+    __slots__ = ()
+
     @abstractmethod
     def __getitem__(self, key):
         raise KeyError
@@ -451,6 +469,8 @@ ValuesView.register(dict_values)
 
 class MutableMapping(Mapping):
 
+    __slots__ = ()
+
     @abstractmethod
     def __setitem__(self, key, value):
         raise KeyError
@@ -530,6 +550,8 @@ class Sequence(Sized, Iterable, Container):
     __getitem__, and __len__.
     """
 
+    __slots__ = ()
+
     @abstractmethod
     def __getitem__(self, index):
         raise IndexError
@@ -575,12 +597,16 @@ class ByteString(Sequence):
     XXX Should add all their methods.
     """
 
+    __slots__ = ()
+
 ByteString.register(bytes)
 ByteString.register(bytearray)
 
 
 class MutableSequence(Sequence):
 
+    __slots__ = ()
+
     @abstractmethod
     def __setitem__(self, index, value):
         raise IndexError
index b9751b7436bed6cb1fc8004379f1ff0b1051ff71..e8a19264565740712f08876f60638c06818c118f 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -84,6 +84,8 @@ Library
 - Issue #11371: Mark getopt error messages as localizable.  Patch by Filip
   GruszczyƄski.
 
+- Issue #11333: Add __slots__ to collections ABCs.
+
 - Issue #11628: cmp_to_key generated class should use __slots__
 
 - Issue #5537: Fix time2isoz() and time2netscape() functions of