Mercurial > babel > old > babel-test
diff babel/util.py @ 346:faf0ead3a132 stable-0.9.x
Merged revisions [358:360], [364:370], [373:378], [380:382] from [source:trunk].
author | cmlenz |
---|---|
date | Mon, 16 Jun 2008 12:48:43 +0000 |
parents | 3d67cf6d8022 |
children | c2ae38340540 |
line wrap: on
line diff
--- a/babel/util.py +++ b/babel/util.py @@ -16,7 +16,6 @@ import codecs from datetime import timedelta, tzinfo import os -import parser import re try: set @@ -24,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'] @@ -75,8 +76,9 @@ m = PYTHON_MAGIC_COMMENT_re.match(line1) if not m: try: + import parser parser.suite(line1) - except SyntaxError: + except (ImportError, SyntaxError): # Either it's a real syntax error, in which case the source is # not valid python source, or line2 is a continuation of line1, # in which case we don't want to scan line2 for a magic @@ -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