From 233525db0edf8c6bcd0897c3eb3ea6c212928e05 Mon Sep 17 00:00:00 2001 From: Christopher Haster Date: Thu, 5 Mar 2026 10:34:16 -0600 Subject: [PATCH] scripts: csv.py: Allowed custom o/n/d labels with -H/--hlabel So now you can override the old/new/delta names directly: -Hocode=before => before ncode dcode Note the existing behavior of prefixing a common label is still preserved: -Hcode=before => obefore nbefore dbefore --- scripts/code.py | 14 +++++++------- scripts/cov.py | 14 +++++++------- scripts/csv.py | 23 +++++++++++------------ scripts/ctx.py | 14 +++++++------- scripts/data.py | 14 +++++++------- scripts/perf.py | 14 +++++++------- scripts/perfbd.py | 14 +++++++------- scripts/stack.py | 14 +++++++------- scripts/structs.py | 14 +++++++------- 9 files changed, 67 insertions(+), 68 deletions(-) diff --git a/scripts/code.py b/scripts/code.py index b401060d..9947530c 100755 --- a/scripts/code.py +++ b/scripts/code.py @@ -661,7 +661,7 @@ def table(Result, results, diff_results=None, *, # header if not no_header: header = ['%s%s' % ( - ','.join((hlabel(k) if hlabel is not None else k) + ','.join((hlabel('',k) if hlabel is not None else k) for k in by if hidden is None or k not in hidden), ' (%d added, %d removed)' % ( sum(1 for n in table if n not in diff_table), @@ -673,18 +673,18 @@ def table(Result, results, diff_results=None, *, if not small_header else ''] if diff_results is None or percent_diff: for k in fields: - header.append(hlabel(k) if hlabel is not None else k) + header.append(hlabel('',k) if hlabel is not None else k) elif small_diff: for k in fields: - header.append('o'+(hlabel(k) if hlabel is not None else k)) - header.append('n'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('o',k) if hlabel is not None else 'o'+k)) + header.append((hlabel('n',k) if hlabel is not None else 'n'+k)) else: for k in fields: - header.append('o'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('o',k) if hlabel is not None else 'o'+k)) for k in fields: - header.append('n'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('n',k) if hlabel is not None else 'n'+k)) for k in fields: - header.append('d'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('d',k) if hlabel is not None else 'd'+k)) lines.append(header) # delete these to try to catch typos below, we need to rebuild diff --git a/scripts/cov.py b/scripts/cov.py index c4fd40d4..2f346c8e 100755 --- a/scripts/cov.py +++ b/scripts/cov.py @@ -530,7 +530,7 @@ def table(Result, results, diff_results=None, *, # header if not no_header: header = ['%s%s' % ( - ','.join((hlabel(k) if hlabel is not None else k) + ','.join((hlabel('',k) if hlabel is not None else k) for k in by if hidden is None or k not in hidden), ' (%d added, %d removed)' % ( sum(1 for n in table if n not in diff_table), @@ -542,18 +542,18 @@ def table(Result, results, diff_results=None, *, if not small_header else ''] if diff_results is None or percent_diff: for k in fields: - header.append(hlabel(k) if hlabel is not None else k) + header.append(hlabel('',k) if hlabel is not None else k) elif small_diff: for k in fields: - header.append('o'+(hlabel(k) if hlabel is not None else k)) - header.append('n'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('o',k) if hlabel is not None else 'o'+k)) + header.append((hlabel('n',k) if hlabel is not None else 'n'+k)) else: for k in fields: - header.append('o'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('o',k) if hlabel is not None else 'o'+k)) for k in fields: - header.append('n'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('n',k) if hlabel is not None else 'n'+k)) for k in fields: - header.append('d'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('d',k) if hlabel is not None else 'd'+k)) lines.append(header) # delete these to try to catch typos below, we need to rebuild diff --git a/scripts/csv.py b/scripts/csv.py index 29676150..f6061883 100755 --- a/scripts/csv.py +++ b/scripts/csv.py @@ -1892,9 +1892,6 @@ def collect_csv(csv_paths, *, for k, v in r.items() if k != notes and v.strip()} - # special handling for notes field - if notes is not None and notes in r: - r_[notes] = set(r[notes].split(',')) results.append(r_) # read json? @@ -2338,7 +2335,7 @@ def table(Result, results, diff_results=None, *, # header if not no_header: header = ['%s%s' % ( - ','.join((hlabel(k) if hlabel is not None else k) + ','.join((hlabel('',k) if hlabel is not None else k) for k in by if hidden is None or k not in hidden), ' (%d added, %d removed)' % ( sum(1 for n in table if n not in diff_table), @@ -2350,18 +2347,18 @@ def table(Result, results, diff_results=None, *, if not small_header else ''] if diff_results is None or percent_diff: for k in fields: - header.append(hlabel(k) if hlabel is not None else k) + header.append(hlabel('',k) if hlabel is not None else k) elif small_diff: for k in fields: - header.append('o'+(hlabel(k) if hlabel is not None else k)) - header.append('n'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('o',k) if hlabel is not None else 'o'+k)) + header.append((hlabel('n',k) if hlabel is not None else 'n'+k)) else: for k in fields: - header.append('o'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('o',k) if hlabel is not None else 'o'+k)) for k in fields: - header.append('n'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('n',k) if hlabel is not None else 'n'+k)) for k in fields: - header.append('d'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('d',k) if hlabel is not None else 'd'+k)) lines.append(header) # delete these to try to catch typos below, we need to rebuild @@ -3227,8 +3224,10 @@ def main(csv_paths, *, hidden=hidden, sort=sort, depth=depth, - hlabel=(lambda hlabels_: (lambda k: - punescape(hlabels_[k]) if k in hlabels_ else k) + hlabel=(lambda hlabels_: (lambda p,k: + punescape(hlabels_[p+k]) if p+k in hlabels_ + else p+punescape(hlabels_[k]) if k in hlabels_ + else p+k) )(dict(hlabels)) if hlabels else None, tlabel=(lambda r: punescape(tlabel, PunescapeGetattr(r))) diff --git a/scripts/ctx.py b/scripts/ctx.py index 6fcb4112..096eb31a 100755 --- a/scripts/ctx.py +++ b/scripts/ctx.py @@ -920,7 +920,7 @@ def table(Result, results, diff_results=None, *, # header if not no_header: header = ['%s%s' % ( - ','.join((hlabel(k) if hlabel is not None else k) + ','.join((hlabel('',k) if hlabel is not None else k) for k in by if hidden is None or k not in hidden), ' (%d added, %d removed)' % ( sum(1 for n in table if n not in diff_table), @@ -932,18 +932,18 @@ def table(Result, results, diff_results=None, *, if not small_header else ''] if diff_results is None or percent_diff: for k in fields: - header.append(hlabel(k) if hlabel is not None else k) + header.append(hlabel('',k) if hlabel is not None else k) elif small_diff: for k in fields: - header.append('o'+(hlabel(k) if hlabel is not None else k)) - header.append('n'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('o',k) if hlabel is not None else 'o'+k)) + header.append((hlabel('n',k) if hlabel is not None else 'n'+k)) else: for k in fields: - header.append('o'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('o',k) if hlabel is not None else 'o'+k)) for k in fields: - header.append('n'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('n',k) if hlabel is not None else 'n'+k)) for k in fields: - header.append('d'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('d',k) if hlabel is not None else 'd'+k)) lines.append(header) # delete these to try to catch typos below, we need to rebuild diff --git a/scripts/data.py b/scripts/data.py index a3d558a2..7790f31f 100755 --- a/scripts/data.py +++ b/scripts/data.py @@ -661,7 +661,7 @@ def table(Result, results, diff_results=None, *, # header if not no_header: header = ['%s%s' % ( - ','.join((hlabel(k) if hlabel is not None else k) + ','.join((hlabel('',k) if hlabel is not None else k) for k in by if hidden is None or k not in hidden), ' (%d added, %d removed)' % ( sum(1 for n in table if n not in diff_table), @@ -673,18 +673,18 @@ def table(Result, results, diff_results=None, *, if not small_header else ''] if diff_results is None or percent_diff: for k in fields: - header.append(hlabel(k) if hlabel is not None else k) + header.append(hlabel('',k) if hlabel is not None else k) elif small_diff: for k in fields: - header.append('o'+(hlabel(k) if hlabel is not None else k)) - header.append('n'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('o',k) if hlabel is not None else 'o'+k)) + header.append((hlabel('n',k) if hlabel is not None else 'n'+k)) else: for k in fields: - header.append('o'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('o',k) if hlabel is not None else 'o'+k)) for k in fields: - header.append('n'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('n',k) if hlabel is not None else 'n'+k)) for k in fields: - header.append('d'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('d',k) if hlabel is not None else 'd'+k)) lines.append(header) # delete these to try to catch typos below, we need to rebuild diff --git a/scripts/perf.py b/scripts/perf.py index 7c138a1b..63744f35 100755 --- a/scripts/perf.py +++ b/scripts/perf.py @@ -1019,7 +1019,7 @@ def table(Result, results, diff_results=None, *, # header if not no_header: header = ['%s%s' % ( - ','.join((hlabel(k) if hlabel is not None else k) + ','.join((hlabel('',k) if hlabel is not None else k) for k in by if hidden is None or k not in hidden), ' (%d added, %d removed)' % ( sum(1 for n in table if n not in diff_table), @@ -1031,18 +1031,18 @@ def table(Result, results, diff_results=None, *, if not small_header else ''] if diff_results is None or percent_diff: for k in fields: - header.append(hlabel(k) if hlabel is not None else k) + header.append(hlabel('',k) if hlabel is not None else k) elif small_diff: for k in fields: - header.append('o'+(hlabel(k) if hlabel is not None else k)) - header.append('n'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('o',k) if hlabel is not None else 'o'+k)) + header.append((hlabel('n',k) if hlabel is not None else 'n'+k)) else: for k in fields: - header.append('o'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('o',k) if hlabel is not None else 'o'+k)) for k in fields: - header.append('n'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('n',k) if hlabel is not None else 'n'+k)) for k in fields: - header.append('d'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('d',k) if hlabel is not None else 'd'+k)) lines.append(header) # delete these to try to catch typos below, we need to rebuild diff --git a/scripts/perfbd.py b/scripts/perfbd.py index 6e7f181d..d5a4794f 100755 --- a/scripts/perfbd.py +++ b/scripts/perfbd.py @@ -993,7 +993,7 @@ def table(Result, results, diff_results=None, *, # header if not no_header: header = ['%s%s' % ( - ','.join((hlabel(k) if hlabel is not None else k) + ','.join((hlabel('',k) if hlabel is not None else k) for k in by if hidden is None or k not in hidden), ' (%d added, %d removed)' % ( sum(1 for n in table if n not in diff_table), @@ -1005,18 +1005,18 @@ def table(Result, results, diff_results=None, *, if not small_header else ''] if diff_results is None or percent_diff: for k in fields: - header.append(hlabel(k) if hlabel is not None else k) + header.append(hlabel('',k) if hlabel is not None else k) elif small_diff: for k in fields: - header.append('o'+(hlabel(k) if hlabel is not None else k)) - header.append('n'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('o',k) if hlabel is not None else 'o'+k)) + header.append((hlabel('n',k) if hlabel is not None else 'n'+k)) else: for k in fields: - header.append('o'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('o',k) if hlabel is not None else 'o'+k)) for k in fields: - header.append('n'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('n',k) if hlabel is not None else 'n'+k)) for k in fields: - header.append('d'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('d',k) if hlabel is not None else 'd'+k)) lines.append(header) # delete these to try to catch typos below, we need to rebuild diff --git a/scripts/stack.py b/scripts/stack.py index ec600f4c..d854fc95 100755 --- a/scripts/stack.py +++ b/scripts/stack.py @@ -661,7 +661,7 @@ def table(Result, results, diff_results=None, *, # header if not no_header: header = ['%s%s' % ( - ','.join((hlabel(k) if hlabel is not None else k) + ','.join((hlabel('',k) if hlabel is not None else k) for k in by if hidden is None or k not in hidden), ' (%d added, %d removed)' % ( sum(1 for n in table if n not in diff_table), @@ -673,18 +673,18 @@ def table(Result, results, diff_results=None, *, if not small_header else ''] if diff_results is None or percent_diff: for k in fields: - header.append(hlabel(k) if hlabel is not None else k) + header.append(hlabel('',k) if hlabel is not None else k) elif small_diff: for k in fields: - header.append('o'+(hlabel(k) if hlabel is not None else k)) - header.append('n'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('o',k) if hlabel is not None else 'o'+k)) + header.append((hlabel('n',k) if hlabel is not None else 'n'+k)) else: for k in fields: - header.append('o'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('o',k) if hlabel is not None else 'o'+k)) for k in fields: - header.append('n'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('n',k) if hlabel is not None else 'n'+k)) for k in fields: - header.append('d'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('d',k) if hlabel is not None else 'd'+k)) lines.append(header) # delete these to try to catch typos below, we need to rebuild diff --git a/scripts/structs.py b/scripts/structs.py index 87a0690e..bba5511f 100755 --- a/scripts/structs.py +++ b/scripts/structs.py @@ -809,7 +809,7 @@ def table(Result, results, diff_results=None, *, # header if not no_header: header = ['%s%s' % ( - ','.join((hlabel(k) if hlabel is not None else k) + ','.join((hlabel('',k) if hlabel is not None else k) for k in by if hidden is None or k not in hidden), ' (%d added, %d removed)' % ( sum(1 for n in table if n not in diff_table), @@ -821,18 +821,18 @@ def table(Result, results, diff_results=None, *, if not small_header else ''] if diff_results is None or percent_diff: for k in fields: - header.append(hlabel(k) if hlabel is not None else k) + header.append(hlabel('',k) if hlabel is not None else k) elif small_diff: for k in fields: - header.append('o'+(hlabel(k) if hlabel is not None else k)) - header.append('n'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('o',k) if hlabel is not None else 'o'+k)) + header.append((hlabel('n',k) if hlabel is not None else 'n'+k)) else: for k in fields: - header.append('o'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('o',k) if hlabel is not None else 'o'+k)) for k in fields: - header.append('n'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('n',k) if hlabel is not None else 'n'+k)) for k in fields: - header.append('d'+(hlabel(k) if hlabel is not None else k)) + header.append((hlabel('d',k) if hlabel is not None else 'd'+k)) lines.append(header) # delete these to try to catch typos below, we need to rebuild