]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- Further fixes to :ticket:`3605`, pop method on :class:`.MutableDict`,
authorMike Bayer <mike_mp@zzzcomputing.com>
Thu, 17 Dec 2015 16:24:35 +0000 (11:24 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Thu, 17 Dec 2015 16:24:35 +0000 (11:24 -0500)
where the "default" argument was not included.
fixes #3605

doc/build/changelog/changelog_10.rst
lib/sqlalchemy/ext/mutable.py
test/ext/test_mutable.py

index b9eae73e622723d64b1251cd06d601000ce80660..d41ee70fd853590da4a6e7511c2636e0211ded77 100644 (file)
 .. changelog::
     :version: 1.0.11
 
+    .. change::
+        :tags: bug, ext
+        :tickets: 3605
+        :versions: 1.1.0b1
+
+        Further fixes to :ticket:`3605`, pop method on :class:`.MutableDict`,
+        where the "default" argument was not included.
+
     .. change::
         :tags: bug, ext
         :tickets: 3612
index 88b653f60229f1888c48fb8e7322e5097b9fb8ac..7bcef5b8e566b530a0f26f72839ad52dc8c214a3 100644 (file)
@@ -658,8 +658,8 @@ class MutableDict(Mutable, dict):
         dict.update(self, *a, **kw)
         self.changed()
 
-    def pop(self, key):
-        result = dict.pop(self, key)
+    def pop(self, key, *arg):
+        result = dict.pop(self, key, *arg)
         self.changed()
         return result
 
index ed97a0d92b73a8d79721e2bb7d9091155b69836c..602ff911af76959fb077b6b7bbc5f90afbae2dcc 100644 (file)
@@ -4,7 +4,7 @@ from sqlalchemy.orm import mapper, Session, composite
 from sqlalchemy.orm.mapper import Mapper
 from sqlalchemy.orm.instrumentation import ClassManager
 from sqlalchemy.testing.schema import Table, Column
-from sqlalchemy.testing import eq_, assert_raises_message
+from sqlalchemy.testing import eq_, assert_raises_message, assert_raises
 from sqlalchemy.testing.util import picklers
 from sqlalchemy.testing import fixtures
 from sqlalchemy.ext.mutable import MutableComposite
@@ -146,6 +146,21 @@ class _MutableDictTestBase(_MutableDictTestFixture):
         eq_(f1.data.pop('a'), 'b')
         sess.commit()
 
+        assert_raises(KeyError, f1.data.pop, 'g')
+
+        eq_(f1.data, {'c': 'd'})
+
+    def test_pop_default(self):
+        sess = Session()
+
+        f1 = Foo(data={'a': 'b', 'c': 'd'})
+        sess.add(f1)
+        sess.commit()
+
+        eq_(f1.data.pop('a', 'q'), 'b')
+        eq_(f1.data.pop('a', 'q'), 'q')
+        sess.commit()
+
         eq_(f1.data, {'c': 'd'})
 
     def test_popitem(self):