SVN: ZODB/trunk/src/ Make PersistentList's sort method accept keyword parameters.

Patrick Strawderman <[email protected]>
Newsgroups gmane.comp.python.zope.zodb.cvs
Message-ID <[email protected]>
Log message for revision 103159:
  Make PersistentList's sort method accept keyword parameters.
  

Changed:
  U   ZODB/trunk/src/CHANGES.txt
  U   ZODB/trunk/src/persistent/list.py
  U   ZODB/trunk/src/persistent/tests/test_list.py

-=-
Modified: ZODB/trunk/src/CHANGES.txt
===================================================================
--- ZODB/trunk/src/CHANGES.txt	2009-08-24 15:29:02 UTC (rev 103158)
+++ ZODB/trunk/src/CHANGES.txt	2009-08-24 15:30:11 UTC (rev 103159)
@@ -25,6 +25,10 @@
 - Opening a blob with modes 'r+' or 'a' would fail when the blob had no
   committed changes.
 
+- PersistentList's sort method did not allow passing of keyword parameters.
+  Changed its sort parameter list to match that of its (Python 2.4+)
+  UserList base class.
+
 3.9.0b5 (2009-08-06)
 ====================
 

Modified: ZODB/trunk/src/persistent/list.py
===================================================================
--- ZODB/trunk/src/persistent/list.py	2009-08-24 15:29:02 UTC (rev 103158)
+++ ZODB/trunk/src/persistent/list.py	2009-08-24 15:30:11 UTC (rev 103159)
@@ -81,8 +81,8 @@
         self.__super_reverse()
         self._p_changed = 1
 
-    def sort(self, *args):
-        self.__super_sort(*args)
+    def sort(self, *args, **kwargs):
+        self.__super_sort(*args, **kwargs)
         self._p_changed = 1
 
     def extend(self, other):

Modified: ZODB/trunk/src/persistent/tests/test_list.py
===================================================================
--- ZODB/trunk/src/persistent/tests/test_list.py	2009-08-24 15:29:02 UTC (rev 103158)
+++ ZODB/trunk/src/persistent/tests/test_list.py	2009-08-24 15:30:11 UTC (rev 103159)
@@ -217,6 +217,24 @@
         u.sort()
         eq(u, u2, "u == u2")
 
+        # Test keyword arguments to sort
+        u.sort(cmp=lambda x,y: cmp(y, x))
+        eq(u, [1, 0], "u == [1, 0]")
+
+        u.sort(key=lambda x:-x)
+        eq(u, [1, 0], "u == [1, 0]")
+
+        u.sort(reverse=True)
+        eq(u, [1, 0], "u == [1, 0]")
+
+        # Passing any other keyword arguments results in a TypeError
+        try:
+            u.sort(blah=True)
+        except TypeError:
+            pass
+        else:
+            raise TestFailed("expected TypeError")
+
         # Test extend
 
         u = u1[:]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.