Source code for rankade.models.Ranking
# rankade.models.Ranking.py
from dataclasses import dataclass
from typing import ClassVar, Dict, Type
from .Base import Page, RankadeObject
from .Match import Match
from .Player import Player
from .Subset import Subset
[docs]
@dataclass(kw_only=True, slots=True)
class Ranking(RankadeObject):
"""Individual Ranking of a player in the subset."""
ree: int
"""Player's Ree score. (In the subset or after selected match.)"""
deltaRee: int
"""Player's change in Ree score. (In the subset or after selected match.)"""
position: int
"""Player's position. (In the subset or after selected match.)"""
deltaPosition: int
"""Players change in position. (In the subset or after selected match.)"""
belt: int
"""Players current belt."""
beltLabel: str
"""Label of players current belt."""
title: int
"""Players Rank title."""
titleLabel: str
"""Players Rank title."""
status: int
"""Players status."""
statusLabel: str
"""Players status."""
player: Player
"""Player object"""
[docs]
def __post_init__(self):
if isinstance(self.player, Dict):
self.player = Player(**self.player) # pyright: ignore[reportUnknownArgumentType]
[docs]
@dataclass(kw_only=True, slots=True)
class Rankings(Page[Ranking]):
"""
Represents the list of Rankings returned by the Rankade server.
Individual ranking objects returned by the server can be accessed in the same way as a regular list.
"""
_content_class: ClassVar[Type[RankadeObject]] = Ranking
"""Classvar to allow the an object in the list to be created from a dict returned from the server."""
match: Match
"""Match after which the rankings were calculated"""
subset: Subset
"""Subset which the ranking applies to."""
[docs]
def __post_init__(self):
if isinstance(self.match, Dict):
self.match = Match(**self.match) # pyright: ignore[reportUnknownArgumentType]
if isinstance(self.subset, Dict):
self.subset = Subset(**self.subset) # pyright: ignore[reportUnknownArgumentType]
self.data.sort(key=lambda position: position.position)
@property
def sorted_by_position(self):
"""Rankings sorted by position."""
r = self.data[:]
r.sort(key=lambda position: position.position)
return r
@property
def sorted_by_delta_position(self):
"""Rankings sorted by change of position."""
r = self.data[:]
r.sort(reverse=True, key=lambda position: position.deltaPosition)
return r
@property
def sorted_by_ree(self):
"""Rankings sorted by Ree score."""
r = self.data[:]
r.sort(reverse=True, key=lambda position: position.ree)
return r
@property
def sorted_by_delta_ree(self):
"""Rankings sorted by change of Ree score."""
r = self.data[:]
r.sort(reverse=True, key=lambda position: position.deltaRee)
return r