Module rating.objects.rating_period
Classes
class RatingPeriod (rating_periods: List[datetime.datetime] = None, **kwargs)
-
Represents a rating period for ratings.
Attributes
- rating_periods (list): List of datetime objects representing the rating periods.
Args
- rating_periods (list, optional): List of datetime objects representing the rating periods.
- **kwargs: Additional keyword arguments to be passed to the base class constructor.
Expand source code
class RatingPeriod(BaseClass): def __init__(self, rating_periods : List[datetime] = None, **kwargs) -> 'RatingPeriod': """ Represents a rating period for ratings. Attributes: - rating_periods (list): List of datetime objects representing the rating periods. Args: - rating_periods (list, optional): List of datetime objects representing the rating periods. - **kwargs: Additional keyword arguments to be passed to the base class constructor. """ if rating_periods is None: rating_periods = [] super().__init__(rating_periods=rating_periods, **kwargs) def trigger_new_period(self, datetime : datetime = datetime.now()) -> bool: """ Triggers a new rating period. Args: - datetime (datetime, optional): The datetime object representing the new rating period. """ if len(self.rating_periods) == 0 or datetime > self.rating_periods[-1]: self.rating_periods.append(datetime) elif datetime not in self.rating_periods: self.rating_periods.append(datetime) self.rating_periods.sort() def generate_settings(self) -> dict: """ Generates settings for the RatingPeriod object. Returns: - dict: The generated settings. """ settings = super().generate_settings() settings['rating_periods'] = [period.strftime("%Y/%m/%d - %H:%M:%S") for period in self.rating_periods] return settings @classmethod def load_from_settings(cls, settings : dict) -> 'RatingPeriod': """ Loads a RatingPeriod object from settings. Args: - settings (dict): The settings to load from. Returns: - RatingPeriod: The loaded RatingPeriod object. """ settings = super().get_input_parameters(settings) settings['rating_periods'] = [datetime.strptime(period, "%Y/%m/%d - %H:%M:%S") for period in settings['rating_periods']] return cls(**settings) def __len__(self) -> int: """ Returns the number of rating periods. Returns: - int: The number of rating periods. """ return len(self.rating_periods) def __getitem__(self, index : int) -> datetime: """ Returns the rating period at the specified index. Args: - index (int): The index of the rating period. Returns: - datetime: The rating period at the specified index. """ return self.rating_periods[index] def __iter__(self) -> Generator[datetime, None, None]: """ Returns an iterator for the rating periods. Returns: - iterator: An iterator for the rating periods. """ return iter(self.rating_periods) def get_last_period(self) -> datetime: """ Returns the last rating period. Returns: - datetime: The last rating period. """ return self.rating_periods[-1] def n_new_rating_periods(self, last_date : datetime = None) -> int: """ Returns the number of new rating periods. Args: - last_date (datetime, optional): The last date to compare against. Returns: - int: The number of new rating periods. """ if last_date is None: return len(self.rating_periods) return len([p for p in self.rating_periods if p > last_date]) def get_period_of_date(self, date : datetime, next : bool = True) -> datetime: """ Returns the rating period of a given date. Args: - date (datetime): The date to find the rating period for. - next (bool, optional): If True, returns the rating period after the given date. If False, returns the rating period before the given date. Returns: - datetime: The rating period of the given date. """ for i in range(len(self.rating_periods)): if date < self.rating_periods[i]: if i > 0: return self.rating_periods[i] if next else self.rating_periods[i-1] return self.rating_periods[i] return self.rating_periods[-1] def iterate_periods(self, last_date : datetime = None) -> Generator[datetime, None, None]: """ Iterates over the rating periods. Args: - last_date (datetime, optional): The last date to start iterating from. Yields: - list: A list of rating periods. """ for i in range(len(self.rating_periods)): if last_date is None or self.rating_periods[i] > last_date: yield self.rating_periods[:i+1]
Ancestors
Static methods
def load_from_settings(settings: dict) ‑> RatingPeriod
-
Loads a RatingPeriod object from settings.
Args
- settings (dict): The settings to load from.
Returns
- RatingPeriod: The loaded RatingPeriod object.
Methods
def generate_settings(self) ‑> dict
-
Generates settings for the RatingPeriod object.
Returns
- dict: The generated settings.
def get_last_period(self) ‑> datetime.datetime
-
Returns the last rating period.
Returns
- datetime: The last rating period.
def get_period_of_date(self, date: datetime.datetime, next: bool = True) ‑> datetime.datetime
-
Returns the rating period of a given date.
Args
- date (datetime): The date to find the rating period for.
- next (bool, optional): If True, returns the rating period after the given date. If False, returns the rating period before the given date.
Returns
- datetime: The rating period of the given date.
def iterate_periods(self, last_date: datetime.datetime = None) ‑> Generator[datetime.datetime, None, None]
-
Iterates over the rating periods.
Args
- last_date (datetime, optional): The last date to start iterating from.
Yields
- list: A list of rating periods.
def n_new_rating_periods(self, last_date: datetime.datetime = None) ‑> int
-
Returns the number of new rating periods.
Args
- last_date (datetime, optional): The last date to compare against.
Returns
- int: The number of new rating periods.
def trigger_new_period(self, datetime: datetime.datetime = datetime.datetime(2024, 9, 18, 16, 19, 11, 852699)) ‑> bool
-
Triggers a new rating period.
Args
- datetime (datetime, optional): The datetime object representing the new rating period.
Inherited members
class RatingPeriodEnum
-
Expand source code
class RatingPeriodEnum: TOURNAMENT = 0 # rating period is determined by tournaments: a new rating period is triggered when a new tournament is created TIMEDELTA = 1 # rating period is determined by a timedelta: a new rating period is triggered after a certain amount of time has passed MANUAL = 2 # rating period is determined manually: a new rating period is triggered manually
Class variables
var MANUAL
var TIMEDELTA
var TOURNAMENT