scripts: Fixed diff result sorting

This was a bit broken when r was None. Which is unusual, but happens
when rendering added/removed diff results.
This commit is contained in:
Christopher Haster
2025-03-01 04:05:21 -06:00
parent 299e2604c6
commit aae03be54b
9 changed files with 99 additions and 72 deletions

View File

@@ -763,14 +763,17 @@ def table(Result, results, diff_results=None, *,
# sort again, now with diff info, note that python's sort is stable # sort again, now with diff info, note that python's sort is stable
names_.sort(key=lambda n: ( names_.sort(key=lambda n: (
# sort by explicit sort fields # sort by explicit sort fields
tuple((Rev next(
if reverse ^ (not k or k in Result._fields) tuple((Rev
else lambda x: x)( if reverse ^ (not k or k in Result._fields)
tuple((getattr(table_[n], k_),) else lambda x: x)(
if getattr(table_.get(n), k_, None) is not None tuple((getattr(r_, k_),)
else () if getattr(r_, k_) is not None
for k_ in ([k] if k else Result._sort))) else ()
for k, reverse in (sort or [])), for k_ in ([k] if k else Result._sort)))
for k, reverse in (sort or []))
for r_ in [table_.get(n), diff_table_.get(n)]
if r_ is not None),
# sort by ratio if diffing # sort by ratio if diffing
Rev(tuple(types[k].ratio( Rev(tuple(types[k].ratio(
getattr(table_.get(n), k, None), getattr(table_.get(n), k, None),

View File

@@ -624,14 +624,17 @@ def table(Result, results, diff_results=None, *,
# sort again, now with diff info, note that python's sort is stable # sort again, now with diff info, note that python's sort is stable
names_.sort(key=lambda n: ( names_.sort(key=lambda n: (
# sort by explicit sort fields # sort by explicit sort fields
tuple((Rev next(
if reverse ^ (not k or k in Result._fields) tuple((Rev
else lambda x: x)( if reverse ^ (not k or k in Result._fields)
tuple((getattr(table_[n], k_),) else lambda x: x)(
if getattr(table_.get(n), k_, None) is not None tuple((getattr(r_, k_),)
else () if getattr(r_, k_) is not None
for k_ in ([k] if k else Result._sort))) else ()
for k, reverse in (sort or [])), for k_ in ([k] if k else Result._sort)))
for k, reverse in (sort or []))
for r_ in [table_.get(n), diff_table_.get(n)]
if r_ is not None),
# sort by ratio if diffing # sort by ratio if diffing
Rev(tuple(types[k].ratio( Rev(tuple(types[k].ratio(
getattr(table_.get(n), k, None), getattr(table_.get(n), k, None),

View File

@@ -1906,14 +1906,17 @@ def table(Result, results, diff_results=None, *,
# sort again, now with diff info, note that python's sort is stable # sort again, now with diff info, note that python's sort is stable
names_.sort(key=lambda n: ( names_.sort(key=lambda n: (
# sort by explicit sort fields # sort by explicit sort fields
tuple((Rev next(
if reverse ^ (not k or k in Result._fields) tuple((Rev
else lambda x: x)( if reverse ^ (not k or k in Result._fields)
tuple((getattr(table_[n], k_),) else lambda x: x)(
if getattr(table_.get(n), k_, None) is not None tuple((getattr(r_, k_),)
else () if getattr(r_, k_) is not None
for k_ in ([k] if k else Result._sort))) else ()
for k, reverse in (sort or [])), for k_ in ([k] if k else Result._sort)))
for k, reverse in (sort or []))
for r_ in [table_.get(n), diff_table_.get(n)]
if r_ is not None),
# sort by ratio if diffing # sort by ratio if diffing
Rev(tuple(types[k].ratio( Rev(tuple(types[k].ratio(
getattr(table_.get(n), k, None), getattr(table_.get(n), k, None),

View File

@@ -1021,14 +1021,17 @@ def table(Result, results, diff_results=None, *,
# sort again, now with diff info, note that python's sort is stable # sort again, now with diff info, note that python's sort is stable
names_.sort(key=lambda n: ( names_.sort(key=lambda n: (
# sort by explicit sort fields # sort by explicit sort fields
tuple((Rev next(
if reverse ^ (not k or k in Result._fields) tuple((Rev
else lambda x: x)( if reverse ^ (not k or k in Result._fields)
tuple((getattr(table_[n], k_),) else lambda x: x)(
if getattr(table_.get(n), k_, None) is not None tuple((getattr(r_, k_),)
else () if getattr(r_, k_) is not None
for k_ in ([k] if k else Result._sort))) else ()
for k, reverse in (sort or [])), for k_ in ([k] if k else Result._sort)))
for k, reverse in (sort or []))
for r_ in [table_.get(n), diff_table_.get(n)]
if r_ is not None),
# sort by ratio if diffing # sort by ratio if diffing
Rev(tuple(types[k].ratio( Rev(tuple(types[k].ratio(
getattr(table_.get(n), k, None), getattr(table_.get(n), k, None),

View File

@@ -763,14 +763,17 @@ def table(Result, results, diff_results=None, *,
# sort again, now with diff info, note that python's sort is stable # sort again, now with diff info, note that python's sort is stable
names_.sort(key=lambda n: ( names_.sort(key=lambda n: (
# sort by explicit sort fields # sort by explicit sort fields
tuple((Rev next(
if reverse ^ (not k or k in Result._fields) tuple((Rev
else lambda x: x)( if reverse ^ (not k or k in Result._fields)
tuple((getattr(table_[n], k_),) else lambda x: x)(
if getattr(table_.get(n), k_, None) is not None tuple((getattr(r_, k_),)
else () if getattr(r_, k_) is not None
for k_ in ([k] if k else Result._sort))) else ()
for k, reverse in (sort or [])), for k_ in ([k] if k else Result._sort)))
for k, reverse in (sort or []))
for r_ in [table_.get(n), diff_table_.get(n)]
if r_ is not None),
# sort by ratio if diffing # sort by ratio if diffing
Rev(tuple(types[k].ratio( Rev(tuple(types[k].ratio(
getattr(table_.get(n), k, None), getattr(table_.get(n), k, None),

View File

@@ -1125,14 +1125,17 @@ def table(Result, results, diff_results=None, *,
# sort again, now with diff info, note that python's sort is stable # sort again, now with diff info, note that python's sort is stable
names_.sort(key=lambda n: ( names_.sort(key=lambda n: (
# sort by explicit sort fields # sort by explicit sort fields
tuple((Rev next(
if reverse ^ (not k or k in Result._fields) tuple((Rev
else lambda x: x)( if reverse ^ (not k or k in Result._fields)
tuple((getattr(table_[n], k_),) else lambda x: x)(
if getattr(table_.get(n), k_, None) is not None tuple((getattr(r_, k_),)
else () if getattr(r_, k_) is not None
for k_ in ([k] if k else Result._sort))) else ()
for k, reverse in (sort or [])), for k_ in ([k] if k else Result._sort)))
for k, reverse in (sort or []))
for r_ in [table_.get(n), diff_table_.get(n)]
if r_ is not None),
# sort by ratio if diffing # sort by ratio if diffing
Rev(tuple(types[k].ratio( Rev(tuple(types[k].ratio(
getattr(table_.get(n), k, None), getattr(table_.get(n), k, None),

View File

@@ -1095,14 +1095,17 @@ def table(Result, results, diff_results=None, *,
# sort again, now with diff info, note that python's sort is stable # sort again, now with diff info, note that python's sort is stable
names_.sort(key=lambda n: ( names_.sort(key=lambda n: (
# sort by explicit sort fields # sort by explicit sort fields
tuple((Rev next(
if reverse ^ (not k or k in Result._fields) tuple((Rev
else lambda x: x)( if reverse ^ (not k or k in Result._fields)
tuple((getattr(table_[n], k_),) else lambda x: x)(
if getattr(table_.get(n), k_, None) is not None tuple((getattr(r_, k_),)
else () if getattr(r_, k_) is not None
for k_ in ([k] if k else Result._sort))) else ()
for k, reverse in (sort or [])), for k_ in ([k] if k else Result._sort)))
for k, reverse in (sort or []))
for r_ in [table_.get(n), diff_table_.get(n)]
if r_ is not None),
# sort by ratio if diffing # sort by ratio if diffing
Rev(tuple(types[k].ratio( Rev(tuple(types[k].ratio(
getattr(table_.get(n), k, None), getattr(table_.get(n), k, None),

View File

@@ -767,14 +767,17 @@ def table(Result, results, diff_results=None, *,
# sort again, now with diff info, note that python's sort is stable # sort again, now with diff info, note that python's sort is stable
names_.sort(key=lambda n: ( names_.sort(key=lambda n: (
# sort by explicit sort fields # sort by explicit sort fields
tuple((Rev next(
if reverse ^ (not k or k in Result._fields) tuple((Rev
else lambda x: x)( if reverse ^ (not k or k in Result._fields)
tuple((getattr(table_[n], k_),) else lambda x: x)(
if getattr(table_.get(n), k_, None) is not None tuple((getattr(r_, k_),)
else () if getattr(r_, k_) is not None
for k_ in ([k] if k else Result._sort))) else ()
for k, reverse in (sort or [])), for k_ in ([k] if k else Result._sort)))
for k, reverse in (sort or []))
for r_ in [table_.get(n), diff_table_.get(n)]
if r_ is not None),
# sort by ratio if diffing # sort by ratio if diffing
Rev(tuple(types[k].ratio( Rev(tuple(types[k].ratio(
getattr(table_.get(n), k, None), getattr(table_.get(n), k, None),

View File

@@ -841,14 +841,17 @@ def table(Result, results, diff_results=None, *,
# sort again, now with diff info, note that python's sort is stable # sort again, now with diff info, note that python's sort is stable
names_.sort(key=lambda n: ( names_.sort(key=lambda n: (
# sort by explicit sort fields # sort by explicit sort fields
tuple((Rev next(
if reverse ^ (not k or k in Result._fields) tuple((Rev
else lambda x: x)( if reverse ^ (not k or k in Result._fields)
tuple((getattr(table_[n], k_),) else lambda x: x)(
if getattr(table_.get(n), k_, None) is not None tuple((getattr(r_, k_),)
else () if getattr(r_, k_) is not None
for k_ in ([k] if k else Result._sort))) else ()
for k, reverse in (sort or [])), for k_ in ([k] if k else Result._sort)))
for k, reverse in (sort or []))
for r_ in [table_.get(n), diff_table_.get(n)]
if r_ is not None),
# sort by ratio if diffing # sort by ratio if diffing
Rev(tuple(types[k].ratio( Rev(tuple(types[k].ratio(
getattr(table_.get(n), k, None), getattr(table_.get(n), k, None),