from __future__ import annotations

from dataclasses import dataclass, field

from evalkit.metrics.base import BaseMetric
from evalkit.models import Suite


@dataclass
class EvaluationSuite:
    """A named collection of metrics with a description.

    Suites are pre-configured bundles — users pick a suite instead of
    choosing individual metrics.
    """

    name: Suite
    description: str
    metrics: list[BaseMetric] = field(default_factory=list)
    requires_judge: bool = True

    def metric_names(self) -> list[str]:
        """Return list of metric names in this suite."""
        return [m.name for m in self.metrics]
