import pathlib from pathlib import Path import tempfile from typing import BinaryIO, Literal import json import pandas as pd import gradio as gr from huggingface_hub import upload_file, hf_hub_download from evaluation import evaluate_problem from datetime import datetime import os from about import PROBLEM_TYPES, TOKEN, CACHE_PATH, API, submissions_repo, results_repo def make_user_clickable(name): link =f'https://huggingface.co/{name}' return f'{name}' def make_boundary_clickable(filename): link =f'https://huggingface.co/datasets/proxima-fusion/constellaration-bench-results/blob/main/{filename}' return f'link' def read_result_from_hub(filename): local_path = hf_hub_download( repo_id=results_repo, repo_type="dataset", filename=filename, ) return local_path def read_submission_from_hub(filename): local_path = hf_hub_download( repo_id=submissions_repo, repo_type="dataset", filename=filename, ) return local_path def write_results(record, result): record.update(result) record['result_filename'] = record['submission_filename'].rstrip('.json') + '_results.json' print(record['result_filename']) record['evaluated'] = True record["objectives"] = json.dumps(record.get("objectives", [])) record["feasibilities"] = json.dumps(record.get("feasibility", [])) if 'objective' not in record.keys(): record['objective'] = 0.0 record['minimize_objective'] = True record['feasibility'] = sum(record['feasibility'])/len(record['feasibility']) with tempfile.NamedTemporaryFile(mode="w", suffix=".json", delete=False) as tmp: json.dump(record, tmp, indent=2) tmp.flush() tmp_name = tmp.name API.upload_file( path_or_fileobj=tmp_name, path_in_repo=record['result_filename'], repo_id=results_repo, repo_type="dataset", commit_message=f"Add result data for {record['result_filename']}" ) pathlib.Path(tmp_name).unlink() return def get_user(profile: gr.OAuthProfile | None) -> str: if profile is None: return "Please login to submit a boundary for evaluation." return profile.username