Fixed bug in mutable extension where :class:`.MutableDict` did not
report change events for the ``setdefault()`` dictionary operation.
+ .. seealso::
+
+ :ticket:`3093`
+
+ .. change::
+ :tags: bug, ext
+ :versions: 0.9.5, 1.0.0
+ :pullreq: bitbucket:24
+ :tickets: 3093, 3051
+
+ Fixed bug where :meth:`.MutableDict.setdefault` didn't return the
+ existing or new value (this bug was not released in any 0.8 version).
+ Pull request courtesy Thomas Hervé.
+
.. change::
:tags: bug, mysql
:versions: 0.9.5, 1.0.0
dict.__setitem__(self, key, value)
self.changed()
-
def setdefault(self, key, value):
- dict.setdefault(self, key, value)
+ result = dict.setdefault(self, key, value)
self.changed()
+ return result
def __delitem__(self, key):
"""Detect dictionary del events and emit change events."""
sess.add(f1)
sess.commit()
- f1.data.setdefault('c', 'd')
+ eq_(f1.data.setdefault('c', 'd'), 'd')
sess.commit()
eq_(f1.data, {'a': 'b', 'c': 'd'})
- f1.data.setdefault('c', 'q')
+ eq_(f1.data.setdefault('c', 'q'), 'd')
sess.commit()
eq_(f1.data, {'a': 'b', 'c': 'd'})