summaryrefslogtreecommitdiffstats
path: root/layman/compatibility.py
diff options
context:
space:
mode:
Diffstat (limited to 'layman/compatibility.py')
-rw-r--r--layman/compatibility.py21
1 files changed, 19 insertions, 2 deletions
diff --git a/layman/compatibility.py b/layman/compatibility.py
index b71a8af..e6206db 100644
--- a/layman/compatibility.py
+++ b/layman/compatibility.py
@@ -6,8 +6,6 @@
Distributed under the terms of the GNU General Public License v2
"""
-import sys, types
-
def encode(text, enc="UTF-8"):
"""py2, py3 compatibility function"""
@@ -27,3 +25,22 @@ def fileopen(path, mode='r', enc="UTF-8"):
f = open(path, mode)
return f
+
+def cmp_to_key(mycmp):
+ 'Convert a cmp= function into a key= function'
+ class K(object):
+ def __init__(self, obj, *args):
+ self.obj = obj
+ def __lt__(self, other):
+ return mycmp(self.obj, other.obj) < 0
+ def __gt__(self, other):
+ return mycmp(self.obj, other.obj) > 0
+ def __eq__(self, other):
+ return mycmp(self.obj, other.obj) == 0
+ def __le__(self, other):
+ return mycmp(self.obj, other.obj) <= 0
+ def __ge__(self, other):
+ return mycmp(self.obj, other.obj) >= 0
+ def __ne__(self, other):
+ return mycmp(self.obj, other.obj) != 0
+ return K