Index: CompareDebugInfo.py =================================================================== --- CompareDebugInfo.py +++ CompareDebugInfo.py @@ -1,4 +1,5 @@ #!/usr/bin/python +from __future__ import print_function import os import sys @@ -45,25 +46,24 @@ self.values[arg_name] = value def __repr__(self): - print self.name - items = self.values.items() - for i in range(len(items)): - print items[i][0]," = ",items[i][1] + print(self.name) + for k, v in self.values.items(): + print(k, "=", v) return '' def compare_args(self, other, file): myitems = self.values.items() - otheritems = other.values.items() + otheritems = list(other.values.items()) match = False - for i in range(len(myitems)): + for i, my_item in enumerate(my_items): if i >= len(otheritems): match = True - self.missing_args.append(myitems[i][0]) - elif cmp(myitems[i][1], otheritems[i][1]): + self.missing_args.append(myitem[0]) + elif cmp(myitem[1], otheritems[i][1]): match = True - self.notmatching_args.append(myitems[i][0]) + self.notmatching_args.append(myitem[0]) else: - self.matching_args.append(myitems[i][0]) + self.matching_args.append(myitem[0]) self.print_list(self.matching_args, " Matching arguments ", file) self.print_list(self.notmatching_args, " Not Matching arguments ", file) @@ -108,9 +108,7 @@ f = open(LOG_FILE, "w") f.write("Log output\n") -for f2bp in range(len(f2_items)): - id = f2_items[f2bp][0] - bp = f2_items[f2bp][1] +for id, bp in f2_items: bp1 = f1_breakpoints.get(id) if bp1 is None: bp.setMissing() @@ -127,9 +125,7 @@ nf2_items = nf2_breakpoints.items() nfl = open(NATIVE_LOG_FILE, "w") -for nf2bp in range(len(nf2_items)): - id = nf2_items[nf2bp][0] - bp = nf2_items[nf2bp][1] +for id, bp in nf2_items: bp1 = nf1_breakpoints.get(id) if bp1 is None: bp.setMissing() @@ -141,8 +137,8 @@ f1_matching_arg_count = 0 f1_notmatching_arg_count = 0 f1_missing_arg_count = 0 -for idx in range(len(f1_items)): - bp = f1_items[idx][1] +for f1_item in f1_items: + bp = f1_item[1] f1_arg_count = f1_arg_count + bp.getArgCount() f1_matching_arg_count = f1_matching_arg_count + bp.getMatchingArgCount() f1_notmatching_arg_count = f1_notmatching_arg_count + bp.getNotMatchingArgCount() @@ -152,8 +148,8 @@ nf1_matching_arg_count = 0 nf1_notmatching_arg_count = 0 nf1_missing_arg_count = 0 -for idx in range(len(nf1_items)): - bp = nf1_items[idx][1] +for nf1_item in nf1_items: + bp = nf1_item[1] nf1_arg_count = nf1_arg_count + bp.getArgCount() nf1_matching_arg_count = nf1_matching_arg_count + bp.getMatchingArgCount() nf1_notmatching_arg_count = nf1_notmatching_arg_count + bp.getNotMatchingArgCount() Index: FindMissingLineNo.py =================================================================== --- FindMissingLineNo.py +++ FindMissingLineNo.py @@ -40,9 +40,7 @@ read_inputfile(XFAIL_FILE, xfailed_lines) dbg_line_items = dbg_lines.items() -for f in range(len(dbg_line_items)): - fname = dbg_line_items[f][0] - fset = dbg_line_items[f][1] +for fname, fset in dbg_line_items: optset = dbg_opt_lines.get(fname) nativeoptset = native_dbg_opt_lines.get(fname) xfailedset = xfailed_lines.get(os.path.basename(fname)) Index: litsupport/modules/stats.py =================================================================== --- litsupport/modules/stats.py +++ litsupport/modules/stats.py @@ -14,7 +14,7 @@ except Exception as e: logging.warning("Could not read '%s'", statsfilename, exc_info=e) return - for name, value in stats.iteritems(): + for name, value in stats.items(): global_stats[name] += value @@ -37,7 +37,7 @@ logging.warning("No stats for '%s'", context.test.getFullName()) result = dict() - for key, value in stats.iteritems(): + for key, value in stats.items(): result[key] = value return result Index: utils/compare.py =================================================================== --- utils/compare.py +++ utils/compare.py @@ -1,8 +1,10 @@ -#!/usr/bin/env python2.7 +#!/usr/bin/env python """Tool to filter, organize, compare and display benchmarking results. Usefull for smaller datasets. It works great with a few dozen runs it is not designed to deal with hundreds. Requires the pandas library to be installed.""" +from __future__ import print_function + import pandas as pd import sys import os.path @@ -19,7 +21,7 @@ info_columns = ['hash'] # Pass1: Figure out metrics (= the column index) if 'tests' not in jsondata: - print "%s: Could not find toplevel 'tests' key" + print("%s: Could not find toplevel 'tests' key") sys.exit(1) for test in jsondata['tests']: name = test.get("name") @@ -31,7 +33,7 @@ sys.exit(1) names.add(name) if "metrics" not in test: - print "Warning: '%s' has No metrics!" % test['name'] + print("Warning: '%s' has No metrics!" % test['name']) continue for name in test["metrics"].keys(): if name not in columnindexes: @@ -54,9 +56,9 @@ datarow = [nan] * len(columns) if "metrics" in test: - for (metricname, value) in test['metrics'].iteritems(): + for (metricname, value) in test['metrics'].items(): datarow[columnindexes[metricname]] = value - for (name, value) in test.iteritems(): + for (name, value) in test.items(): index = columnindexes.get(name) if index is not None: datarow[index] = test[name] @@ -148,7 +150,7 @@ n_after = len(after.groupby(level=1)) n_filtered = n_before - n_after if n_filtered != 0: - print "%s: %s (filtered out)" % (reason, n_filtered) + print("%s: %s (filtered out)" % (reason, n_filtered)) # Truncate a string to a maximum length by keeping a prefix, a suffix and ... # in the middle @@ -222,8 +224,8 @@ pd.set_option("display.max_colwidth", 0) out = dataout.to_string(index=False, justify='left', float_format=float_format, formatters=formatters) - print out - print d.describe() + print(out) + print(d.describe()) if __name__ == "__main__": parser = argparse.ArgumentParser(prog='compare.py') @@ -303,7 +305,7 @@ # Filter data proggroup = data.groupby(level=1) initial_size = len(proggroup.indices) - print "Tests: %s" % (initial_size,) + print("Tests: %s" % (initial_size,)) if config.filter_failed and hasattr(data, 'Exec'): newdata = filter_failed(data) print_filter_stats("Failed", data, newdata) @@ -326,10 +328,10 @@ data = newdata final_size = len(data.groupby(level=1)) if final_size != initial_size: - print "Remaining: %d" % (final_size,) + print("Remaining: %d" % (final_size,)) # Reduce / add columns - print "Metric: %s" % (",".join(metrics),) + print("Metric: %s" % (",".join(metrics),)) if len(metrics) > 0: data = data[metrics] data = add_diff_column(data) @@ -339,7 +341,7 @@ sortkey = data.columns[0] # Print data - print "" + print("") shorten_names = not config.full limit_output = (not config.all) and (not config.full) print_result(data, limit_output, shorten_names, config.show_diff, sortkey) Index: utils/tdiff.py =================================================================== --- utils/tdiff.py +++ utils/tdiff.py @@ -95,7 +95,7 @@ if sc_arg_max <= 0: return 10000 # wild guess env_len = 0 - for key,val in os.environ.iteritems(): + for key,val in os.environ.items(): env_len += len(key) + len(val) + 10 return sc_arg_max - env_len @@ -140,12 +140,12 @@ if config.mode == 'sources': # Take leafs in the dependency tree - for target, depnode in tree.iteritems(): + for target, depnode in tree.items(): if len(depnode.inputs) == 0: yield target else: # Take files ending in '.o' - for target, depnode in tree.iteritems(): + for target, depnode in tree.items(): if target.endswith(".o"): # Determine .s/.stats ending used by -save-temps=obj or # -save-stats=obj