Skip to content

Commit db5ff7e

Browse files
authored
Fix review issues: sentinel in _quality_metric, isinstance for win_rate_by_category, assert spec in test loader
1 parent a93aca6 commit db5ff7e

2 files changed

Lines changed: 13 additions & 5 deletions

File tree

scripts/compare_results.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ def _load_results(path: Path) -> dict:
3131
return json.load(f)
3232

3333

34+
_MISSING = object()
35+
36+
3437
def _safe_get(data: dict, *keys, default=None):
3538
"""Safely traverse nested dict keys."""
3639
current = data
@@ -44,11 +47,13 @@ def _safe_get(data: dict, *keys, default=None):
4447

4548
def _quality_metric(data: dict, *keys, default=None):
4649
"""Read a quality metric from nested results.json layouts."""
47-
value = _safe_get(data, "quality", *keys, default=default)
48-
if value is not default:
50+
value = _safe_get(data, "quality", *keys, default=_MISSING)
51+
if value is not _MISSING:
4952
return value
5053

51-
quality = data.get("quality", {})
54+
quality = data.get("quality")
55+
if not isinstance(quality, dict):
56+
return default
5257
if len(keys) == 1:
5358
return quality.get(keys[0], default)
5459
if keys[0] == "pairwise" and len(keys) == 2:
@@ -131,8 +136,10 @@ def _add(category, metric, val_a, val_b, unit="", lower_is_better=True):
131136
val_b = _quality_metric(run_b, "absolute_scores", metric_key)
132137
_add("Quality", metric_key, val_a, val_b, "", lower_is_better=False)
133138

134-
cat_a = _safe_get(run_a, "quality", "win_rate_by_category", default={}) or {}
135-
cat_b = _safe_get(run_b, "quality", "win_rate_by_category", default={}) or {}
139+
_cat_a = _safe_get(run_a, "quality", "win_rate_by_category")
140+
cat_a = _cat_a if isinstance(_cat_a, dict) else {}
141+
_cat_b = _safe_get(run_b, "quality", "win_rate_by_category")
142+
cat_b = _cat_b if isinstance(_cat_b, dict) else {}
136143
for category in sorted(set(cat_a) | set(cat_b)):
137144
for metric_key in ["router_win_rate", "baseline_win_rate", "tie_rate"]:
138145
val_a = _safe_get(cat_a.get(category, {}), metric_key)

tests/test_compare_results.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
def _load_compare_results_module():
1010
script_path = Path(__file__).resolve().parents[1] / "scripts" / "compare_results.py"
1111
spec = importlib.util.spec_from_file_location("compare_results", script_path)
12+
assert spec is not None
1213
module = importlib.util.module_from_spec(spec)
1314
assert spec.loader is not None
1415
spec.loader.exec_module(module)

0 commit comments

Comments
 (0)