Source code for fantraxapi.objs.standings

from typing import TYPE_CHECKING

from .base import FantraxBaseObject
from .team import Team

if TYPE_CHECKING:
    from .league import League


[docs] class Standings(FantraxBaseObject): """Represents a single Standings. Attributes: league (League): The League instance this object belongs to. scoring_period_number (int): Period Number. ranks (dict[int, Record]): Team Ranks and their Records. """ def __init__(self, league: "League", data: dict, scoring_period_number: int | None = None) -> None: super().__init__(league, data) self.scoring_period_number: int | None = scoring_period_number self.ranks: dict[int, Record] = {} fields = {c["key"]: i for i, c in enumerate(self._data["header"]["cells"])} for obj in self._data["rows"]: team_id = obj["fixedCells"][1]["teamId"] rank = int(obj["fixedCells"][0]["content"]) self.ranks[rank] = Record(self, team_id, rank, fields, obj["cells"]) def __str__(self) -> str: output = "Standings" if self.scoring_period_number: output += f" Period {self.scoring_period_number}" for rank, record in self.ranks.items(): output += f"\n{record}" return output
[docs] class Record(FantraxBaseObject): """Represents a single Record of a Standings. Attributes: league (League): The League instance this object belongs to. standings (Standings): The Standings instance this Record belongs to. team (Team): Team. rank (int): Standings Rank. win (int): Number of Wins. loss (int): Number of Losses. tie (int): Number of Ties. points (int): Number of Points. win_percentage (float): Win Percentage. games_back (int): Number of Games Back. wavier_wire_order (int): Wavier Wire Claim Order. points_for (float): Fantasy Points For. points_against (float): Fantasy Points Against. streak (str): Streak. """ def __init__(self, standings: Standings, team_id: str, rank: int, fields: dict, data: dict) -> None: super().__init__(standings.league, data) self.standings: Standings = standings self.team: Team = self.league.team(team_id) self.rank: int = rank self.win: int = int(self._data[fields["win"]]["content"]) if "win" in fields else 0 self.loss: int = int(self._data[fields["loss"]]["content"]) if "loss" in fields else 0 self.tie: int = int(self._data[fields["tie"]]["content"]) if "tie" in fields else 0 self.points: int = int(self._data[fields["points"]]["content"]) if "points" in fields else 0 winpc_raw: str = self._data[fields["winpc"]]["content"] if "winpc" in fields else 0 self.win_percentage: float = float(winpc_raw) if winpc_raw != "-" else 0.0 self.games_back: int = int(self._data[fields["gamesback"]]["content"]) if "gamesback" in fields else 0 self.wavier_wire_order: int = int(self._data[fields["wwOrder"]]["content"]) if "wwOrder" in fields else 0 self.points_for: float = float(self._data[fields["pointsFor"]]["content"].replace(",", "")) if "pointsFor" in fields else 0.0 self.points_against: float = float(self._data[fields["pointsAgainst"]]["content"].replace(",", "")) if "pointsAgainst" in fields else 0.0 self.streak: str = self._data[fields["streak"]]["content"] if "streak" in fields else "" def __str__(self) -> str: return f"{self.rank}: {self.team} ({self.win}-{self.loss}-{self.tie})"