apsys commited on
Commit
a7eca29
·
1 Parent(s): a7b55ff
Files changed (2) hide show
  1. src/populate.py +15 -17
  2. src/submission/submit.py +7 -6
src/populate.py CHANGED
@@ -38,19 +38,19 @@ def get_latest_leaderboard(version="v0") -> Optional[Dict]:
38
  return None
39
 
40
 
41
- def get_model_entry(model_name: str, version="v0") -> Optional[Dict]:
42
  """
43
- Get a specific model's entry from the entries folder.
44
  """
45
  try:
46
  model_name_safe = model_name.replace("/", "_").replace(" ", "_")
 
47
  entry_path = hf_hub_download(
48
  repo_id=RESULTS_DATASET_ID,
49
- filename=f"entries/entry_{model_name_safe}_{version}.json",
50
  repo_type="dataset",
51
  token=TOKEN
52
  )
53
-
54
  with open(entry_path, 'r') as f:
55
  return json.load(f)
56
  except Exception as e:
@@ -58,15 +58,18 @@ def get_model_entry(model_name: str, version="v0") -> Optional[Dict]:
58
  return None
59
 
60
 
61
- def get_all_entries(version="v0") -> List[Dict]:
62
  """
63
- Get all model entries from the entries folder.
64
  """
65
  try:
66
  api = HfApi(token=TOKEN)
67
  files = api.list_repo_files(repo_id=RESULTS_DATASET_ID, repo_type="dataset")
68
- entry_files = [f for f in files if f.startswith("entries/") and f.endswith(f"_{version}.json")]
69
-
 
 
 
70
  entries = []
71
  for entry_file in entry_files:
72
  try:
@@ -81,7 +84,6 @@ def get_all_entries(version="v0") -> List[Dict]:
81
  entries.append(entry_data)
82
  except Exception as e:
83
  print(f"Error loading entry {entry_file}: {e}")
84
-
85
  return entries
86
  except Exception as e:
87
  print(f"Error listing entries: {e}")
@@ -229,20 +231,16 @@ def get_category_leaderboard_df(category: str, version="v0") -> pd.DataFrame:
229
  return leaderboard_to_dataframe(filtered_leaderboard)
230
 
231
 
232
- def get_detailed_model_data(model_name: str, version="v0") -> Dict:
233
  """
234
- Get detailed data for a specific model.
235
  """
236
- # Try to get model's entry directly first
237
- entry = get_model_entry(model_name, version)
238
  if entry:
239
  return entry
240
-
241
- # If no direct entry found, try looking in the leaderboard
242
  leaderboard_data = get_latest_leaderboard(version)
243
  if leaderboard_data:
244
  for entry in leaderboard_data.get("entries", []):
245
- if entry.get("model_name") == model_name:
246
  return entry
247
-
248
  return {}
 
38
  return None
39
 
40
 
41
+ def get_model_entry(model_name: str, mode: str, version="v0") -> Optional[Dict]:
42
  """
43
+ Get a specific model's entry from the entries folder, uniquely identified by model_name, mode, and version.
44
  """
45
  try:
46
  model_name_safe = model_name.replace("/", "_").replace(" ", "_")
47
+ mode_safe = str(mode).replace("/", "_").replace(" ", "_").lower()
48
  entry_path = hf_hub_download(
49
  repo_id=RESULTS_DATASET_ID,
50
+ filename=f"entries/entry_{model_name_safe}_{mode_safe}_{version}.json",
51
  repo_type="dataset",
52
  token=TOKEN
53
  )
 
54
  with open(entry_path, 'r') as f:
55
  return json.load(f)
56
  except Exception as e:
 
58
  return None
59
 
60
 
61
+ def get_all_entries(version="v0", mode: str = None) -> List[Dict]:
62
  """
63
+ Get all model entries from the entries folder. If mode is provided, only return entries matching that mode.
64
  """
65
  try:
66
  api = HfApi(token=TOKEN)
67
  files = api.list_repo_files(repo_id=RESULTS_DATASET_ID, repo_type="dataset")
68
+ if mode is not None:
69
+ mode_safe = str(mode).replace("/", "_").replace(" ", "_").lower()
70
+ entry_files = [f for f in files if f.startswith("entries/") and f"_{mode_safe}_" in f and f.endswith(f"_{version}.json")]
71
+ else:
72
+ entry_files = [f for f in files if f.startswith("entries/") and f.endswith(f"_{version}.json")]
73
  entries = []
