]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Added default support to OrderedDict.pop [ticket:585]
authorJason Kirtland <jek@discorporate.us>
Thu, 10 Jul 2008 19:16:08 +0000 (19:16 +0000)
committerJason Kirtland <jek@discorporate.us>
Thu, 10 Jul 2008 19:16:08 +0000 (19:16 +0000)
lib/sqlalchemy/util.py
test/base/utils.py

index dea3207244f7773fa0768efee32de3aaf103fb1c..c9982a9fa092759767ecb6c659e35676bd833a83 100644 (file)
@@ -759,9 +759,11 @@ class OrderedDict(dict):
         dict.__delitem__(self, key)
         self._list.remove(key)
 
-    def pop(self, key):
-        value = dict.pop(self, key)
-        self._list.remove(key)
+    def pop(self, key, *default):
+        present = key in self
+        value = dict.pop(self, key, *default)
+        if present:
+            self._list.remove(key)
         return value
 
     def popitem(self):
index b23b5632234be5ab84c7cccb65ae1e2308701af7..8b44de84e102938b19effc65c518b269f454a317 100644 (file)
@@ -17,6 +17,22 @@ class OrderedDictTest(TestBase):
         eq_(o.values(), [1, 2, 'attack', 3])
 
         o.pop('snack')
+        eq_(o.keys(), ['a', 'b', 'c'])
+        eq_(o.values(), [1, 2, 3])
+
+        try:
+            o.pop('eep')
+            assert False
+        except KeyError:
+            pass
+
+        eq_(o.pop('eep', 'woot'), 'woot')
+
+        try:
+            o.pop('whiff', 'bang', 'pow')
+            assert False
+        except TypeError:
+            pass
 
         eq_(o.keys(), ['a', 'b', 'c'])
         eq_(o.values(), [1, 2, 3])