From 7b3f2047f7b7de55e1af7a92d7ef2321a6ab15e5 Mon Sep 17 00:00:00 2001 From: hummbl-dev Date: Wed, 13 May 2026 07:21:23 -0400 Subject: [PATCH 1/2] fix: history command shows n/a for non-scorable repos instead of 100.0/A --- src/arbiter/__main__.py | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/src/arbiter/__main__.py b/src/arbiter/__main__.py index c9f1764..7c78657 100644 --- a/src/arbiter/__main__.py +++ b/src/arbiter/__main__.py @@ -1071,19 +1071,6 @@ def cmd_diff(args: argparse.Namespace) -> None: sys.exit(1) -def _score_to_grade(score: float) -> str: - """Convert a numeric score to a letter grade.""" - if score >= 90: - return "A" - if score >= 80: - return "B" - if score >= 70: - return "C" - if score >= 60: - return "D" - return "F" - - def _compute_deltas(rows: list[dict]) -> list[dict]: """Add a 'delta' key to each row based on previous score for the same repo. @@ -1131,9 +1118,11 @@ def cmd_history(args: argparse.Namespace) -> None: print("|------|------|-------|-------|-------|") for r in rows_with_delta: ts = r["timestamp"][:10] + loc = r.get("total_loc", 0) or 0 score = r["overall_score"] or 0 - grade = _score_to_grade(score) - print(f"| {ts} | {r['repo_name']} | {score:.1f} | {grade} | {r['delta']} |") + grade = _grade_score(score, loc) + score_str = "n/a" if loc <= 0 else f"{score:.1f}" + print(f"| {ts} | {r['repo_name']} | {score_str} | {grade} | {r['delta']} |") return # Default: plain text table @@ -1141,10 +1130,12 @@ def cmd_history(args: argparse.Namespace) -> None: print("-" * 66) for r in rows_with_delta: ts = r["timestamp"][:10] + loc = r.get("total_loc", 0) or 0 score = r["overall_score"] or 0 - grade = _score_to_grade(score) + grade = _grade_score(score, loc) name = (r.get("repo_name") or "?")[:30] - print(f"{ts:12s} {name:30s} {score:6.1f} {grade:>6s} {r['delta']:>8s}") + score_str = "n/a" if loc <= 0 else f"{score:6.1f}" + print(f"{ts:12s} {name:30s} {score_str:>6s} {grade:>6s} {r['delta']:>8s}") _print_footer() From 7cb77403a8aec37105685d9992c778dabd28ef28 Mon Sep 17 00:00:00 2001 From: hummbl-dev Date: Wed, 13 May 2026 07:35:06 -0400 Subject: [PATCH 2/2] fix: update test to use _grade_score (replaced _score_to_grade) --- tests/test_history.py | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/tests/test_history.py b/tests/test_history.py index 6acbc77..5cef778 100644 --- a/tests/test_history.py +++ b/tests/test_history.py @@ -15,7 +15,7 @@ cmd_trend_chart, _compute_deltas, _ascii_bar, - _score_to_grade, + _grade_score, ) @@ -256,14 +256,19 @@ def test_trend_chart_empty(tmp_path: Path, capsys) -> None: # --------------------------------------------------------------------------- -# _score_to_grade +# _grade_score # --------------------------------------------------------------------------- -def test_score_to_grade() -> None: - assert _score_to_grade(95) == "A" - assert _score_to_grade(90) == "A" - assert _score_to_grade(85) == "B" - assert _score_to_grade(75) == "C" - assert _score_to_grade(65) == "D" - assert _score_to_grade(50) == "F" +def test_grade_score() -> None: + assert _grade_score(95, total_loc=100) == "A" + assert _grade_score(90, total_loc=100) == "A" + assert _grade_score(85, total_loc=100) == "B" + assert _grade_score(75, total_loc=100) == "C" + assert _grade_score(65, total_loc=100) == "D" + assert _grade_score(50, total_loc=100) == "F" + assert _grade_score(100, total_loc=0) == "N/A" + +def test_grade_score_non_scorable() -> None: + assert _grade_score(100.0, total_loc=0) == "N/A" + assert _grade_score(0, total_loc=0) == "N/A"