22import random
33import sys
44import unittest
5+ from functools import cmp_to_key
56
67verbose = support .verbose
78nerrors = 0
89
9- def CmpToKey (mycmp ):
10- 'Convert a cmp= function into a key= function'
11- class K (object ):
12- def __init__ (self , obj ):
13- self .obj = obj
14- def __lt__ (self , other ):
15- return mycmp (self .obj , other .obj ) == - 1
16- return K
1710
1811def check (tag , expected , raw , compare = None ):
1912 global nerrors
@@ -23,7 +16,7 @@ def check(tag, expected, raw, compare=None):
2316
2417 orig = raw [:] # save input in case of error
2518 if compare :
26- raw .sort (key = CmpToKey (compare ))
19+ raw .sort (key = cmp_to_key (compare ))
2720 else :
2821 raw .sort ()
2922
@@ -108,7 +101,7 @@ def __repr__(self):
108101 print (" Checking against an insane comparison function." )
109102 print (" If the implementation isn't careful, this may segfault." )
110103 s = x [:]
111- s .sort (key = CmpToKey (lambda a , b : int (random .random () * 3 ) - 1 ))
104+ s .sort (key = cmp_to_key (lambda a , b : int (random .random () * 3 ) - 1 ))
112105 check ("an insane function left some permutation" , x , s )
113106
114107 if len (x ) >= 2 :
@@ -165,12 +158,12 @@ def mutating_cmp(x, y):
165158 L .pop ()
166159 return (x > y ) - (x < y )
167160 L = [1 ,2 ]
168- self .assertRaises (ValueError , L .sort , key = CmpToKey (mutating_cmp ))
161+ self .assertRaises (ValueError , L .sort , key = cmp_to_key (mutating_cmp ))
169162 def mutating_cmp (x , y ):
170163 L .append (3 )
171164 del L [:]
172165 return (x > y ) - (x < y )
173- self .assertRaises (ValueError , L .sort , key = CmpToKey (mutating_cmp ))
166+ self .assertRaises (ValueError , L .sort , key = cmp_to_key (mutating_cmp ))
174167 memorywaster = [memorywaster ]
175168
176169#==============================================================================
@@ -185,7 +178,7 @@ def test_decorated(self):
185178 def my_cmp (x , y ):
186179 xlower , ylower = x .lower (), y .lower ()
187180 return (xlower > ylower ) - (xlower < ylower )
188- copy .sort (key = CmpToKey (my_cmp ))
181+ copy .sort (key = cmp_to_key (my_cmp ))
189182
190183 def test_baddecorator (self ):
191184 data = 'The quick Brown fox Jumped over The lazy Dog' .split ()
@@ -261,8 +254,8 @@ def my_cmp(x, y):
261254 def my_cmp_reversed (x , y ):
262255 x0 , y0 = x [0 ], y [0 ]
263256 return (y0 > x0 ) - (y0 < x0 )
264- data .sort (key = CmpToKey (my_cmp ), reverse = True )
265- copy1 .sort (key = CmpToKey (my_cmp_reversed ))
257+ data .sort (key = cmp_to_key (my_cmp ), reverse = True )
258+ copy1 .sort (key = cmp_to_key (my_cmp_reversed ))
266259 self .assertEqual (data , copy1 )
267260 copy2 .sort (key = lambda x : x [0 ], reverse = True )
268261 self .assertEqual (data , copy2 )
0 commit comments