Skip to content

Commit 8ccd2c3

Browse files
committed
Ref(app): Simplify parse traj code
1 parent 0e0d795 commit 8ccd2c3

1 file changed

Lines changed: 45 additions & 46 deletions

File tree

codeclash/viewer/app.py

Lines changed: 45 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -421,53 +421,52 @@ def parse_trajectory(self, player_name: str, round_num: int) -> TrajectoryInfo |
421421
if not player_dir.exists():
422422
return None
423423

424-
# Try both .json and .log extensions
425-
for ext in [".json", ".log"]:
426-
traj_file = player_dir / f"{player_name}_r{round_num}.traj{ext}"
427-
if traj_file.exists():
424+
traj_file = player_dir / f"{player_name}_r{round_num}.traj.json"
425+
if not traj_file.exists():
426+
return None
427+
try:
428+
data = json.loads(traj_file.read_text())
429+
info = data.get("info", {})
430+
model_stats = info.get("model_stats", {})
431+
432+
# Get diff data from changes file
433+
diff = incremental_diff = modified_files = None
434+
changes_file = player_dir / f"changes_r{round_num}.json"
435+
if changes_file.exists():
428436
try:
429-
data = json.loads(traj_file.read_text())
430-
info = data.get("info", {})
431-
model_stats = info.get("model_stats", {})
432-
433-
# Get diff data from changes file
434-
diff = incremental_diff = modified_files = None
435-
changes_file = player_dir / f"changes_r{round_num}.json"
436-
if changes_file.exists():
437-
try:
438-
changes_data = json.loads(changes_file.read_text())
439-
diff = changes_data.get("full_diff", "")
440-
incremental_diff = changes_data.get("incremental_diff", "")
441-
modified_files = changes_data.get("modified_files", {})
442-
except (json.JSONDecodeError, KeyError):
443-
pass
444-
445-
# Filter and split diffs by files
446-
filtered_diff = filter_git_diff(diff) if diff else ""
447-
filtered_incremental_diff = filter_git_diff(incremental_diff) if incremental_diff else ""
448-
diff_by_files = split_git_diff_by_files(filtered_diff) if filtered_diff else {}
449-
incremental_diff_by_files = (
450-
split_git_diff_by_files(filtered_incremental_diff) if filtered_incremental_diff else {}
451-
)
452-
453-
return TrajectoryInfo(
454-
player_id=player_name,
455-
round_num=round_num,
456-
api_calls=model_stats.get("api_calls", 0),
457-
cost=model_stats.get("instance_cost", 0.0),
458-
exit_status=info.get("exit_status"),
459-
submission=info.get("submission"),
460-
memory=info.get("memory"),
461-
messages=data.get("messages", []),
462-
diff=diff,
463-
incremental_diff=incremental_diff,
464-
modified_files=modified_files,
465-
trajectory_file_path=str(traj_file),
466-
diff_by_files=diff_by_files,
467-
incremental_diff_by_files=incremental_diff_by_files,
468-
)
469-
except (json.JSONDecodeError, KeyError) as e:
470-
logger.error(f"Error parsing {traj_file}: {e}", exc_info=True)
437+
changes_data = json.loads(changes_file.read_text())
438+
diff = changes_data.get("full_diff", "")
439+
incremental_diff = changes_data.get("incremental_diff", "")
440+
modified_files = changes_data.get("modified_files", {})
441+
except (json.JSONDecodeError, KeyError):
442+
pass
443+
444+
# Filter and split diffs by files
445+
filtered_diff = filter_git_diff(diff) if diff else ""
446+
filtered_incremental_diff = filter_git_diff(incremental_diff) if incremental_diff else ""
447+
diff_by_files = split_git_diff_by_files(filtered_diff) if filtered_diff else {}
448+
incremental_diff_by_files = (
449+
split_git_diff_by_files(filtered_incremental_diff) if filtered_incremental_diff else {}
450+
)
451+
452+
return TrajectoryInfo(
453+
player_id=player_name,
454+
round_num=round_num,
455+
api_calls=model_stats.get("api_calls", 0),
456+
cost=model_stats.get("instance_cost", 0.0),
457+
exit_status=info.get("exit_status"),
458+
submission=info.get("submission"),
459+
memory=info.get("memory"),
460+
messages=data.get("messages", []),
461+
diff=diff,
462+
incremental_diff=incremental_diff,
463+
modified_files=modified_files,
464+
trajectory_file_path=str(traj_file),
465+
diff_by_files=diff_by_files,
466+
incremental_diff_by_files=incremental_diff_by_files,
467+
)
468+
except (json.JSONDecodeError, KeyError) as e:
469+
logger.error(f"Error parsing {traj_file}: {e}", exc_info=True)
471470

472471
return None
473472

0 commit comments

Comments
 (0)