mode fix
Browse files- src/populate.py +15 -17
- 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 |
-
|
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 |
-
|
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 |
|