add some tweaks, notes, TODOs (and doctest bits)

This commit is contained in:
Mahmoud Hashemi 2013-08-24 20:44:20 -07:00
parent 0581d50e83
commit a406aa89d2
1 changed files with 14 additions and 10 deletions

View File

@ -29,7 +29,7 @@ class OrderedMultiDict(dict):
>>> omd.add('a', 3) >>> omd.add('a', 3)
>>> omd >>> omd
OrderedMultiDict([('a', 1), ('b', 2), ('a', 3)]) OrderedMultiDict([('a', 1), ('b', 2), ('a', 3)])
>>> omd.popitem('a') >>> omd.poplast('a')
3 3
>>> omd >>> omd
OrderedMultiDict([('a', 1), ('b', 2)]) OrderedMultiDict([('a', 1), ('b', 2)])
@ -50,7 +50,9 @@ class OrderedMultiDict(dict):
super(OrderedMultiDict, self).__init__() super(OrderedMultiDict, self).__init__()
self._clear_ll() self._clear_ll()
if args:
self.update_extend(args[0]) self.update_extend(args[0])
if kwargs:
self.update(kwargs) self.update(kwargs)
def _clear_ll(self): def _clear_ll(self):
@ -103,9 +105,10 @@ class OrderedMultiDict(dict):
@classmethod @classmethod
def fromkeys(cls, keys, default=None): def fromkeys(cls, keys, default=None):
return cls((k, default) for k in keys) return cls([(k, default) for k in keys])
def update(self, E, **F): def update(self, E, **F):
# E and F are throwback names to the dict() __doc__
if E is self: if E is self:
return return
@ -168,6 +171,7 @@ class OrderedMultiDict(dict):
return False return False
if not(next(selfi, _MISSING) is _MISSING if not(next(selfi, _MISSING) is _MISSING
and next(otheri, _MISSING) is _MISSING): and next(otheri, _MISSING) is _MISSING):
# leftovers (TODO: watch for StopIteration?)
return False return False
return True return True
elif hasattr(other, 'keys'): elif hasattr(other, 'keys'):
@ -252,20 +256,20 @@ class OrderedMultiDict(dict):
curr = curr[PREV] curr = curr[PREV]
def __repr__(self): def __repr__(self):
name = self.__class__.__name__ cn = self.__class__.__name__
kvs = ', '.join(repr((k, v)) for k, v in self.iteritems(multi=True)) kvs = ', '.join([repr((k, v)) for k, v in self.iteritems(multi=True)])
return '%s([%s])' % (name, kvs) return '%s([%s])' % (cn, kvs)
def viewkeys(self): def viewkeys(self):
"od.viewkeys() -> a set-like object providing a view on od's keys" "OMD.viewkeys() -> a set-like object providing a view on OMD's keys"
return KeysView(self) return KeysView(self)
def viewvalues(self): def viewvalues(self):
"od.viewvalues() -> an object providing a view on od's values" "OMD.viewvalues() -> an object providing a view on OMD's values"
return ValuesView(self) return ValuesView(self)
def viewitems(self): def viewitems(self):
"od.viewitems() -> a set-like object providing a view on od's items" "OMD.viewitems() -> a set-like object providing a view on OMD's items"
return ItemsView(self) return ItemsView(self)