Mercurial > babel > old > mirror
changeset 339:6811369cb912
Fix iterkeys/iteritems/itervalues/pop/popitem methods on the `odict` utility class. Thanks to Armin Ronacher for the patch.
author | cmlenz |
---|---|
date | Wed, 11 Jun 2008 22:12:09 +0000 |
parents | 398e7c377165 |
children | 292c639506a3 |
files | babel/messages/catalog.py babel/util.py |
diffstat | 2 files changed, 19 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/babel/messages/catalog.py +++ b/babel/messages/catalog.py @@ -667,7 +667,7 @@ else: message.previous_id = list(oldmsg.id) else: - oldmsg = remaining.pop(oldkey) + oldmsg = remaining.pop(oldkey, None) message.string = oldmsg.string if isinstance(message.id, (list, tuple)): if not isinstance(message.string, (list, tuple)):
--- a/babel/util.py +++ b/babel/util.py @@ -23,6 +23,8 @@ from sets import Set as set import textwrap import time +from itertools import izip, imap +missing = object() __all__ = ['distinct', 'pathmatch', 'relpath', 'wraptext', 'odict', 'UTC', 'LOCALTZ'] @@ -193,6 +195,7 @@ def __iter__(self): return iter(self._keys) + iterkeys = __iter__ def clear(self): dict.clear(self) @@ -206,14 +209,23 @@ def items(self): return zip(self._keys, self.values()) + def iteritems(self): + return izip(self._keys, self.itervalues()) + def keys(self): return self._keys[:] - def pop(self, key, default=None): - if key not in self: + def pop(self, key, default=missing): + if default is missing: + return dict.pop(self, key) + elif key not in self: return default self._keys.remove(key) - return dict.pop(self, key) + return dict.pop(self, key, default) + + def popitem(self, key): + self._keys.remove(key) + return dict.popitem(key) def setdefault(self, key, failobj = None): dict.setdefault(self, key, failobj) @@ -227,6 +239,9 @@ def values(self): return map(self.get, self._keys) + def itervalues(self): + return imap(self.get, self._keys) + try: relpath = os.path.relpath