diff options
| -rw-r--r-- | doc/build/changelog/unreleased_13/5114.rst | 7 | ||||
| -rw-r--r-- | lib/sqlalchemy/ext/mutable.py | 4 | ||||
| -rw-r--r-- | test/ext/test_mutable.py | 24 |
3 files changed, 33 insertions, 2 deletions
diff --git a/doc/build/changelog/unreleased_13/5114.rst b/doc/build/changelog/unreleased_13/5114.rst new file mode 100644 index 000000000..9dab64642 --- /dev/null +++ b/doc/build/changelog/unreleased_13/5114.rst @@ -0,0 +1,7 @@ +.. change:: + :tags: usecase, ext + :tickets: 5114 + + Added keyword arguments to the :meth:`.MutableList.sort` function so that a + key function as well as the "reverse" keyword argument can be provided. + diff --git a/lib/sqlalchemy/ext/mutable.py b/lib/sqlalchemy/ext/mutable.py index 866220860..5523fe75d 100644 --- a/lib/sqlalchemy/ext/mutable.py +++ b/lib/sqlalchemy/ext/mutable.py @@ -828,8 +828,8 @@ class MutableList(Mutable, list): list.clear(self) self.changed() - def sort(self): - list.sort(self) + def sort(self, **kw): + list.sort(self, **kw) self.changed() def reverse(self): diff --git a/test/ext/test_mutable.py b/test/ext/test_mutable.py index 84b922be7..acb0ad490 100644 --- a/test/ext/test_mutable.py +++ b/test/ext/test_mutable.py @@ -480,6 +480,30 @@ class _MutableListTestBase(_MutableListTestFixture): eq_(f1.data, [1, 2, 3]) + def test_sort_w_key(self): + sess = Session() + + f1 = Foo(data=[1, 3, 2]) + sess.add(f1) + sess.commit() + + f1.data.sort(key=lambda elem: -1 * elem) + sess.commit() + + eq_(f1.data, [3, 2, 1]) + + def test_sort_w_reverse_kwarg(self): + sess = Session() + + f1 = Foo(data=[1, 3, 2]) + sess.add(f1) + sess.commit() + + f1.data.sort(reverse=True) + sess.commit() + + eq_(f1.data, [3, 2, 1]) + def test_reverse(self): sess = Session() |
