diff --git a/scripts/code.py b/scripts/code.py index 7cc06958..f2a1a5d5 100755 --- a/scripts/code.py +++ b/scripts/code.py @@ -801,10 +801,13 @@ def table(Result, results, diff_results=None, *, # figure out a good label if labels is not None: - label = ','.join(str(getattr(r, k) - if getattr(r, k) is not None - else '') - for k in labels) + label = next( + ','.join(str(getattr(r_, k) + if getattr(r_, k) is not None + else '') + for k in labels) + for r_ in [r, diff_r] + if r_ is not None) else: label = name diff --git a/scripts/cov.py b/scripts/cov.py index 48f23bd5..f512462c 100755 --- a/scripts/cov.py +++ b/scripts/cov.py @@ -662,10 +662,13 @@ def table(Result, results, diff_results=None, *, # figure out a good label if labels is not None: - label = ','.join(str(getattr(r, k) - if getattr(r, k) is not None - else '') - for k in labels) + label = next( + ','.join(str(getattr(r_, k) + if getattr(r_, k) is not None + else '') + for k in labels) + for r_ in [r, diff_r] + if r_ is not None) else: label = name diff --git a/scripts/csv.py b/scripts/csv.py index ce73603d..4d0919b5 100755 --- a/scripts/csv.py +++ b/scripts/csv.py @@ -1338,7 +1338,7 @@ def openio(path, mode='r', buffering=-1): else: return open(path, mode, buffering) -def collect(csv_paths, *, +def collect_csv(csv_paths, *, depth=1, children=None, notes=None, @@ -1944,10 +1944,13 @@ def table(Result, results, diff_results=None, *, # figure out a good label if labels is not None: - label = ','.join(str(getattr(r, k) - if getattr(r, k) is not None - else '') - for k in labels) + label = next( + ','.join(str(getattr(r_, k) + if getattr(r_, k) is not None + else '') + for k in labels) + for r_ in [r, diff_r] + if r_ is not None) else: label = name @@ -2221,7 +2224,7 @@ def main(csv_paths, *, sys.exit(1) # collect info - fields_, results = collect(csv_paths, + fields_, results = collect_csv(csv_paths, depth=depth, children=children, notes=notes, @@ -2229,7 +2232,7 @@ def main(csv_paths, *, else: # use is just an alias but takes priority - fields_, results = collect([args['use']], + fields_, results = collect_csv([args['use']], depth=depth, children=children, notes=notes, @@ -2307,21 +2310,39 @@ def main(csv_paths, *, # find previous results? diff_results = None if args.get('diff') or args.get('percent'): + # note! don't use read_csv here + # + # it's tempting now that we have a Result type, but we want to + # make sure all the defines/exprs/mods/etc are evaluated in the + # same order try: - diff_results = read_csv( - args.get('diff') or args.get('percent'), - Result, + _, diff_results = collect_csv( + [args.get('diff') or args.get('percent')], depth=depth, + children=children, + notes=notes, **args) except FileNotFoundError: diff_results = [] + # homogenize + diff_results = homogenize(Result, diff_results, + enumerates=enumerates, + defines=defines, + depth=depth) + # fold diff_results = fold(Result, diff_results, by=by, - defines=defines, depth=depth) + # hotify? + if hot: + diff_results = hotify(Result, diff_results, + enumerates=enumerates, + depth=depth, + hot=hot) + # print table if not args.get('quiet'): table(Result, results, diff_results, diff --git a/scripts/ctx.py b/scripts/ctx.py index c85d4152..5d2b6060 100755 --- a/scripts/ctx.py +++ b/scripts/ctx.py @@ -995,7 +995,6 @@ def table(Result, results, diff_results=None, *, def table_recurse(results_, diff_results_, depth_, prefixes=('', '', '', '')): - # build the children table at each layer table_ = { ','.join(str(getattr(r, k) @@ -1060,10 +1059,13 @@ def table(Result, results, diff_results=None, *, # figure out a good label if labels is not None: - label = ','.join(str(getattr(r, k) - if getattr(r, k) is not None - else '') - for k in labels) + label = next( + ','.join(str(getattr(r_, k) + if getattr(r_, k) is not None + else '') + for k in labels) + for r_ in [r, diff_r] + if r_ is not None) else: label = name @@ -1337,6 +1339,12 @@ def main(obj_paths, *, defines=defines, depth=depth) + # hotify? + if hot: + diff_results = hotify(CtxResult, diff_results, + depth=depth, + hot=hot) + # print table if not args.get('quiet'): table(CtxResult, results, diff_results, diff --git a/scripts/data.py b/scripts/data.py index a1cbc573..bcab260c 100755 --- a/scripts/data.py +++ b/scripts/data.py @@ -801,10 +801,13 @@ def table(Result, results, diff_results=None, *, # figure out a good label if labels is not None: - label = ','.join(str(getattr(r, k) - if getattr(r, k) is not None - else '') - for k in labels) + label = next( + ','.join(str(getattr(r_, k) + if getattr(r_, k) is not None + else '') + for k in labels) + for r_ in [r, diff_r] + if r_ is not None) else: label = name diff --git a/scripts/perf.py b/scripts/perf.py index fde71e8d..96861330 100755 --- a/scripts/perf.py +++ b/scripts/perf.py @@ -1163,10 +1163,13 @@ def table(Result, results, diff_results=None, *, # figure out a good label if labels is not None: - label = ','.join(str(getattr(r, k) - if getattr(r, k) is not None - else '') - for k in labels) + label = next( + ','.join(str(getattr(r_, k) + if getattr(r_, k) is not None + else '') + for k in labels) + for r_ in [r, diff_r] + if r_ is not None) else: label = name @@ -1557,6 +1560,12 @@ def report(perf_paths, *, defines=defines, depth=depth) + # hotify? + if hot: + diff_results = hotify(PerfResult, diff_results, + depth=depth, + hot=hot) + # print table if not args.get('quiet'): if (args.get('annotate') diff --git a/scripts/perfbd.py b/scripts/perfbd.py index 8408c169..d81ee937 100755 --- a/scripts/perfbd.py +++ b/scripts/perfbd.py @@ -1133,10 +1133,13 @@ def table(Result, results, diff_results=None, *, # figure out a good label if labels is not None: - label = ','.join(str(getattr(r, k) - if getattr(r, k) is not None - else '') - for k in labels) + label = next( + ','.join(str(getattr(r_, k) + if getattr(r_, k) is not None + else '') + for k in labels) + for r_ in [r, diff_r] + if r_ is not None) else: label = name @@ -1554,6 +1557,12 @@ def report(paths, *, defines=defines, depth=depth) + # hotify? + if hot: + diff_results = hotify(PerfBdResult, diff_results, + depth=depth, + hot=hot) + # print table if not args.get('quiet'): if (args.get('annotate') diff --git a/scripts/stack.py b/scripts/stack.py index c1a28fb9..e9c16903 100755 --- a/scripts/stack.py +++ b/scripts/stack.py @@ -805,10 +805,13 @@ def table(Result, results, diff_results=None, *, # figure out a good label if labels is not None: - label = ','.join(str(getattr(r, k) - if getattr(r, k) is not None - else '') - for k in labels) + label = next( + ','.join(str(getattr(r_, k) + if getattr(r_, k) is not None + else '') + for k in labels) + for r_ in [r, diff_r] + if r_ is not None) else: label = name @@ -1082,6 +1085,12 @@ def main(ci_paths, defines=defines, depth=depth) + # hotify? + if hot: + diff_results = hotify(StackResult, diff_results, + depth=depth, + hot=hot) + # print table if not args.get('quiet'): table(StackResult, results, diff_results, diff --git a/scripts/structs.py b/scripts/structs.py index c52c50a2..74c3b3dd 100755 --- a/scripts/structs.py +++ b/scripts/structs.py @@ -879,10 +879,13 @@ def table(Result, results, diff_results=None, *, # figure out a good label if labels is not None: - label = ','.join(str(getattr(r, k) - if getattr(r, k) is not None - else '') - for k in labels) + label = next( + ','.join(str(getattr(r_, k) + if getattr(r_, k) is not None + else '') + for k in labels) + for r_ in [r, diff_r] + if r_ is not None) else: label = name @@ -1156,6 +1159,12 @@ def main(obj_paths, *, defines=defines, depth=depth) + # hotify? + if hot: + diff_results = hotify(StructResult, diff_results, + depth=depth, + hot=hot) + # print table if not args.get('quiet'): table(StructResult, results, diff_results,