Source code for nlp_shap.domain.players

"""Player indexing for cooperative-game explainability."""

from __future__ import annotations

from dataclasses import dataclass


[docs] @dataclass(frozen=True, slots=True) class PlayerSet: """Ordered explainability players aligned with coalition masks.""" player_ids: tuple[str, ...] """Stable player identifiers in coalition-mask order.""" def __post_init__(self) -> None: if not self.player_ids: msg = "player set must contain at least one player" raise ValueError(msg) if len(set(self.player_ids)) != len(self.player_ids): msg = "player ids must be unique" raise ValueError(msg) @property def num_players(self) -> int: """Return the number of players in the set.""" return len(self.player_ids)