diff options
author | Raymond Hettinger <python@rcn.com> | 2008-02-04 22:07:15 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2008-02-04 22:07:15 (GMT) |
commit | edf3b734c05b754f03e36c1eb69bfc7343b8a150 (patch) | |
tree | 1bbfa338b8b264a123476aa5a8a454367dd013b7 /Lib/UserDict.py | |
parent | d190f9c45e07caa77f8f79ac34560d41271a7c7b (diff) | |
download | cpython-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.py | 100 |
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()) |