[master 8/15] Replace python 2 build-in-function cmp() with custom method

vpodzime installerbot-noreply at redhat.com
Thu Apr 2 14:15:13 UTC 2015


From: Vojtech Trefny <vtrefny at redhat.com>

cmp() no longer exists in python 3
---
 blivet/partitioning.py | 22 +++++++++++-----------
 blivet/util.py         | 23 +++++++++++++++++++++++
 2 files changed, 34 insertions(+), 11 deletions(-)

diff --git a/blivet/partitioning.py b/blivet/partitioning.py
index 5f131a8..063f70b 100644
--- a/blivet/partitioning.py
+++ b/blivet/partitioning.py
@@ -32,7 +32,7 @@
 from .devices import Device, PartitionDevice, LUKSDevice, devicePathToName
 from .size import Size
 from .i18n import _
-from .util import stringize, unicodeize
+from .util import stringize, unicodeize, compare
 
 import logging
 log = logging.getLogger("blivet")
@@ -61,7 +61,7 @@ def partitionCompare(part1, part2):
     elif part1_start is None and part2_start is not None:
         return 1
     elif part1_start is not None and part2_start is not None:
-        return cmp(part1_start, part2_start)
+        return compare(part1_start, part2_start)
 
     if part1.req_base_weight:
         ret -= part1.req_base_weight
@@ -76,16 +76,16 @@ def partitionCompare(part1, part2):
     elif not part1.req_disks and part2.req_disks:
         ret += 500
     else:
-        ret += cmp(len(part1.req_disks), len(part2.req_disks)) * 500
+        ret += compare(len(part1.req_disks), len(part2.req_disks)) * 500
 
     # primary-only to the front of the list
-    ret -= cmp(part1.req_primary, part2.req_primary) * 200
+    ret -= compare(part1.req_primary, part2.req_primary) * 200
 
     # fixed size requests to the front
-    ret += cmp(part1.req_grow, part2.req_grow) * 100
+    ret += compare(part1.req_grow, part2.req_grow) * 100
 
     # larger requests go to the front of the list
-    ret -= cmp(part1.req_base_size, part2.req_base_size) * 50
+    ret -= compare(part1.req_base_size, part2.req_base_size) * 50
 
     # potentially larger growable requests go to the front
     if part1.req_grow and part2.req_grow:
@@ -94,12 +94,12 @@ def partitionCompare(part1, part2):
         elif part1.req_max_size and not part2.req_max_size:
             ret += 25
         else:
-            ret -= cmp(part1.req_max_size, part2.req_max_size) * 25
+            ret -= compare(part1.req_max_size, part2.req_max_size) * 25
 
     # give a little bump based on mountpoint
     if hasattr(part1.format, "mountpoint") and \
        hasattr(part2.format, "mountpoint"):
-        ret += cmp(part1.format.mountpoint, part2.format.mountpoint) * 10
+        ret += compare(part1.format.mountpoint, part2.format.mountpoint) * 10
 
     if ret > 0:
         ret = 1
@@ -1766,10 +1766,10 @@ def lvCompare(lv1, lv2):
     ret = 0
 
     # larger requests go to the front of the list
-    ret -= cmp(lv1.size, lv2.size) * 100
+    ret -= compare(lv1.size, lv2.size) * 100
 
     # fixed size requests to the front
-    ret += cmp(lv1.req_grow, lv2.req_grow) * 50
+    ret += compare(lv1.req_grow, lv2.req_grow) * 50
 
     # potentially larger growable requests go to the front
     if lv1.req_grow and lv2.req_grow:
@@ -1778,7 +1778,7 @@ def lvCompare(lv1, lv2):
         elif lv1.req_max_size and not lv2.req_max_size:
             ret += 25
         else:
-            ret -= cmp(lv1.req_max_size, lv2.req_max_size) * 25
+            ret -= compare(lv1.req_max_size, lv2.req_max_size) * 25
 
     if ret > 0:
         ret = 1
diff --git a/blivet/util.py b/blivet/util.py
index 66a7715..5ce2770 100644
--- a/blivet/util.py
+++ b/blivet/util.py
@@ -452,6 +452,29 @@ def unicodeize(inputstr):
     else:
         return str(inputstr)
 
+def compare(first, second):
+    """ Compare two objects.
+
+        :param first: first object to compare
+        :param second: second object to compare
+        :returns: 0 if first == second, 1 if first > second, -1 if first < second
+        :rtype: int
+
+        This method replaces Python 2 cmp() built-in-function.
+    """
+
+    if first == None and second == None:
+        return 0
+
+    elif first == None:
+        return -1
+
+    elif second == None:
+        return 1
+
+    else:
+        return (first > second) - (first < second)
+
 ##
 ## Convenience functions for examples and tests
 ##


-- 
To view this commit on github, visit https://github.com/rhinstaller/blivet/commit/ab04810de8386517cb8cb9880525a54bbcd96203


More information about the anaconda-patches mailing list