summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2011-03-22 18:46:25 (GMT)
committerRaymond Hettinger <python@rcn.com>2011-03-22 18:46:25 (GMT)
commitc46759ad0b3419bb67b33f0358af5ae50dc0c5fe (patch)
tree68cbf456a976457b137a8578af856480ba908fbc
parent7969d3334f0db9ccb9b97db77ad582d6103c12c7 (diff)
downloadcpython-c46759ad0b3419bb67b33f0358af5ae50dc0c5fe.zip
cpython-c46759ad0b3419bb67b33f0358af5ae50dc0c5fe.tar.gz
cpython-c46759ad0b3419bb67b33f0358af5ae50dc0c5fe.tar.bz2
Issue #11333: Add __slots__ to the collections ABCs.
-rw-r--r--Lib/collections/abc.py26
-rw-r--r--Misc/NEWS2
2 files changed, 28 insertions, 0 deletions
diff --git a/Lib/collections/abc.py b/Lib/collections/abc.py
index c80c7dd..7fbe84d 100644
--- a/Lib/collections/abc.py
+++ b/Lib/collections/abc.py
@@ -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
diff --git a/Misc/NEWS b/Misc/NEWS
index b9751b7..e8a1926 100644
--- 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