From: Mike Bayer Date: Thu, 23 Jan 2020 17:28:18 +0000 (-0500) Subject: Add keywords to MutableList.sort() X-Git-Tag: rel_1_4_0b1~544^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b98403f0c269a1073e8e25599d4a98147cfa425f;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git 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 --- 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()