From fa4382c4b48ec34ed3259334f2e0f8d2706ffcf9 Mon Sep 17 00:00:00 2001 From: Jonathan MERCIER Date: Tue, 17 Mar 2020 21:18:37 -0400 Subject: [PATCH 3/3] icustrip.py: fix use of string and byte objects Signed-off-by: Stephen Gallagher --- tools/icu/icutrim.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/tools/icu/icutrim.py b/tools/icu/icutrim.py index 25bd99d9cb260da00de9647f9b060790b48af8b2..f857e73bbce298048e407ddbef87f5bc4ac5307a 100755 --- a/tools/icu/icutrim.py +++ b/tools/icu/icutrim.py @@ -11,10 +11,11 @@ # Usage: # Use "-h" to get help options. from __future__ import print_function +import io import json import optparse import os import re import shutil @@ -157,13 +158,12 @@ def runcmd(tool, cmd, doContinue=False): print("FAILED: %s" % cmd) sys.exit(1) return rc ## STEP 0 - read in json config -fi= open(options.filterfile, "rb") -config=json.load(fi) -fi.close() +with io.open(options.filterfile, encoding='utf-8') as fi: + config = json.load(fi) if options.locales: config["variables"] = config.get("variables", {}) config["variables"]["locales"] = config["variables"].get("locales", {}) config["variables"]["locales"]["only"] = options.locales.split(',') @@ -283,14 +283,13 @@ for i in range(len(items)): print("procesing %s" % (tree)) trees[tree] = { "extension": ".res", "treeprefix": treeprefix, "hasIndex": True } # read in the resource list for the tree treelistfile = os.path.join(options.tmpdir,"%s.lst" % tree) runcmd("iculslocs", "-i %s -N %s -T %s -l > %s" % (outfile, dataname, tree, treelistfile)) - fi = open(treelistfile, 'rb') - treeitems = fi.readlines() - trees[tree]["locs"] = [treeitems[i].strip() for i in range(len(treeitems))] - fi.close() + with io.open(treelistfile, 'r', encoding='utf-8') as fi: + treeitems = fi.readlines() + trees[tree]["locs"] = [line.strip() for line in treeitems] if tree not in config.get("trees", {}): print(" Warning: filter file %s does not mention trees.%s - will be kept as-is" % (options.filterfile, tree)) else: queueForRemoval(tree) @@ -315,16 +314,16 @@ def removeList(count=0): print("## Damage control, trying to parse stderr from icupkg..") fi = open(hackerrfile, 'rb') erritems = fi.readlines() fi.close() #Item zone/zh_Hant_TW.res depends on missing item zone/zh_Hant.res - pat = re.compile("""^Item ([^ ]+) depends on missing item ([^ ]+).*""") + pat = re.compile(bytes(r"^Item ([^ ]+) depends on missing item ([^ ]+).*", 'utf-8')) for i in range(len(erritems)): line = erritems[i].strip() m = pat.match(line) if m: - toDelete = m.group(1) + toDelete = m.group(1).decode("utf-8") if(options.verbose > 5): print("<< %s added to delete" % toDelete) remove.add(toDelete) else: print("ERROR: could not match errline: %s" % line) -- 2.25.1