From 63d047484add1d5f8be8bb6e5ac88950b282ec8e Mon Sep 17 00:00:00 2001 From: Christopher Haster Date: Thu, 5 Mar 2026 10:19:14 -0600 Subject: [PATCH] scripts: Reverted csv read/writing to pass notes through On second thought, let's keep the more complicated results contained in the json format. No reason to create complexity we don't need. Note this also rips note parsing out of csv.py's collect_csv. Now all scripts should ignore note fields in csv files, but accept note fields in json files. The impl is still in the history if we want to revert this in the future. --- scripts/code.py | 23 +++++------------------ scripts/cov.py | 23 +++++------------------ scripts/csv.py | 23 ++++------------------- scripts/ctx.py | 23 +++++------------------ scripts/data.py | 23 +++++------------------ scripts/perf.py | 23 +++++------------------ scripts/perfbd.py | 23 +++++------------------ scripts/stack.py | 23 +++++------------------ scripts/structs.py | 23 +++++------------------ 9 files changed, 44 insertions(+), 163 deletions(-) diff --git a/scripts/code.py b/scripts/code.py index 72446c6a..b401060d 100755 --- a/scripts/code.py +++ b/scripts/code.py @@ -937,10 +937,10 @@ def read_csv(path, Result, *, with openio(path, 'r') as f: # csv or json? assume json starts with [ - json = (f.buffer.peek(1)[:1] == b'[') + is_json = (f.buffer.peek(1)[:1] == b'[') # read csv? - if not json: + if not is_json: results = [] reader = csv.DictReader(f, restval='') for r in reader: @@ -955,13 +955,7 @@ def read_csv(path, Result, *, and r[k].strip()} | {k: r[prefix+k] for k in fields if prefix+k in r - and r[prefix+k].strip()} - | ({Result._notes: set(n.strip() - for n in r[Result._notes].split(',') - if n.strip())} - if hasattr(Result, '_notes') - and Result._notes in r - else {})))) + and r[prefix+k].strip()}))) except TypeError: pass return results @@ -1027,9 +1021,7 @@ def write_csv(path, Result, results, *, writer = csv.DictWriter(f, list( co.OrderedDict.fromkeys(it.chain( by, - (prefix+k for k in fields), - [Result._notes] if hasattr(Result, '_notes') - else [])).keys())) + (prefix+k for k in fields))).keys())) writer.writeheader() for r in results: # note this allows by/fields to overlap @@ -1039,12 +1031,7 @@ def write_csv(path, Result, results, *, if getattr(r, k) is not None} | {prefix+k: getattr(r, k).__csv__() for k in fields - if getattr(r, k) is not None} - | ({Result._notes: ','.join( - getattr(r, Result._notes))} - if hasattr(Result, '_notes') - and getattr(r, Result._notes) - else {})) + if getattr(r, k) is not None}) # write json? else: diff --git a/scripts/cov.py b/scripts/cov.py index ee988350..c4fd40d4 100755 --- a/scripts/cov.py +++ b/scripts/cov.py @@ -806,10 +806,10 @@ def read_csv(path, Result, *, with openio(path, 'r') as f: # csv or json? assume json starts with [ - json = (f.buffer.peek(1)[:1] == b'[') + is_json = (f.buffer.peek(1)[:1] == b'[') # read csv? - if not json: + if not is_json: results = [] reader = csv.DictReader(f, restval='') for r in reader: @@ -824,13 +824,7 @@ def read_csv(path, Result, *, and r[k].strip()} | {k: r[prefix+k] for k in fields if prefix+k in r - and r[prefix+k].strip()} - | ({Result._notes: set(n.strip() - for n in r[Result._notes].split(',') - if n.strip())} - if hasattr(Result, '_notes') - and Result._notes in r - else {})))) + and r[prefix+k].strip()}))) except TypeError: pass return results @@ -896,9 +890,7 @@ def write_csv(path, Result, results, *, writer = csv.DictWriter(f, list( co.OrderedDict.fromkeys(it.chain( by, - (prefix+k for k in fields), - [Result._notes] if hasattr(Result, '_notes') - else [])).keys())) + (prefix+k for k in fields))).keys())) writer.writeheader() for r in results: # note this allows by/fields to overlap @@ -908,12 +900,7 @@ def write_csv(path, Result, results, *, if getattr(r, k) is not None} | {prefix+k: getattr(r, k).__csv__() for k in fields - if getattr(r, k) is not None} - | ({Result._notes: ','.join( - getattr(r, Result._notes))} - if hasattr(Result, '_notes') - and getattr(r, Result._notes) - else {})) + if getattr(r, k) is not None}) # write json? else: diff --git a/scripts/csv.py b/scripts/csv.py index 4a099929..29676150 100755 --- a/scripts/csv.py +++ b/scripts/csv.py @@ -1894,9 +1894,7 @@ def collect_csv(csv_paths, *, and v.strip()} # special handling for notes field if notes is not None and notes in r: - r_[notes] = set(n.strip() - for n in r[notes].split(',') - if n.strip()) + r_[notes] = set(r[notes].split(',')) results.append(r_) # read json? @@ -2634,13 +2632,7 @@ def read_csv(path, Result, *, and r[k].strip()} | {k: r[prefix+k] for k in fields if prefix+k in r - and r[prefix+k].strip()} - | ({Result._notes: set(n.strip() - for n in r[Result._notes].split(',') - if n.strip())} - if hasattr(Result, '_notes') - and Result._notes in r - else {})))) + and r[prefix+k].strip()}))) except TypeError: pass return results @@ -2706,9 +2698,7 @@ def write_csv(path, Result, results, *, writer = csv.DictWriter(f, list( co.OrderedDict.fromkeys(it.chain( by, - (prefix+k for k in fields), - [Result._notes] if hasattr(Result, '_notes') - else [])).keys())) + (prefix+k for k in fields))).keys())) writer.writeheader() for r in results: # note this allows by/fields to overlap @@ -2718,12 +2708,7 @@ def write_csv(path, Result, results, *, if getattr(r, k) is not None} | {prefix+k: getattr(r, k).__csv__() for k in fields - if getattr(r, k) is not None} - | ({Result._notes: ','.join( - getattr(r, Result._notes))} - if hasattr(Result, '_notes') - and getattr(r, Result._notes) - else {})) + if getattr(r, k) is not None}) # write json? else: diff --git a/scripts/ctx.py b/scripts/ctx.py index 6a6eac71..6fcb4112 100755 --- a/scripts/ctx.py +++ b/scripts/ctx.py @@ -1196,10 +1196,10 @@ def read_csv(path, Result, *, with openio(path, 'r') as f: # csv or json? assume json starts with [ - json = (f.buffer.peek(1)[:1] == b'[') + is_json = (f.buffer.peek(1)[:1] == b'[') # read csv? - if not json: + if not is_json: results = [] reader = csv.DictReader(f, restval='') for r in reader: @@ -1214,13 +1214,7 @@ def read_csv(path, Result, *, and r[k].strip()} | {k: r[prefix+k] for k in fields if prefix+k in r - and r[prefix+k].strip()} - | ({Result._notes: set(n.strip() - for n in r[Result._notes].split(',') - if n.strip())} - if hasattr(Result, '_notes') - and Result._notes in r - else {})))) + and r[prefix+k].strip()}))) except TypeError: pass return results @@ -1286,9 +1280,7 @@ def write_csv(path, Result, results, *, writer = csv.DictWriter(f, list( co.OrderedDict.fromkeys(it.chain( by, - (prefix+k for k in fields), - [Result._notes] if hasattr(Result, '_notes') - else [])).keys())) + (prefix+k for k in fields))).keys())) writer.writeheader() for r in results: # note this allows by/fields to overlap @@ -1298,12 +1290,7 @@ def write_csv(path, Result, results, *, if getattr(r, k) is not None} | {prefix+k: getattr(r, k).__csv__() for k in fields - if getattr(r, k) is not None} - | ({Result._notes: ','.join( - getattr(r, Result._notes))} - if hasattr(Result, '_notes') - and getattr(r, Result._notes) - else {})) + if getattr(r, k) is not None}) # write json? else: diff --git a/scripts/data.py b/scripts/data.py index 9f2bf606..a3d558a2 100755 --- a/scripts/data.py +++ b/scripts/data.py @@ -937,10 +937,10 @@ def read_csv(path, Result, *, with openio(path, 'r') as f: # csv or json? assume json starts with [ - json = (f.buffer.peek(1)[:1] == b'[') + is_json = (f.buffer.peek(1)[:1] == b'[') # read csv? - if not json: + if not is_json: results = [] reader = csv.DictReader(f, restval='') for r in reader: @@ -955,13 +955,7 @@ def read_csv(path, Result, *, and r[k].strip()} | {k: r[prefix+k] for k in fields if prefix+k in r - and r[prefix+k].strip()} - | ({Result._notes: set(n.strip() - for n in r[Result._notes].split(',') - if n.strip())} - if hasattr(Result, '_notes') - and Result._notes in r - else {})))) + and r[prefix+k].strip()}))) except TypeError: pass return results @@ -1027,9 +1021,7 @@ def write_csv(path, Result, results, *, writer = csv.DictWriter(f, list( co.OrderedDict.fromkeys(it.chain( by, - (prefix+k for k in fields), - [Result._notes] if hasattr(Result, '_notes') - else [])).keys())) + (prefix+k for k in fields))).keys())) writer.writeheader() for r in results: # note this allows by/fields to overlap @@ -1039,12 +1031,7 @@ def write_csv(path, Result, results, *, if getattr(r, k) is not None} | {prefix+k: getattr(r, k).__csv__() for k in fields - if getattr(r, k) is not None} - | ({Result._notes: ','.join( - getattr(r, Result._notes))} - if hasattr(Result, '_notes') - and getattr(r, Result._notes) - else {})) + if getattr(r, k) is not None}) # write json? else: diff --git a/scripts/perf.py b/scripts/perf.py index 4a199674..7c138a1b 100755 --- a/scripts/perf.py +++ b/scripts/perf.py @@ -1295,10 +1295,10 @@ def read_csv(path, Result, *, with openio(path, 'r') as f: # csv or json? assume json starts with [ - json = (f.buffer.peek(1)[:1] == b'[') + is_json = (f.buffer.peek(1)[:1] == b'[') # read csv? - if not json: + if not is_json: results = [] reader = csv.DictReader(f, restval='') for r in reader: @@ -1313,13 +1313,7 @@ def read_csv(path, Result, *, and r[k].strip()} | {k: r[prefix+k] for k in fields if prefix+k in r - and r[prefix+k].strip()} - | ({Result._notes: set(n.strip() - for n in r[Result._notes].split(',') - if n.strip())} - if hasattr(Result, '_notes') - and Result._notes in r - else {})))) + and r[prefix+k].strip()}))) except TypeError: pass return results @@ -1385,9 +1379,7 @@ def write_csv(path, Result, results, *, writer = csv.DictWriter(f, list( co.OrderedDict.fromkeys(it.chain( by, - (prefix+k for k in fields), - [Result._notes] if hasattr(Result, '_notes') - else [])).keys())) + (prefix+k for k in fields))).keys())) writer.writeheader() for r in results: # note this allows by/fields to overlap @@ -1397,12 +1389,7 @@ def write_csv(path, Result, results, *, if getattr(r, k) is not None} | {prefix+k: getattr(r, k).__csv__() for k in fields - if getattr(r, k) is not None} - | ({Result._notes: ','.join( - getattr(r, Result._notes))} - if hasattr(Result, '_notes') - and getattr(r, Result._notes) - else {})) + if getattr(r, k) is not None}) # write json? else: diff --git a/scripts/perfbd.py b/scripts/perfbd.py index 57899077..6e7f181d 100755 --- a/scripts/perfbd.py +++ b/scripts/perfbd.py @@ -1269,10 +1269,10 @@ def read_csv(path, Result, *, with openio(path, 'r') as f: # csv or json? assume json starts with [ - json = (f.buffer.peek(1)[:1] == b'[') + is_json = (f.buffer.peek(1)[:1] == b'[') # read csv? - if not json: + if not is_json: results = [] reader = csv.DictReader(f, restval='') for r in reader: @@ -1287,13 +1287,7 @@ def read_csv(path, Result, *, and r[k].strip()} | {k: r[prefix+k] for k in fields if prefix+k in r - and r[prefix+k].strip()} - | ({Result._notes: set(n.strip() - for n in r[Result._notes].split(',') - if n.strip())} - if hasattr(Result, '_notes') - and Result._notes in r - else {})))) + and r[prefix+k].strip()}))) except TypeError: pass return results @@ -1359,9 +1353,7 @@ def write_csv(path, Result, results, *, writer = csv.DictWriter(f, list( co.OrderedDict.fromkeys(it.chain( by, - (prefix+k for k in fields), - [Result._notes] if hasattr(Result, '_notes') - else [])).keys())) + (prefix+k for k in fields))).keys())) writer.writeheader() for r in results: # note this allows by/fields to overlap @@ -1371,12 +1363,7 @@ def write_csv(path, Result, results, *, if getattr(r, k) is not None} | {prefix+k: getattr(r, k).__csv__() for k in fields - if getattr(r, k) is not None} - | ({Result._notes: ','.join( - getattr(r, Result._notes))} - if hasattr(Result, '_notes') - and getattr(r, Result._notes) - else {})) + if getattr(r, k) is not None}) # write json? else: diff --git a/scripts/stack.py b/scripts/stack.py index 07317178..ec600f4c 100755 --- a/scripts/stack.py +++ b/scripts/stack.py @@ -937,10 +937,10 @@ def read_csv(path, Result, *, with openio(path, 'r') as f: # csv or json? assume json starts with [ - json = (f.buffer.peek(1)[:1] == b'[') + is_json = (f.buffer.peek(1)[:1] == b'[') # read csv? - if not json: + if not is_json: results = [] reader = csv.DictReader(f, restval='') for r in reader: @@ -955,13 +955,7 @@ def read_csv(path, Result, *, and r[k].strip()} | {k: r[prefix+k] for k in fields if prefix+k in r - and r[prefix+k].strip()} - | ({Result._notes: set(n.strip() - for n in r[Result._notes].split(',') - if n.strip())} - if hasattr(Result, '_notes') - and Result._notes in r - else {})))) + and r[prefix+k].strip()}))) except TypeError: pass return results @@ -1027,9 +1021,7 @@ def write_csv(path, Result, results, *, writer = csv.DictWriter(f, list( co.OrderedDict.fromkeys(it.chain( by, - (prefix+k for k in fields), - [Result._notes] if hasattr(Result, '_notes') - else [])).keys())) + (prefix+k for k in fields))).keys())) writer.writeheader() for r in results: # note this allows by/fields to overlap @@ -1039,12 +1031,7 @@ def write_csv(path, Result, results, *, if getattr(r, k) is not None} | {prefix+k: getattr(r, k).__csv__() for k in fields - if getattr(r, k) is not None} - | ({Result._notes: ','.join( - getattr(r, Result._notes))} - if hasattr(Result, '_notes') - and getattr(r, Result._notes) - else {})) + if getattr(r, k) is not None}) # write json? else: diff --git a/scripts/structs.py b/scripts/structs.py index 221221cb..87a0690e 100755 --- a/scripts/structs.py +++ b/scripts/structs.py @@ -1085,10 +1085,10 @@ def read_csv(path, Result, *, with openio(path, 'r') as f: # csv or json? assume json starts with [ - json = (f.buffer.peek(1)[:1] == b'[') + is_json = (f.buffer.peek(1)[:1] == b'[') # read csv? - if not json: + if not is_json: results = [] reader = csv.DictReader(f, restval='') for r in reader: @@ -1103,13 +1103,7 @@ def read_csv(path, Result, *, and r[k].strip()} | {k: r[prefix+k] for k in fields if prefix+k in r - and r[prefix+k].strip()} - | ({Result._notes: set(n.strip() - for n in r[Result._notes].split(',') - if n.strip())} - if hasattr(Result, '_notes') - and Result._notes in r - else {})))) + and r[prefix+k].strip()}))) except TypeError: pass return results @@ -1175,9 +1169,7 @@ def write_csv(path, Result, results, *, writer = csv.DictWriter(f, list( co.OrderedDict.fromkeys(it.chain( by, - (prefix+k for k in fields), - [Result._notes] if hasattr(Result, '_notes') - else [])).keys())) + (prefix+k for k in fields))).keys())) writer.writeheader() for r in results: # note this allows by/fields to overlap @@ -1187,12 +1179,7 @@ def write_csv(path, Result, results, *, if getattr(r, k) is not None} | {prefix+k: getattr(r, k).__csv__() for k in fields - if getattr(r, k) is not None} - | ({Result._notes: ','.join( - getattr(r, Result._notes))} - if hasattr(Result, '_notes') - and getattr(r, Result._notes) - else {})) + if getattr(r, k) is not None}) # write json? else: