File size: 722 Bytes
461f64f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""
Lightweight Metrics container.

Benefits:
    - Facilitates addition/removal of fields without breaking callers.
    - Better isolation of responsibilities around code exporting metrics for experiment tracking.
"""

from dataclasses import dataclass, asdict
from typing import Any, Dict


@dataclass(frozen=True)
class Metrics:
    # Minimal required fields (aligns with official script's main ones)
    exact_score: float
    f1_score: float
    total_num_instances: int

    def export_for_exp_tracking(self) -> Dict[str, Any]:
        """
        Export a dict for experiment artifacts. Skips keys that are None.
        """
        raw = asdict(self)
        return {k: v for k, v in raw.items() if v is not None}