fix: Handle missing results in topn leaderboard calculation

This commit is contained in:
Paul Gauthier (aider) 2024-12-17 14:15:02 -08:00
parent 674e3846e2
commit 7f16757bbe

View file

@ -31,10 +31,21 @@ def analyze_exercise_solutions(topn=None):
with open("aider/website/_data/edit_leaderboard.yml") as f: with open("aider/website/_data/edit_leaderboard.yml") as f:
leaderboard = yaml.safe_load(f) leaderboard = yaml.safe_load(f)
# Sort models by pass rate to get top N if specified # Filter out entries that don't load and sort by pass rate
valid_entries = []
for entry in leaderboard:
dirname = entry["dirname"]
results = load_results(dirname)
if results:
valid_entries.append((entry, results))
# Sort by pass rate and take top N if specified
valid_entries.sort(key=lambda x: float(x[0].get("pass_rate_2", 0)), reverse=True)
if topn: if topn:
leaderboard.sort(key=lambda x: float(x.get("pass_rate_2", 0)), reverse=True) valid_entries = valid_entries[:topn]
leaderboard = leaderboard[:topn]
# Unpack the filtered and sorted entries
leaderboard = [entry for entry, _ in valid_entries]
# Get all exercise names from a complete run # Get all exercise names from a complete run
all_exercises = set() all_exercises = set()
@ -81,7 +92,7 @@ def analyze_exercise_solutions(topn=None):
# Calculate max length for alignment # Calculate max length for alignment
max_name_len = max(len(testcase) for testcase in all_exercises) max_name_len = max(len(testcase) for testcase in all_exercises)
total_models = len({model for models in exercise_solutions.values() for model in models}) total_models = len(leaderboard)
for testcase, models in sorted_exercises: for testcase, models in sorted_exercises:
num_solved = len(models) num_solved = len(models)