leaguemanager.services.scheduling._generator¶
Module Contents¶
Classes¶
API¶
- class leaguemanager.services.scheduling._generator.TeamObj¶
- team_name: str | None¶
‘field(…)’
- team_id: uuid.UUID | None¶
‘field(…)’
- bye_week: bool¶
‘field(…)’
- class leaguemanager.services.scheduling._generator.PhaseObj¶
- phase_name: str | None¶
‘field(…)’
- phase_number: int | None¶
‘field(…)’
- phase_length: int¶
‘field(…)’
- class leaguemanager.services.scheduling._generator.EventDays¶
- mon: bool¶
‘field(…)’
- tue: bool¶
‘field(…)’
- wed: bool¶
‘field(…)’
- thu: bool¶
‘field(…)’
- fri: bool¶
‘field(…)’
- sat: bool¶
‘field(…)’
- sun: bool¶
‘field(…)’
- class leaguemanager.services.scheduling._generator.EventMatchup¶
- home_team: leaguemanager.services.scheduling._generator.TeamObj | None¶
‘field(…)’
- away_team: leaguemanager.services.scheduling._generator.TeamObj | None¶
‘field(…)’
- phase_number: int | None¶
‘field(…)’
- venue: str | None¶
‘field(…)’
- start_date: datetime.date | None¶
‘field(…)’
- class leaguemanager.services.scheduling._generator.Scheduler¶
- type: str¶
‘field(…)’
- number_of_teams: int¶
‘field(…)’
- teams: list[leaguemanager.models.Team | leaguemanager.services.scheduling._generator.TeamObj]¶
‘field(…)’
- number_of_phases: int¶
‘field(…)’
- venue_count: int¶
‘field(…)’
- start_date_and_time: datetime.date | None¶
‘field(…)’
- game_length: int¶
‘field(…)’
- time_between_games: int¶
‘field(…)’
- event_days: leaguemanager.services.scheduling._generator.EventDays¶
‘field(…)’
- classmethod from_season(season: leaguemanager.models.Season) leaguemanager.services.scheduling._generator.Scheduler¶
Create a Scheduler instance from a Season object.
This presumes that the Season has a valid Ruleset associated with it, and that Teams have already been associated through TeamMembership model associations.
- classmethod from_ruleset(ruleset: leaguemanager.models.Ruleset) leaguemanager.services.scheduling._generator.Scheduler¶
Create a Scheduler instance from a Ruleset object.
- property team_objs: list[leaguemanager.services.scheduling._generator.TeamObj]¶
Return a list of TeamObj instances for each team in the league.
- create_events() list[leaguemanager.services.scheduling._generator.EventMatchup]¶
Create events based on the scheduling type.
- generate_round_robin_events(shuffle_order: bool = True) list[leaguemanager.services.scheduling._generator.EventMatchup]¶
Create events for a round-robin schedule.
- phase_matchups(phase: int, round_number: int) Generator[leaguemanager.services.scheduling._generator.EventMatchup, None, None]¶
Create events/matchups for a specific phase.
See: https://en.wikipedia.org/wiki/Round-robin_tournament#Circle_method for details on round-robin scheduling. Splitting teams creates “bye week” team to ensure even matchups, and the phase number is used to rotate the teams for each phase of the round-robin schedule.
- _create_matchups(matchups: Iterable[tuple[leaguemanager.services.scheduling._generator.TeamObj, leaguemanager.services.scheduling._generator.TeamObj]], phase: int, round_number: int) Generator[leaguemanager.services.scheduling._generator.EventMatchup, None, None]¶
Create EventMatchup instances from the matchups.
- _schedule_events(matchups: Iterable[leaguemanager.services.scheduling._generator.EventMatchup], phase: int, round_number: int) list[leaguemanager.services.scheduling._generator.EventMatchup]¶
Schedule events based on the matchups and the start date/time.
- _is_valid_event_day(date: datetime.date) bool¶
Check if the given date is a valid event day based on the event_days settings.
- _split_teams(team_obj: Iterable[leaguemanager.services.scheduling._generator.TeamObj]) tuple[list[leaguemanager.services.scheduling._generator.TeamObj], list[leaguemanager.services.scheduling._generator.TeamObj]]¶
Split a list of teams in half, creating “bye week” team if number of teams is odd.