Skip to content

Commit beefe2e

Browse files
committed
Fix(viewer): Support model names with dots in name
1 parent 83888f8 commit beefe2e

1 file changed

Lines changed: 18 additions & 24 deletions

File tree

codeclash/viewer/app.py

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -517,32 +517,26 @@ def parse_trajectory(self, player_name: str, round_num: int) -> TrajectoryInfo |
517517
return None
518518

519519
def get_available_trajectories(self) -> list[tuple]:
520-
"""Get list of available trajectory files as (player_name, round_num) tuples"""
520+
"""Get list of available trajectory files as (player_name, round_num) tuples using metadata"""
521521
trajectories = []
522-
players_dir = self.log_dir / "players"
523522

524-
if not players_dir.exists():
525-
return trajectories
523+
# Get metadata to extract player and round information
524+
metadata = self.parse_game_metadata()
526525

527-
# Iterate through player directories
528-
for player_dir in players_dir.iterdir():
529-
if not player_dir.is_dir():
530-
continue
526+
# Get player names from agent_info
527+
player_names = []
528+
if metadata.agent_info:
529+
player_names = [agent.name for agent in metadata.agent_info]
530+
elif metadata.results and "agents" in metadata.results:
531+
player_names = [agent.get("name", "") for agent in metadata.results["agents"] if agent.get("name")]
531532

532-
player_name = player_dir.name
533+
# Get round numbers from rounds data
534+
round_nums = [round_data["round_num"] for round_data in metadata.rounds]
533535

534-
# Find trajectory files in this player's directory
535-
for traj_file in player_dir.glob("*_r*.traj.*"):
536-
# Extract round from filename like gpt5_r2.traj.json
537-
parts = traj_file.stem.split(".") # Remove extension
538-
if parts:
539-
name_part = parts[0] # gpt5_r2
540-
try:
541-
_, round_part = name_part.split("_")
542-
round_num = int(round_part[1:]) # Remove 'r' prefix
543-
trajectories.append((player_name, round_num))
544-
except (ValueError, IndexError):
545-
continue
536+
# Generate all possible (player_name, round_num) combinations
537+
for player_name in player_names:
538+
for round_num in round_nums:
539+
trajectories.append((player_name, round_num))
546540

547541
return sorted(trajectories)
548542

@@ -812,17 +806,17 @@ def index():
812806
# Parse the selected game
813807
parser = LogParser(folder_path)
814808
metadata = parser.parse_game_metadata()
815-
available_trajectories = parser.get_available_trajectories()
816809

817-
# Group trajectories by round
818810
trajectories_by_round = {}
819-
for player_name, round_num in available_trajectories:
811+
for player_name, round_num in parser.get_available_trajectories():
820812
if round_num not in trajectories_by_round:
821813
trajectories_by_round[round_num] = []
822814
trajectory = parser.parse_trajectory(player_name, round_num)
823815
if trajectory:
824816
trajectories_by_round[round_num].append(trajectory)
825817

818+
# print({k: [_v.player_id for _v in v] for k, v in trajectories_by_round.items()})
819+
826820
# Get analysis data
827821
analysis_data = parser.analyze_line_counts()
828822
sim_wins_data = parser.analyze_sim_wins_per_round()

0 commit comments

Comments
 (0)