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
Copyright (C) 2012-2017 Edgewall Software