MCPcopy Create free account
hub / github.com/CodeClash-ai/CodeClash / guess_config_names

Function guess_config_names

codeclash/viewer/app.py:1451–1530  ·  view source on GitHub ↗

Guess config file names based on metadata.json files

()

Source from the content-addressed store, hash-verified

1449@app.route("/picker/api/guess-config-names", methods=["POST"])
1450@print_timing
1451def guess_config_names():
1452 """Guess config file names based on metadata.json files"""
1453 # Don't allow config guessing in static mode - skip freezing
1454 if STATIC_MODE:
1455 return redirect(url_for("index"))
1456
1457 try:
1458 data = request.get_json()
1459 folder_paths = data.get("folder_paths", [])
1460
1461 if not folder_paths:
1462 return jsonify({"success": False, "error": "No folder paths provided"})
1463
1464 results = []
1465 for folder_path in folder_paths:
1466 folder_path_obj = LOG_BASE_DIR / folder_path
1467
1468 if not folder_path_obj.exists() or not is_game_folder(folder_path_obj):
1469 results.append({"folder": folder_path, "config_name": None, "error": "Invalid folder"})
1470 continue
1471
1472 metadata = load_metadata(folder_path_obj)
1473 if not metadata.is_valid:
1474 results.append({"folder": folder_path, "config_name": None, "error": "No metadata"})
1475 continue
1476
1477 # Extract components for config name
1478 game_name = metadata.game_name
1479 rounds = metadata.get_path("config.tournament.rounds")
1480 sims = metadata.get_path("config.game.sims_per_round")
1481 players = metadata.get_path("config.players", [])
1482
1483 # Extract player names
1484 player_names = []
1485 for player in players:
1486 if isinstance(player, dict):
1487 name = player.get("name", "")
1488 if name:
1489 player_names.append(name)
1490
1491 # Build config file name
1492 if game_name and rounds and sims and len(player_names) >= 2:
1493 # Determine correct model ordering by checking folder name
1494 folder_name = Path(folder_path).name
1495 model1, model2 = player_names[0], player_names[1]
1496
1497 # Check which order appears in the folder name
1498 if f"{model1}.{model2}" in folder_name:
1499 # Order is correct
1500 pass
1501 elif f"{model2}.{model1}" in folder_name:
1502 # Swap order
1503 model1, model2 = model2, model1
1504 # If neither appears, keep original order
1505
1506 config_name = f"{game_name}__{model1}__{model2}__r{rounds}__s{sims}.yaml"
1507 results.append({"folder": folder_path, "config_name": config_name, "error": None})
1508 else:

Callers

nothing calls this directly

Calls 4

is_game_folderFunction · 0.85
load_metadataFunction · 0.85
getMethod · 0.80
get_pathMethod · 0.80

Tested by

no test coverage detected