Coverage for src/duelboard/types.py: 100%
28 statements
« prev ^ index » next coverage.py v7.10.3, created at 2025-08-14 19:18 +0900
« prev ^ index » next coverage.py v7.10.3, created at 2025-08-14 19:18 +0900
1"""Type definitions for duelboard."""
3from typing import TYPE_CHECKING, Any, TypedDict
6class BattleData(TypedDict):
7 """Typed dict for battle data."""
9 player_a: str
10 player_b: str
11 winner: str
14class BattleStatistics(TypedDict):
15 """Typed dict for battle statistics."""
17 player: str
18 battles: int
19 wins: int
20 losses: int
21 ties: int
22 win_rate: float
25class PlayerStats(TypedDict):
26 """Typed dict for internal player statistics."""
28 battles: int
29 wins: int
30 losses: int
31 ties: int
34class RatingSummaryData(TypedDict, total=False):
35 """Typed dict for rating summary data."""
37 player: str
38 rating: float
39 battles: int
40 ci_lower: float
41 ci_upper: float
42 ci_width: float
45# Type aliases for better readability
46RatingsDict = dict[str, "EloRating"]
47PlayerRatings = dict[str, float]
48WinRateMatrix = dict[str, dict[str, float]]
49Metadata = dict[str, Any]
51if TYPE_CHECKING:
52 from .models import EloRating