74
  for entry_file in entry_files:
75
  try:
 
84
  entries.append(entry_data)
85
  except Exception as e:
86
  print(f"Error loading entry {entry_file}: {e}")
 
87
  return entries
88
  except Exception as e:
89
  print(f"Error listing entries: {e}")
 
231
  return leaderboard_to_dataframe(filtered_leaderboard)
232
 
233
 
234
+ def get_detailed_model_data(model_name: str, mode: str, version="v0") -> Dict:
235
  """
236
+ Get detailed data for a specific model and mode.
237
  """
238
+ entry = get_model_entry(model_name, mode, version)
 
239
  if entry:
240
  return entry
 
 
241
  leaderboard_data = get_latest_leaderboard(version)
242
  if leaderboard_data:
243
  for entry in leaderboard_data.get("entries", []):
244
+ if entry.get("model_name") == model_name and str(entry.get("mode")).lower() == str(mode).lower():
245
  return entry
 
246
  return {}
src/submission/submit.py CHANGED
@@ -36,16 +36,17 @@ def validate_submission(file_path: str) -> Tuple[bool, str]:
36
  return False, f"Error validating submission: {e}"
37
 
38
 
39
- def submit_entry_to_hub(entry: Dict, model_name: str, version="v0") -> Tuple[bool, str]:
40
  """
41
- Submit a model's evaluation entry to the HuggingFace dataset.
42
  """
43
  try:
44
  # Create safe model name for file path
45
  model_name_safe = model_name.replace("/", "_").replace(" ", "_")
 
46
 
47
  # Create entry path in entries folder
48
- entry_path = f"entries/entry_{model_name_safe}_{version}.json"
49
 
50
  # Save entry to temporary file
51
  with tempfile.NamedTemporaryFile(mode='w', suffix='.json', delete=False) as temp_file:
@@ -59,11 +60,11 @@ def submit_entry_to_hub(entry: Dict, model_name: str, version="v0") -> Tuple[boo
59
  path_in_repo=entry_path,
60
  repo_id=RESULTS_DATASET_ID,
61
  repo_type="dataset",
62
- commit_message=f"Add evaluation entry for {model_name} (version {version})"
63
  )
64
 
65
  os.unlink(temp_path)
66
- return True, f"Successfully uploaded evaluation entry for {model_name}"
67
  except Exception as e:
68
  return False, f"Error submitting entry to dataset: {e}"
69
 
@@ -205,7 +206,7 @@ def process_submission(file_path: str, metadata: Dict, version="v0") -> str:
205
  })
206
 
207
  # Submit entry to entries folder
208
- success, message = submit_entry_to_hub(model_entry, model_name, version)
209
  if not success:
210
  return styled_error(message)
211
 
 
36
  return False, f"Error validating submission: {e}"
37
 
38
 
39
+ def submit_entry_to_hub(entry: Dict, model_name: str, mode: str, version="v0") -> Tuple[bool, str]:
40
  """
41
+ Submit a model's evaluation entry to the HuggingFace dataset. The entry is uniquely identified by model_name, mode, and version.
42
  """
43
  try:
44
  # Create safe model name for file path
45
  model_name_safe = model_name.replace("/", "_").replace(" ", "_")
46
+ mode_safe = str(mode).replace("/", "_").replace(" ", "_").lower()
47
 
48
  # Create entry path in entries folder
49
+ entry_path = f"entries/entry_{model_name_safe}_{mode_safe}_{version}.json"
50
 
51
  # Save entry to temporary file
52
  with tempfile.NamedTemporaryFile(mode='w', suffix='.json', delete=False) as temp_file:
 
60
  path_in_repo=entry_path,
61
  repo_id=RESULTS_DATASET_ID,
62
  repo_type="dataset",
63
+ commit_message=f"Add evaluation entry for {model_name} (mode {mode}, version {version})"
64
  )
65
 
66
  os.unlink(temp_path)
67
+ return True, f"Successfully uploaded evaluation entry for {model_name} (mode {mode})"
68
  except Exception as e:
69
  return False, f"Error submitting entry to dataset: {e}"
70
 
 
206
  })
207
 
208
  # Submit entry to entries folder
209
+ success, message = submit_entry_to_hub(model_entry, model_name, metadata.get("mode"), version)
210
  if not success:
211
  return styled_error(message)
212