Spaces:
Running
Running
File size: 1,539 Bytes
0339ef7 6493bef 0339ef7 75f9ceb 0339ef7 37414f0 4c7e2d6 6493bef 0339ef7 75f9ceb 0339ef7 6493bef 75f9ceb 6493bef 0339ef7 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
from dataclasses import dataclass, field
from datetime import datetime
import json
@dataclass(frozen=True, slots=True)
class Result:
submission_name: str
submission_time: datetime
submission_score: float
submission_id: str
user_id: str
user_name: str
rank: int
@classmethod
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"],
)
@classmethod
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,
}
@dataclass
class LbData:
name: str
gpu: str
results: list[Result] = field(default_factory=list)
def add_result(self, result: Result):
self.results.append(result)
|