From 6b3c4beba4135681f0484d41ac096e1599939bd4 Mon Sep 17 00:00:00 2001 From: Dominik Riebeling Date: Sat, 8 Jun 2013 23:56:33 +0200 Subject: Rework langstat. - Generally improve code and make it compliant to PEP8. - Make it work with Python3 as well. Change-Id: I9e99999c59dc501664c36dd38fcb85fb60d6d9e6 --- rbutil/rbutilqt/langstats.py | 106 +++++++++++++++++++++++-------------------- 1 file changed, 56 insertions(+), 50 deletions(-) (limited to 'rbutil/rbutilqt/langstats.py') diff --git a/rbutil/rbutilqt/langstats.py b/rbutil/rbutilqt/langstats.py index 0dae9b93a6..76f47450bd 100755 --- a/rbutil/rbutilqt/langstats.py +++ b/rbutil/rbutilqt/langstats.py @@ -26,12 +26,10 @@ import string import tempfile import os import shutil -from datetime import date -import time # extend search path for gitscraper -sys.path.append(os.path.abspath(os.path.dirname(os.path.realpath(__file__)) - + "/../../utils/common")) +sys.path.append(os.path.abspath(os.path.join( + os.path.dirname(os.path.realpath(__file__)), "../../utils/common"))) import gitscraper @@ -63,11 +61,11 @@ gitpaths = [langbase] def printhelp(): - print "Usage:", sys.argv[0], "[options]" - print "Print translation statistics suitable for pasting in the wiki." - print "Options:" - print " --pretty: display pretty output instead of wiki-style" - print " --help: show this help" + print("Usage:", sys.argv[0], "[options]") + print("Print translation statistics suitable for pasting in the wiki.") + print("Options:") + print(" --pretty: display pretty output instead of wiki-style") + print(" --help: show this help") def main(): @@ -77,34 +75,36 @@ def main(): sys.exit(0) if len(sys.argv) > 1: if sys.argv[1] == '--pretty': - pretty = 1 + pretty = True else: - pretty = 0 + pretty = False # get gitpaths to temporary folder workfolder = tempfile.mkdtemp() + "/" repo = os.path.abspath(os.path.join(os.path.dirname(__file__), "../..")) tree = gitscraper.get_refs(repo)['refs/remotes/origin/master'] - filesprops = gitscraper.scrape_files(repo, tree, gitpaths, dest=workfolder, - timestamp_files=["rbutil/rbutilqt/lang"]) + filesprops = gitscraper.scrape_files( + repo, tree, gitpaths, dest=workfolder, + timestamp_files=["rbutil/rbutilqt/lang"]) projectfolder = workfolder + langbase # lupdate translations and drop all obsolete translations subprocess.Popen(["lupdate-qt4", "-no-obsolete", "rbutilqt.pro"], - stdout=subprocess.PIPE, stderr=subprocess.PIPE, - cwd=projectfolder).communicate() + stdout=subprocess.PIPE, stderr=subprocess.PIPE, + cwd=projectfolder).communicate() # lrelease translations to get status output = subprocess.Popen(["lrelease-qt4", "rbutilqt.pro"], - stdout=subprocess.PIPE, stderr=subprocess.PIPE, - cwd=projectfolder).communicate() - lines = re.split(r"\n", output[0]) + stdout=subprocess.PIPE, stderr=subprocess.PIPE, + cwd=projectfolder).communicate() + lines = re.split(r"\n", output[0].decode()) re_updating = re.compile(r"^Updating.*") re_generated = re.compile(r"Generated.*") re_ignored = re.compile(r"Ignored.*") re_qmlang = re.compile(r"'.*/rbutil_(.*)\.qm'") re_qmbase = re.compile(r"'.*/(rbutil_.*)\.qm'") - re_genout = re.compile(r"[^0-9]([0-9]+) .*[^0-9]([0-9]+) .*[^0-9]([0-9]+) ") + re_genout = re.compile( + r"[^0-9]([0-9]+) .*[^0-9]([0-9]+) .*[^0-9]([0-9]+) ") re_ignout = re.compile(r"([0-9]+) ") # print header @@ -114,25 +114,27 @@ def main(): if titlemax < cur: titlemax = cur - if pretty == 1: + if pretty: spaces = [7, 5, 5, 5, 5, 27, 17] delim = "+--" + titlemax * "-" for s in spaces: delim += "+" + "-" * s delim += "+" - head = "| Language" + (titlemax - 8) * " " \ - + " | Code |Trans| Fin |Unfin| Untr| Updated | Done |" - print delim - print "|" + " " * ((len(head) / 2 - len(tree) / 2) - 1) + str(tree) \ - + " " * ((len(head) / 2 - len(tree) / 2) - 1) + "|" - print delim - print head - print delim + head = ("| {:%s} | {:6}|{:5}|{:5}|{:5}|{:5}| {:26}| {:16}|" + % titlemax).format("Language", "Code", "Trans", "Fin", "Unfin", + "Untr", "Updated", "Done") + print(delim) + print(("| {:^%s} |" % (len(head) - 4)).format(tree)) + print(delim) + print(head) + print(delim) else: - r = str(tree) + " (" + gitscraper.get_file_timestamp(repo, tree, ".") + ")" - print "| *Translation status as of revision " + r + "* ||||||||" - print "| *Language* | *Language Code* | *Translations* | *Finished* | " \ - "*Unfinished* | *Untranslated* | *Updated* | *Done* |" + r = "%s (%s)" % (str(tree), + gitscraper.get_file_timestamp(repo, tree, ".")) + print("| *Translation status as of revision %s* ||||||||" % r) + print("| *Language* | *Language Code* | *Translations* " + "| *Finished* | *Unfinished* | *Untranslated* | *Updated* " + "| *Done* |") # scan output i = 0 @@ -140,20 +142,20 @@ def main(): line = lines[i] if re_updating.search(line): lang = re_qmlang.findall(line) - tsfile = "rbutil/rbutilqt/lang/" + re_qmbase.findall(line)[0] + ".ts" + tsfile = "rbutil/rbutilqt/lang/%s.ts" % re_qmbase.findall(line)[0] tsdate = filesprops[1][tsfile] line = lines[i + 1] if re_generated.search(line): values = re_genout.findall(line) - translations = string.atoi(values[0][0]) - finished = string.atoi(values[0][1]) - unfinished = string.atoi(values[0][2]) + translations = int(values[0][0]) + finished = int(values[0][1]) + unfinished = int(values[0][2]) line = lines[i + 2] if not line.strip(): line = lines[i + 3] if re_ignored.search(line): - ignored = string.atoi(re_ignout.findall(line)[0]) + ignored = int(re_ignout.findall(line)[0]) else: ignored = 0 if lang[0] in langs: @@ -161,34 +163,38 @@ def main(): else: name = '(unknown)' - percent = (float(finished + unfinished) * 100 / float(translations + ignored)) + percent = (finished + unfinished) * 100. / (translations + ignored) bar = "#" * int(percent / 10) if (percent % 10) > 5: bar += "+" bar += " " * (10 - len(bar)) - if pretty == 1: + if pretty: fancylang = lang[0] + " " * (5 - len(lang[0])) else: fancylang = lang[0] - status = [fancylang, translations, finished, unfinished, ignored, tsdate, percent, bar] - if pretty == 1: - thisname = name + (titlemax - len(name)) * " " - print "| " + thisname + " | %5s | %3s | %3s | %3s | %3s | %25s | %3i%% %s |" % tuple(status) + if pretty: + print(("| {:%i} | {:5} | {:3} | {:3} | {:3} | {:3} | {:25} | " + "{:3}%% {} |" + % titlemax).format( + name, fancylang, translations, finished, unfinished, + ignored, tsdate, int(percent), bar)) else: if percent > 90: - color = '%%GREEN%%' + color = r'%GREEN%' else: if percent > 50: - color = '%%ORANGE%%' + color = r'%ORANGE%' else: - color = '%%RED%%' + color = r'%RED%' - text = "| " + name + " | %s | %s | %s | %s | %s | %s | " + color + "%3i%%%%ENDCOLOR%% %s |" - print text % tuple(status) + print("| %s | %s | %s | %s | %s | %s | %s | %s %i%% " + "%%ENDCOLOR%% %s |" % + (name, fancylang, translations, finished, unfinished, + ignored, tsdate, color, percent, bar)) i += 1 - if pretty == 1: - print delim + if pretty: + print(delim) shutil.rmtree(workfolder) -- cgit