Mercurial > babel > old > babel-test
comparison 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 |
comparison
equal
deleted
inserted
replaced
321:5491dbf09386 | 346:faf0ead3a132 |
---|---|
14 """Various utility classes and functions.""" | 14 """Various utility classes and functions.""" |
15 | 15 |
16 import codecs | 16 import codecs |
17 from datetime import timedelta, tzinfo | 17 from datetime import timedelta, tzinfo |
18 import os | 18 import os |
19 import parser | |
20 import re | 19 import re |
21 try: | 20 try: |
22 set | 21 set |
23 except NameError: | 22 except NameError: |
24 from sets import Set as set | 23 from sets import Set as set |
25 import textwrap | 24 import textwrap |
26 import time | 25 import time |
26 from itertools import izip, imap | |
27 missing = object() | |
27 | 28 |
28 __all__ = ['distinct', 'pathmatch', 'relpath', 'wraptext', 'odict', 'UTC', | 29 __all__ = ['distinct', 'pathmatch', 'relpath', 'wraptext', 'odict', 'UTC', |
29 'LOCALTZ'] | 30 'LOCALTZ'] |
30 __docformat__ = 'restructuredtext en' | 31 __docformat__ = 'restructuredtext en' |
31 | 32 |
73 line1 = line1[len(codecs.BOM_UTF8):] | 74 line1 = line1[len(codecs.BOM_UTF8):] |
74 | 75 |
75 m = PYTHON_MAGIC_COMMENT_re.match(line1) | 76 m = PYTHON_MAGIC_COMMENT_re.match(line1) |
76 if not m: | 77 if not m: |
77 try: | 78 try: |
79 import parser | |
78 parser.suite(line1) | 80 parser.suite(line1) |
79 except SyntaxError: | 81 except (ImportError, SyntaxError): |
80 # Either it's a real syntax error, in which case the source is | 82 # Either it's a real syntax error, in which case the source is |
81 # not valid python source, or line2 is a continuation of line1, | 83 # not valid python source, or line2 is a continuation of line1, |
82 # in which case we don't want to scan line2 for a magic | 84 # in which case we don't want to scan line2 for a magic |
83 # comment. | 85 # comment. |
84 pass | 86 pass |
191 if key not in self._keys: | 193 if key not in self._keys: |
192 self._keys.append(key) | 194 self._keys.append(key) |
193 | 195 |
194 def __iter__(self): | 196 def __iter__(self): |
195 return iter(self._keys) | 197 return iter(self._keys) |
198 iterkeys = __iter__ | |
196 | 199 |
197 def clear(self): | 200 def clear(self): |
198 dict.clear(self) | 201 dict.clear(self) |
199 self._keys = [] | 202 self._keys = [] |
200 | 203 |
204 return d | 207 return d |
205 | 208 |
206 def items(self): | 209 def items(self): |
207 return zip(self._keys, self.values()) | 210 return zip(self._keys, self.values()) |
208 | 211 |
212 def iteritems(self): | |
213 return izip(self._keys, self.itervalues()) | |
214 | |
209 def keys(self): | 215 def keys(self): |
210 return self._keys[:] | 216 return self._keys[:] |
211 | 217 |
212 def pop(self, key, default=None): | 218 def pop(self, key, default=missing): |
213 if key not in self: | 219 if default is missing: |
220 return dict.pop(self, key) | |
221 elif key not in self: | |
214 return default | 222 return default |
215 self._keys.remove(key) | 223 self._keys.remove(key) |
216 return dict.pop(self, key) | 224 return dict.pop(self, key, default) |
225 | |
226 def popitem(self, key): | |
227 self._keys.remove(key) | |
228 return dict.popitem(key) | |
217 | 229 |
218 def setdefault(self, key, failobj = None): | 230 def setdefault(self, key, failobj = None): |
219 dict.setdefault(self, key, failobj) | 231 dict.setdefault(self, key, failobj) |
220 if key not in self._keys: | 232 if key not in self._keys: |
221 self._keys.append(key) | 233 self._keys.append(key) |
224 for (key, val) in dict.items(): | 236 for (key, val) in dict.items(): |
225 self[key] = val | 237 self[key] = val |
226 | 238 |
227 def values(self): | 239 def values(self): |
228 return map(self.get, self._keys) | 240 return map(self.get, self._keys) |
241 | |
242 def itervalues(self): | |
243 return imap(self.get, self._keys) | |
229 | 244 |
230 | 245 |
231 try: | 246 try: |
232 relpath = os.path.relpath | 247 relpath = os.path.relpath |
233 except AttributeError: | 248 except AttributeError: |