Source code for rankade.models.Subset
# rankade.models.Subset.py
from dataclasses import dataclass
from datetime import datetime
from typing import ClassVar, Optional, Type
from .Base import RankadeObject, ResultList
from .Game import Game
from .Match import Match, Matches
[docs]
@dataclass(kw_only=True, slots=True)
class Subset(RankadeObject):
"""Represents a groups subset."""
id: str
"""Subset id."""
name: str
"""Subset name."""
type: str
"""Subset type."""
creationDate: datetime
"""Subset creation date."""
isMain: bool
"""Subset is the main subset."""
isCustom: bool
"""Subset is a custom subset."""
icon: str
"""Subset icon URL."""
countMatches: int
"""Total matches in subset."""
game: Optional[Game]
"""Game associated with the subset."""
firstMatch: Match
"""First match included in the subset."""
lastMatch: Match
"""Last match included in the subset."""
[docs]
def __post_init__(self):
if isinstance(self.isMain, int): # pyright: ignore[reportUnnecessaryIsInstance]
self.isMain = bool(self.isMain)
if isinstance(self.isCustom, int): # pyright: ignore[reportUnnecessaryIsInstance]
self.isCustom = bool(self.isCustom)
if isinstance(self.creationDate, str):
self.creationDate = datetime.fromisoformat(self.creationDate)
if isinstance(self.game, dict):
self.game = Game(**self.game) # pyright: ignore[reportUnknownArgumentType]
if isinstance(self.firstMatch, dict):
self.firstMatch = Match(**self.firstMatch) # pyright: ignore[reportUnknownArgumentType]
if isinstance(self.lastMatch, dict):
self.lastMatch = Match(**self.lastMatch) # pyright: ignore[reportUnknownArgumentType]
@property
def matches(self):
"""Includes bot the first and last match in the subset."""
return Matches(data=[self.firstMatch, self.lastMatch], totalMatches=2)
[docs]
@dataclass(kw_only=True, slots=True)
class Subsets(ResultList[Subset]):
"""
Represents the list of subsets returned by the Rankade server.
Individual subset objects returned by the server can be accessed in the same way as a regular list.
"""
_content_class: ClassVar[Type[RankadeObject]] = Subset
"""Classvar to allow the an object in the list to be created from a dict returned from the server."""