Spaces:
Running
Running
from dataclasses import dataclass, field | |
from datetime import datetime | |
import json | |
class Result: | |
submission_name: str | |
submission_time: datetime | |
submission_score: float | |
submission_id: str | |
user_id: str | |
user_name: str | |
rank: int | |
def from_dict(cls, data: dict) -> "Result": | |
return cls( | |
submission_name=data["submission_name"], | |
submission_time=datetime.fromisoformat( | |
data["submission_time"].replace("Z", "+00:00") | |
), | |
submission_score=data["submission_score"], | |
submission_id=data["submission_id"], | |
user_id=data["user_id"], | |
rank=data["rank"], | |
user_name=data["user_name"], | |
) | |
def from_json(cls, json_path: str) -> "Result": | |
with open(json_path, "r") as f: | |
data = json.load(f) | |
return cls.from_dict(data) | |
def to_dict(self) -> dict: | |
return { | |
"submission_name": self.submission_name, | |
"submission_time": self.submission_time.isoformat(), | |
"submission_score": self.submission_score, | |
"submission_id": self.submission_id, | |
"user_id": self.user_id, | |
"user_name": self.user_name, | |
"rank": self.rank, | |
} | |
class LbData: | |
name: str | |
gpu: str | |
results: list[Result] = field(default_factory=list) | |
def add_result(self, result: Result): | |
self.results.append(result) | |