siro1's picture
siro1 HF Staff
Fix: units
4c7e2d6
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)