From b98403f0c269a1073e8e25599d4a98147cfa425f Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Thu, 23 Jan 2020 12:28:18 -0500 Subject: [PATCH] Add keywords to MutableList.sort() Added keyword arguments to the :meth:`.MutableList.sort` function so that a key function as well as the "reverse" keyword argument can be provided. Fixes: #5114 Change-Id: Iefb29e1ccadfad6ecba558ce575029307001b88e --- doc/build/changelog/unreleased_13/5114.rst | 7 +++++++ lib/sqlalchemy/ext/mutable.py | 4 ++-- test/ext/test_mutable.py | 24 ++++++++++++++++++++++ 3 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 doc/build/changelog/unreleased_13/5114.rst diff --git a/doc/build/changelog/unreleased_13/5114.rst b/doc/build/changelog/unreleased_13/5114.rst new file mode 100644 index 0000000000..9dab646429 --- /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 866220860d..5523fe75db 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 84b922be7b..acb0ad490d 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() -- 2.47.3