]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Add keywords to MutableList.sort()
authorMike Bayer <mike_mp@zzzcomputing.com>
Thu, 23 Jan 2020 17:28:18 +0000 (12:28 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Thu, 23 Jan 2020 17:29:39 +0000 (12:29 -0500)
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
(cherry picked from commit b98403f0c269a1073e8e25599d4a98147cfa425f)

doc/build/changelog/unreleased_13/5114.rst [new file with mode: 0644]
lib/sqlalchemy/ext/mutable.py
test/ext/test_mutable.py

diff --git a/doc/build/changelog/unreleased_13/5114.rst b/doc/build/changelog/unreleased_13/5114.rst
new file mode 100644 (file)
index 0000000..9dab646
--- /dev/null
@@ -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.
+
index 866220860dcddc2bf5866c99117ef3400c84c5ab..5523fe75dbe6ee8106231642b54e29b7f79365c2 100644 (file)
@@ -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):
index 84b922be7b894f4f44cd2325e5b83418153d1df2..acb0ad490d55595a18f6d9c9c2b8a0563a6e7cc4 100644 (file)
@@ -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()