Vladyslav Moroshan
Apply ruff formatting
0a58567
"""Core data structures and helpers shared across GIFT-Eval modules."""
from dataclasses import dataclass
from src.gift_eval.constants import ALL_DATASETS
@dataclass
class DatasetMetadata:
"""Structured description of a dataset/term combination."""
full_name: str
key: str
freq: str
term: str
season_length: int
target_dim: int
to_univariate: bool
prediction_length: int
windows: int
@dataclass
class EvaluationItem:
"""Container for evaluation results and optional figures."""
dataset_metadata: DatasetMetadata
metrics: dict
figures: list[tuple[object, str]]
DatasetSelection = list[str] | tuple[str, ...] | str
def expand_datasets_arg(datasets: DatasetSelection) -> list[str]:
"""Normalize dataset selection strings to explicit lists."""
if isinstance(datasets, str):
dataset_list = [datasets]
else:
dataset_list = list(datasets)
if not dataset_list:
return []
if dataset_list[0] == "all":
return list(ALL_DATASETS)
for dataset in dataset_list:
if dataset not in ALL_DATASETS:
raise ValueError(f"Invalid dataset: {dataset}. Use one of {ALL_DATASETS}")
return dataset_list
__all__ = [
"DatasetMetadata",
"EvaluationItem",
"DatasetSelection",
"expand_datasets_arg",
]