Spaces:
Running
Running
File size: 1,191 Bytes
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 |
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
user_id: 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"]),
submission_score=data["submission_score"],
user_id=data["user_id"],
rank=data["rank"],
)
@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 {
"filename": self.filename,
"score": self.score,
"user_name": self.user_name,
"created_at": self.created_at.isoformat(),
}
@dataclass
class LbData:
name: str
gpu: str
results: list[Result] = field(default_factory=list)
def add_result(self, result: Result):
self.results.append(result)
|