]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Merged revisions 68922 via svnmerge from
authorMark Dickinson <dickinsm@gmail.com>
Sun, 25 Jan 2009 10:50:40 +0000 (10:50 +0000)
committerMark Dickinson <dickinsm@gmail.com>
Sun, 25 Jan 2009 10:50:40 +0000 (10:50 +0000)
svn+ssh://pythondev@svn.python.org/python/branches/py3k

................
  r68922 | mark.dickinson | 2009-01-25 10:48:51 +0000 (Sun, 25 Jan 2009) | 9 lines

  Merged revisions 68920 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk

  ........
    r68920 | mark.dickinson | 2009-01-25 10:39:15 +0000 (Sun, 25 Jan 2009) | 2 lines

    Remove uses of cmp from the decimal module.
  ........
................

Lib/decimal.py

index a931fb93ad4914df876d4f1ec981ce099f94efc0..e9280c59b28a2c1722212ddc14ddb401ad352950 100644 (file)
@@ -764,9 +764,16 @@ class Decimal(object):
         if self > other.  This routine is for internal use only."""
 
         if self._is_special or other._is_special:
-            return cmp(self._isinfinity(), other._isinfinity())
+            self_inf = self._isinfinity()
+            other_inf = other._isinfinity()
+            if self_inf == other_inf:
+                return 0
+            elif self_inf < other_inf:
+                return -1
+            else:
+                return 1
 
-        # check for zeros;  note that cmp(0, -0) should return 0
+        # check for zeros;  Decimal('0') == Decimal('-0')
         if not self:
             if not other:
                 return 0
@@ -786,7 +793,12 @@ class Decimal(object):
         if self_adjusted == other_adjusted:
             self_padded = self._int + '0'*(self._exp - other._exp)
             other_padded = other._int + '0'*(other._exp - self._exp)
-            return cmp(self_padded, other_padded) * (-1)**self._sign
+            if self_padded == other_padded:
+                return 0
+            elif self_padded < other_padded:
+                return -(-1)**self._sign
+            else:
+                return (-1)**self._sign
         elif self_adjusted > other_adjusted:
             return (-1)**self._sign
         else: # self_adjusted < other_adjusted