Source code for sr.comp.match_period

"""Classes that are useful for dealing with match periods."""

from __future__ import annotations

import datetime
from enum import Enum, unique
from typing import Mapping, NamedTuple, NewType

from .types import ArenaName, MatchNumber, TLA


[docs]class Delay(NamedTuple): delay: datetime.timedelta time: datetime.datetime
[docs]@unique class MatchType(Enum): league = 'league' knockout = 'knockout' tiebreaker = 'tiebreaker'
[docs]class Match(NamedTuple): num: MatchNumber display_name: str arena: ArenaName teams: list[TLA | None] start_time: datetime.datetime end_time: datetime.datetime type: MatchType # noqa:A003 use_resolved_ranking: bool
MatchSlot = NewType('MatchSlot', Mapping[ArenaName, Match])
[docs]class MatchPeriod(NamedTuple): start_time: datetime.datetime end_time: datetime.datetime max_end_time: datetime.datetime description: str matches: list[MatchSlot] type: MatchType # noqa:A003 def __str__(self) -> str: return "{} ({}{})".format( self.description, self.start_time.strftime('%H:%M'), self.end_time.strftime('%H:%M'), )