scripts: Reverted to -p/--percent not providing a path

So now the result scripts always require -d/--diff to diff:

- before: ./scripts/csv.py a.csv -pb.csv
- after:  ./scripts/csv.py a.csv -db.csv -p

For a couple reasons:

- Easier to toggle
- Simpler internally to only have one diff path flag
- The previous behavior was a bit unintuitive
This commit is contained in:
Christopher Haster
2025-04-12 00:47:40 -05:00
parent a5e59b2190
commit 613fa0f27a
9 changed files with 99 additions and 117 deletions
+11 -13
View File
@@ -594,8 +594,7 @@ def table(Result, results, diff_results=None, *,
labels=None,
depth=1,
hot=None,
diff=None,
percent=None,
percent=False,
all=False,
compare=None,
no_header=False,
@@ -646,10 +645,10 @@ def table(Result, results, diff_results=None, *,
' (%d added, %d removed)' % (
sum(1 for n in table if n not in diff_table),
sum(1 for n in diff_table if n not in table))
if diff else '')
if diff_results is not None and not percent else '')
if not small_header and not small_table and not summary
else '']
if not diff:
if diff_results is None or percent:
for k in fields:
header.append(k)
else:
@@ -673,8 +672,7 @@ def table(Result, results, diff_results=None, *,
# normal entry?
if ((compare is None or r == compare_r)
and not percent
and not diff):
and diff_results is None):
for k in fields:
entry.append(
(getattr(r, k).table(),
@@ -682,7 +680,7 @@ def table(Result, results, diff_results=None, *,
if getattr(r, k, None) is not None
else types[k].none)
# compare entry?
elif not percent and not diff:
elif diff_results is None:
for k in fields:
entry.append(
(getattr(r, k).table()
@@ -695,7 +693,7 @@ def table(Result, results, diff_results=None, *,
getattr(r, k, None),
getattr(compare_r, k, None)))))
# percent entry?
elif not diff:
elif percent:
for k in fields:
entry.append(
(getattr(r, k).table()
@@ -786,7 +784,7 @@ def table(Result, results, diff_results=None, *,
getattr(table_.get(n), k, None),
getattr(diff_table_.get(n), k, None))
for k in fields))
if diff or percent
if diff_results is not None
else (),
# move compare entry to the top, note this can be
# overridden by explicitly sorting by fields
@@ -1059,10 +1057,10 @@ def main(obj_paths, *,
# find previous results?
diff_results = None
if args.get('diff') or args.get('percent'):
if args.get('diff'):
try:
diff_results = read_csv(
args.get('diff') or args.get('percent'),
args.get('diff'),
CodeResult,
**args)
except FileNotFoundError:
@@ -1127,8 +1125,8 @@ if __name__ == "__main__":
help="Specify CSV/JSON file to diff against.")
parser.add_argument(
'-p', '--percent',
help="Specify CSV/JSON file to diff against, but only show "
"percentage change, not a full diff.")
action='store_true',
help="Only show percentage change, not a full diff.")
parser.add_argument(
'-c', '--compare',
type=lambda x: tuple(v.strip() for v in x.split(',')),
+11 -13
View File
@@ -449,8 +449,7 @@ def table(Result, results, diff_results=None, *,
labels=None,
depth=1,
hot=None,
diff=None,
percent=None,
percent=False,
all=False,
compare=None,
no_header=False,
@@ -501,10 +500,10 @@ def table(Result, results, diff_results=None, *,
' (%d added, %d removed)' % (
sum(1 for n in table if n not in diff_table),
sum(1 for n in diff_table if n not in table))
if diff else '')
if diff_results is not None and not percent else '')
if not small_header and not small_table and not summary
else '']
if not diff:
if diff_results is None or percent:
for k in fields:
header.append(k)
else:
@@ -528,8 +527,7 @@ def table(Result, results, diff_results=None, *,
# normal entry?
if ((compare is None or r == compare_r)
and not percent
and not diff):
and diff_results is None):
for k in fields:
entry.append(
(getattr(r, k).table(),
@@ -537,7 +535,7 @@ def table(Result, results, diff_results=None, *,
if getattr(r, k, None) is not None
else types[k].none)
# compare entry?
elif not percent and not diff:
elif diff_results is None:
for k in fields:
entry.append(
(getattr(r, k).table()
@@ -550,7 +548,7 @@ def table(Result, results, diff_results=None, *,
getattr(r, k, None),
getattr(compare_r, k, None)))))
# percent entry?
elif not diff:
elif percent:
for k in fields:
entry.append(
(getattr(r, k).table()
@@ -641,7 +639,7 @@ def table(Result, results, diff_results=None, *,
getattr(table_.get(n), k, None),
getattr(diff_table_.get(n), k, None))
for k in fields))
if diff or percent
if diff_results is not None
else (),
# move compare entry to the top, note this can be
# overridden by explicitly sorting by fields
@@ -1011,10 +1009,10 @@ def main(gcda_paths, *,
# find previous results?
diff_results = None
if args.get('diff') or args.get('percent'):
if args.get('diff'):
try:
diff_results = read_csv(
args.get('diff') or args.get('percent'),
args.get('diff'),
CovResult,
**args)
except FileNotFoundError:
@@ -1092,8 +1090,8 @@ if __name__ == "__main__":
help="Specify CSV/JSON file to diff against.")
parser.add_argument(
'-p', '--percent',
help="Specify CSV/JSON file to diff against, but only show "
"percentage change, not a full diff.")
action='store_true',
help="Only show percentage change, not a full diff.")
parser.add_argument(
'-c', '--compare',
type=lambda x: tuple(v.strip() for v in x.split(',')),
+11 -13
View File
@@ -1738,8 +1738,7 @@ def table(Result, results, diff_results=None, *,
labels=None,
depth=1,
hot=None,
diff=None,
percent=None,
percent=False,
all=False,
compare=None,
no_header=False,
@@ -1790,10 +1789,10 @@ def table(Result, results, diff_results=None, *,
' (%d added, %d removed)' % (
sum(1 for n in table if n not in diff_table),
sum(1 for n in diff_table if n not in table))
if diff else '')
if diff_results is not None and not percent else '')
if not small_header and not small_table and not summary
else '']
if not diff:
if diff_results is None or percent:
for k in fields:
header.append(k)
else:
@@ -1817,8 +1816,7 @@ def table(Result, results, diff_results=None, *,
# normal entry?
if ((compare is None or r == compare_r)
and not percent
and not diff):
and diff_results is None):
for k in fields:
entry.append(
(getattr(r, k).table(),
@@ -1826,7 +1824,7 @@ def table(Result, results, diff_results=None, *,
if getattr(r, k, None) is not None
else types[k].none)
# compare entry?
elif not percent and not diff:
elif diff_results is None:
for k in fields:
entry.append(
(getattr(r, k).table()
@@ -1839,7 +1837,7 @@ def table(Result, results, diff_results=None, *,
getattr(r, k, None),
getattr(compare_r, k, None)))))
# percent entry?
elif not diff:
elif percent:
for k in fields:
entry.append(
(getattr(r, k).table()
@@ -1930,7 +1928,7 @@ def table(Result, results, diff_results=None, *,
getattr(table_.get(n), k, None),
getattr(diff_table_.get(n), k, None))
for k in fields))
if diff or percent
if diff_results is not None
else (),
# move compare entry to the top, note this can be
# overridden by explicitly sorting by fields
@@ -2325,7 +2323,7 @@ def main(csv_paths, *,
# find previous results?
diff_results = None
if args.get('diff') or args.get('percent'):
if args.get('diff'):
# note! don't use read_csv here
#
# it's tempting now that we have a Result type, but we want to
@@ -2333,7 +2331,7 @@ def main(csv_paths, *,
# same order
try:
_, diff_results = collect_csv(
[args.get('diff') or args.get('percent')],
[args.get('diff')],
depth=depth,
children=children,
notes=notes,
@@ -2421,8 +2419,8 @@ if __name__ == "__main__":
help="Specify CSV/JSON file to diff against.")
parser.add_argument(
'-p', '--percent',
help="Specify CSV/JSON file to diff against, but only show "
"percentage change, not a full diff.")
action='store_true',
help="Only show percentage change, not a full diff.")
parser.add_argument(
'-c', '--compare',
type=lambda x: tuple(v.strip() for v in x.split(',')),
+11 -13
View File
@@ -854,8 +854,7 @@ def table(Result, results, diff_results=None, *,
labels=None,
depth=1,
hot=None,
diff=None,
percent=None,
percent=False,
all=False,
compare=None,
no_header=False,
@@ -906,10 +905,10 @@ def table(Result, results, diff_results=None, *,
' (%d added, %d removed)' % (
sum(1 for n in table if n not in diff_table),
sum(1 for n in diff_table if n not in table))
if diff else '')
if diff_results is not None and not percent else '')
if not small_header and not small_table and not summary
else '']
if not diff:
if diff_results is None or percent:
for k in fields:
header.append(k)
else:
@@ -933,8 +932,7 @@ def table(Result, results, diff_results=None, *,
# normal entry?
if ((compare is None or r == compare_r)
and not percent
and not diff):
and diff_results is None):
for k in fields:
entry.append(
(getattr(r, k).table(),
@@ -942,7 +940,7 @@ def table(Result, results, diff_results=None, *,
if getattr(r, k, None) is not None
else types[k].none)
# compare entry?
elif not percent and not diff:
elif diff_results is None:
for k in fields:
entry.append(
(getattr(r, k).table()
@@ -955,7 +953,7 @@ def table(Result, results, diff_results=None, *,
getattr(r, k, None),
getattr(compare_r, k, None)))))
# percent entry?
elif not diff:
elif percent:
for k in fields:
entry.append(
(getattr(r, k).table()
@@ -1046,7 +1044,7 @@ def table(Result, results, diff_results=None, *,
getattr(table_.get(n), k, None),
getattr(diff_table_.get(n), k, None))
for k in fields))
if diff or percent
if diff_results is not None
else (),
# move compare entry to the top, note this can be
# overridden by explicitly sorting by fields
@@ -1343,10 +1341,10 @@ def main(obj_paths, *,
# find previous results?
diff_results = None
if args.get('diff') or args.get('percent'):
if args.get('diff'):
try:
diff_results = read_csv(
args.get('diff') or args.get('percent'),
args.get('diff'),
CtxResult,
depth=depth,
**args)
@@ -1423,8 +1421,8 @@ if __name__ == "__main__":
help="Specify CSV/JSON file to diff against.")
parser.add_argument(
'-p', '--percent',
help="Specify CSV/JSON file to diff against, but only show "
"percentage change, not a full diff.")
action='store_true',
help="Only show percentage change, not a full diff.")
parser.add_argument(
'-c', '--compare',
type=lambda x: tuple(v.strip() for v in x.split(',')),
+11 -13
View File
@@ -594,8 +594,7 @@ def table(Result, results, diff_results=None, *,
labels=None,
depth=1,
hot=None,
diff=None,
percent=None,
percent=False,
all=False,
compare=None,
no_header=False,
@@ -646,10 +645,10 @@ def table(Result, results, diff_results=None, *,
' (%d added, %d removed)' % (
sum(1 for n in table if n not in diff_table),
sum(1 for n in diff_table if n not in table))
if diff else '')
if diff_results is not None and not percent else '')
if not small_header and not small_table and not summary
else '']
if not diff:
if diff_results is None or percent:
for k in fields:
header.append(k)
else:
@@ -673,8 +672,7 @@ def table(Result, results, diff_results=None, *,
# normal entry?
if ((compare is None or r == compare_r)
and not percent
and not diff):
and diff_results is None):
for k in fields:
entry.append(
(getattr(r, k).table(),
@@ -682,7 +680,7 @@ def table(Result, results, diff_results=None, *,
if getattr(r, k, None) is not None
else types[k].none)
# compare entry?
elif not percent and not diff:
elif diff_results is None:
for k in fields:
entry.append(
(getattr(r, k).table()
@@ -695,7 +693,7 @@ def table(Result, results, diff_results=None, *,
getattr(r, k, None),
getattr(compare_r, k, None)))))
# percent entry?
elif not diff:
elif percent:
for k in fields:
entry.append(
(getattr(r, k).table()
@@ -786,7 +784,7 @@ def table(Result, results, diff_results=None, *,
getattr(table_.get(n), k, None),
getattr(diff_table_.get(n), k, None))
for k in fields))
if diff or percent
if diff_results is not None
else (),
# move compare entry to the top, note this can be
# overridden by explicitly sorting by fields
@@ -1059,10 +1057,10 @@ def main(obj_paths, *,
# find previous results?
diff_results = None
if args.get('diff') or args.get('percent'):
if args.get('diff'):
try:
diff_results = read_csv(
args.get('diff') or args.get('percent'),
args.get('diff'),
DataResult,
**args)
except FileNotFoundError:
@@ -1127,8 +1125,8 @@ if __name__ == "__main__":
help="Specify CSV/JSON file to diff against.")
parser.add_argument(
'-p', '--percent',
help="Specify CSV/JSON file to diff against, but only show "
"percentage change, not a full diff.")
action='store_true',
help="Only show percentage change, not a full diff.")
parser.add_argument(
'-c', '--compare',
type=lambda x: tuple(v.strip() for v in x.split(',')),
+11 -13
View File
@@ -955,8 +955,7 @@ def table(Result, results, diff_results=None, *,
labels=None,
depth=1,
hot=None,
diff=None,
percent=None,
percent=False,
all=False,
compare=None,
no_header=False,
@@ -1007,10 +1006,10 @@ def table(Result, results, diff_results=None, *,
' (%d added, %d removed)' % (
sum(1 for n in table if n not in diff_table),
sum(1 for n in diff_table if n not in table))
if diff else '')
if diff_results is not None and not percent else '')
if not small_header and not small_table and not summary
else '']
if not diff:
if diff_results is None or percent:
for k in fields:
header.append(k)
else:
@@ -1034,8 +1033,7 @@ def table(Result, results, diff_results=None, *,
# normal entry?
if ((compare is None or r == compare_r)
and not percent
and not diff):
and diff_results is None):
for k in fields:
entry.append(
(getattr(r, k).table(),
@@ -1043,7 +1041,7 @@ def table(Result, results, diff_results=None, *,
if getattr(r, k, None) is not None
else types[k].none)
# compare entry?
elif not percent and not diff:
elif diff_results is None:
for k in fields:
entry.append(
(getattr(r, k).table()
@@ -1056,7 +1054,7 @@ def table(Result, results, diff_results=None, *,
getattr(r, k, None),
getattr(compare_r, k, None)))))
# percent entry?
elif not diff:
elif percent:
for k in fields:
entry.append(
(getattr(r, k).table()
@@ -1147,7 +1145,7 @@ def table(Result, results, diff_results=None, *,
getattr(table_.get(n), k, None),
getattr(diff_table_.get(n), k, None))
for k in fields))
if diff or percent
if diff_results is not None
else (),
# move compare entry to the top, note this can be
# overridden by explicitly sorting by fields
@@ -1563,10 +1561,10 @@ def main_(perf_paths, *,
# find previous results?
diff_results = None
if args.get('diff') or args.get('percent'):
if args.get('diff'):
try:
diff_results = read_csv(
args.get('diff') or args.get('percent'),
args.get('diff'),
PerfResult,
depth=depth,
**args)
@@ -1669,8 +1667,8 @@ if __name__ == "__main__":
help="Specify CSV/JSON file to diff against.")
parser.add_argument(
'-p', '--percent',
help="Specify CSV/JSON file to diff against, but only show "
"percentage change, not a full diff.")
action='store_true',
help="Only show percentage change, not a full diff.")
parser.add_argument(
'-c', '--compare',
type=lambda x: tuple(v.strip() for v in x.split(',')),
+11 -13
View File
@@ -929,8 +929,7 @@ def table(Result, results, diff_results=None, *,
labels=None,
depth=1,
hot=None,
diff=None,
percent=None,
percent=False,
all=False,
compare=None,
no_header=False,
@@ -981,10 +980,10 @@ def table(Result, results, diff_results=None, *,
' (%d added, %d removed)' % (
sum(1 for n in table if n not in diff_table),
sum(1 for n in diff_table if n not in table))
if diff else '')
if diff_results is not None and not percent else '')
if not small_header and not small_table and not summary
else '']
if not diff:
if diff_results is None or percent:
for k in fields:
header.append(k)
else:
@@ -1008,8 +1007,7 @@ def table(Result, results, diff_results=None, *,
# normal entry?
if ((compare is None or r == compare_r)
and not percent
and not diff):
and diff_results is None):
for k in fields:
entry.append(
(getattr(r, k).table(),
@@ -1017,7 +1015,7 @@ def table(Result, results, diff_results=None, *,
if getattr(r, k, None) is not None
else types[k].none)
# compare entry?
elif not percent and not diff:
elif diff_results is None:
for k in fields:
entry.append(
(getattr(r, k).table()
@@ -1030,7 +1028,7 @@ def table(Result, results, diff_results=None, *,
getattr(r, k, None),
getattr(compare_r, k, None)))))
# percent entry?
elif not diff:
elif percent:
for k in fields:
entry.append(
(getattr(r, k).table()
@@ -1121,7 +1119,7 @@ def table(Result, results, diff_results=None, *,
getattr(table_.get(n), k, None),
getattr(diff_table_.get(n), k, None))
for k in fields))
if diff or percent
if diff_results is not None
else (),
# move compare entry to the top, note this can be
# overridden by explicitly sorting by fields
@@ -1559,10 +1557,10 @@ def main_(paths, *,
# find previous results?
diff_results = None
if args.get('diff') or args.get('percent'):
if args.get('diff'):
try:
diff_results = read_csv(
args.get('diff') or args.get('percent'),
args.get('diff'),
PerfBdResult,
depth=depth,
**args)
@@ -1670,8 +1668,8 @@ if __name__ == "__main__":
help="Specify CSV/JSON file to diff against.")
parser.add_argument(
'-p', '--percent',
help="Specify CSV/JSON file to diff against, but only show "
"percentage change, not a full diff.")
action='store_true',
help="Only show percentage change, not a full diff.")
parser.add_argument(
'-c', '--compare',
type=lambda x: tuple(v.strip() for v in x.split(',')),
+11 -13
View File
@@ -597,8 +597,7 @@ def table(Result, results, diff_results=None, *,
labels=None,
depth=1,
hot=None,
diff=None,
percent=None,
percent=False,
all=False,
compare=None,
no_header=False,
@@ -649,10 +648,10 @@ def table(Result, results, diff_results=None, *,
' (%d added, %d removed)' % (
sum(1 for n in table if n not in diff_table),
sum(1 for n in diff_table if n not in table))
if diff else '')
if diff_results is not None and not percent else '')
if not small_header and not small_table and not summary
else '']
if not diff:
if diff_results is None or percent:
for k in fields:
header.append(k)
else:
@@ -676,8 +675,7 @@ def table(Result, results, diff_results=None, *,
# normal entry?
if ((compare is None or r == compare_r)
and not percent
and not diff):
and diff_results is None):
for k in fields:
entry.append(
(getattr(r, k).table(),
@@ -685,7 +683,7 @@ def table(Result, results, diff_results=None, *,
if getattr(r, k, None) is not None
else types[k].none)
# compare entry?
elif not percent and not diff:
elif diff_results is None:
for k in fields:
entry.append(
(getattr(r, k).table()
@@ -698,7 +696,7 @@ def table(Result, results, diff_results=None, *,
getattr(r, k, None),
getattr(compare_r, k, None)))))
# percent entry?
elif not diff:
elif percent:
for k in fields:
entry.append(
(getattr(r, k).table()
@@ -789,7 +787,7 @@ def table(Result, results, diff_results=None, *,
getattr(table_.get(n), k, None),
getattr(diff_table_.get(n), k, None))
for k in fields))
if diff or percent
if diff_results is not None
else (),
# move compare entry to the top, note this can be
# overridden by explicitly sorting by fields
@@ -1083,10 +1081,10 @@ def main(ci_paths,
# find previous results?
diff_results = None
if args.get('diff') or args.get('percent'):
if args.get('diff'):
try:
diff_results = read_csv(
args.get('diff') or args.get('percent'),
args.get('diff'),
StackResult,
depth=depth,
**args)
@@ -1168,8 +1166,8 @@ if __name__ == "__main__":
help="Specify CSV/JSON file to diff against.")
parser.add_argument(
'-p', '--percent',
help="Specify CSV/JSON file to diff against, but only show "
"percentage change, not a full diff.")
action='store_true',
help="Only show percentage change, not a full diff.")
parser.add_argument(
'-c', '--compare',
type=lambda x: tuple(v.strip() for v in x.split(',')),
+11 -13
View File
@@ -735,8 +735,7 @@ def table(Result, results, diff_results=None, *,
labels=None,
depth=1,
hot=None,
diff=None,
percent=None,
percent=False,
all=False,
compare=None,
no_header=False,
@@ -787,10 +786,10 @@ def table(Result, results, diff_results=None, *,
' (%d added, %d removed)' % (
sum(1 for n in table if n not in diff_table),
sum(1 for n in diff_table if n not in table))
if diff else '')
if diff_results is not None and not percent else '')
if not small_header and not small_table and not summary
else '']
if not diff:
if diff_results is None or percent:
for k in fields:
header.append(k)
else:
@@ -814,8 +813,7 @@ def table(Result, results, diff_results=None, *,
# normal entry?
if ((compare is None or r == compare_r)
and not percent
and not diff):
and diff_results is None):
for k in fields:
entry.append(
(getattr(r, k).table(),
@@ -823,7 +821,7 @@ def table(Result, results, diff_results=None, *,
if getattr(r, k, None) is not None
else types[k].none)
# compare entry?
elif not percent and not diff:
elif diff_results is None:
for k in fields:
entry.append(
(getattr(r, k).table()
@@ -836,7 +834,7 @@ def table(Result, results, diff_results=None, *,
getattr(r, k, None),
getattr(compare_r, k, None)))))
# percent entry?
elif not diff:
elif percent:
for k in fields:
entry.append(
(getattr(r, k).table()
@@ -927,7 +925,7 @@ def table(Result, results, diff_results=None, *,
getattr(table_.get(n), k, None),
getattr(diff_table_.get(n), k, None))
for k in fields))
if diff or percent
if diff_results is not None
else (),
# move compare entry to the top, note this can be
# overridden by explicitly sorting by fields
@@ -1224,10 +1222,10 @@ def main(obj_paths, *,
# find previous results?
diff_results = None
if args.get('diff') or args.get('percent'):
if args.get('diff'):
try:
diff_results = read_csv(
args.get('diff') or args.get('percent'),
args.get('diff'),
StructResult,
depth=depth,
**args)
@@ -1304,8 +1302,8 @@ if __name__ == "__main__":
help="Specify CSV/JSON file to diff against.")
parser.add_argument(
'-p', '--percent',
help="Specify CSV/JSON file to diff against, but only show "
"percentage change, not a full diff.")
action='store_true',
help="Only show percentage change, not a full diff.")
parser.add_argument(
'-c', '--compare',
type=lambda x: tuple(v.strip() for v in x.split(',')),