]> TLD Linux GIT Repositories - tld-builder.git/blobdiff - TLD_Builder/util.py
- more python3 fixes, dropped python2 support
[tld-builder.git] / TLD_Builder / util.py
index b623115d7f2e407e3fe30d69e66a97bfe4a7b32f..1d485a170c20378fab39a6ad092f1fd04a5dc1ee 100644 (file)
@@ -5,16 +5,17 @@ import sys
 import os
 import log
 import string
+import codecs
 
 def uuid_python():
     return str(uuid_random())
 
 def uuid_external():
     f = os.popen("uuidgen 2>&1")
-    u = string.strip(f.read())
+    u = f.read().strip()
     f.close()
     if len(u) != 36:
-        raise Exception, "uuid: fatal, cannot generate uuid: %s" % u
+        raise Exception("uuid: fatal, cannot generate uuid: %s" % u)
     return u
 
 # uuid module available in python >= 2.5
@@ -52,9 +53,9 @@ def clean_tmp(dir):
 def collect_files(log, basedir = "/home"):
     f = open(log, 'r')
     rx = re.compile(r"^Wrote: (%s.*\.rpm)$" % basedir)
-    proc = re.compile(r"^Processing (files):.*$")
+    proc = re.compile(r"^Processing files:.*$")
     files = []
-    for l in reversed(list(f.xreadlines())):
+    for l in reversed(list(f)):
         if proc.match(l):
             break
         m = rx.search(l)
@@ -76,3 +77,38 @@ def find_last_section(log):
             last_section = m.group(1)
     f.close()
     return last_section
+
+def cmp_to_key(mycmp):
+    'Convert a cmp= function into a key= function'
+    class K:
+        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
+
+def to_bytes(s):
+    if type(s) is bytes:
+        return s
+    elif type(s) is str or (sys.version_info[0] < 3 and type(s) is unicode):
+        return codecs.encode(s, 'utf-8')
+    else:
+        raise TypeError("Expected bytes or string, but got %s." % type(s))
+
+def to_str(s):
+    if type(s) is bytes:
+        return codecs.decode(s, 'utf-8')
+    elif type(s) is str or (sys.version_info[0] < 3 and type(s) is unicode):
+        return s
+    else:
+        raise TypeError("Expected bytes or string, but got %s." % type(s))