From: Mike Bayer Date: Thu, 17 Dec 2015 16:24:35 +0000 (-0500) Subject: - Further fixes to :ticket:`3605`, pop method on :class:`.MutableDict`, X-Git-Tag: rel_1_1_0b1~84^2~74 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=913858c949ae9ca6250217d82d72c7d79e9f6585;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - Further fixes to :ticket:`3605`, pop method on :class:`.MutableDict`, where the "default" argument was not included. fixes #3605 --- diff --git a/doc/build/changelog/changelog_10.rst b/doc/build/changelog/changelog_10.rst index b9eae73e62..d41ee70fd8 100644 --- a/doc/build/changelog/changelog_10.rst +++ b/doc/build/changelog/changelog_10.rst @@ -18,6 +18,14 @@ .. 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 diff --git a/lib/sqlalchemy/ext/mutable.py b/lib/sqlalchemy/ext/mutable.py index 88b653f602..7bcef5b8e5 100644 --- a/lib/sqlalchemy/ext/mutable.py +++ b/lib/sqlalchemy/ext/mutable.py @@ -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 diff --git a/test/ext/test_mutable.py b/test/ext/test_mutable.py index ed97a0d92b..602ff911af 100644 --- a/test/ext/test_mutable.py +++ b/test/ext/test_mutable.py @@ -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):