summaryrefslogtreecommitdiffstats
path: root/Lib/UserDict.py
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2008-02-04 22:07:15 (GMT)
committerRaymond Hettinger <python@rcn.com>2008-02-04 22:07:15 (GMT)
commitedf3b734c05b754f03e36c1eb69bfc7343b8a150 (patch)
tree1bbfa338b8b264a123476aa5a8a454367dd013b7 /Lib/UserDict.py
parentd190f9c45e07caa77f8f79ac34560d41271a7c7b (diff)
downloadcpython-edf3b734c05b754f03e36c1eb69bfc7343b8a150.zip
cpython-edf3b734c05b754f03e36c1eb69bfc7343b8a150.tar.gz
cpython-edf3b734c05b754f03e36c1eb69bfc7343b8a150.tar.bz2
Remove DictMixin which is superceded by collections.MutableMapping
Diffstat (limited to 'Lib/UserDict.py')
-rw-r--r--Lib/UserDict.py100
1 files changed, 0 insertions, 100 deletions
diff --git a/Lib/UserDict.py b/Lib/UserDict.py
index bc05dfb..cb8a826 100644
--- a/Lib/UserDict.py
+++ b/Lib/UserDict.py
@@ -79,103 +79,3 @@ class UserDict:
class IterableUserDict(UserDict):
def __iter__(self):
return iter(self.data)
-
-class DictMixin:
- # Mixin defining all dictionary methods for classes that already have
- # a minimum dictionary interface including getitem, setitem, delitem,
- # and keys. Without knowledge of the subclass constructor, the mixin
- # does not define __init__() or copy(). In addition to the four base
- # methods, progressively more efficiency comes with defining
- # __contains__(), __iter__(), and iteritems().
-
- # XXX It would make more sense to expect __iter__ to be primitive.
-
- # second level definitions support higher levels
- def __iter__(self):
- for k in self.keys():
- yield k
- def __contains__(self, key):
- try:
- value = self[key]
- except KeyError:
- return False
- return True
-
- # third level takes advantage of second level definitions
- def iterkeys(self):
- return self.__iter__()
- def iteritems(self):
- for k in self:
- yield (k, self[k])
-
- # fourth level uses definitions from lower levels
- def itervalues(self):
- for _, v in self.iteritems():
- yield v
- def values(self):
- return [v for _, v in self.iteritems()]
- def items(self):
- return list(self.iteritems())
- def clear(self):
- for key in list(self.iterkeys()):
- del self[key]
- def setdefault(self, key, default=None):
- try:
- return self[key]
- except KeyError:
- self[key] = default
- return default
- def pop(self, key, *args):
- if len(args) > 1:
- raise TypeError("pop expected at most 2 arguments, got "
- + repr(1 + len(args)))
- try:
- value = self[key]
- except KeyError:
- if args:
- return args[0]
- raise
- del self[key]
- return value
- def popitem(self):
- try:
- k, v = next(self.iteritems())
- except StopIteration:
- raise KeyError('container is empty')
- del self[k]
- return (k, v)
- def update(self, other=None, **kwargs):
- # Make progressively weaker assumptions about "other"
- if other is None:
- pass
- elif hasattr(other, 'iteritems'): # iteritems saves memory and lookups
- for k, v in other.iteritems():
- self[k] = v
- elif hasattr(other, 'items'): # items may also save memory and lookups
- for k, v in other.items():
- self[k] = v
- elif hasattr(other, 'keys'):
- for k in other.keys():
- self[k] = other[k]
- else:
- for k, v in other:
- self[k] = v
- if kwargs:
- self.update(kwargs)
- def get(self, key, default=None):
- try:
- return self[key]
- except KeyError:
- return default
- def __repr__(self):
- return repr(dict(self.iteritems()))
- def __eq__(self, other):
- if isinstance(other, DictMixin):
- other = dict(other.iteritems())
- return dict(self.iteritems()) == other
- def __ne__(self, other):
- if isinstance(other, DictMixin):
- other = dict(other.iteritems())
- return dict(self.iteritems()) != other
- def __len__(self):
- return len(self.keys())