leaguemanager.services.scheduling._generator

Module Contents

Classes

TeamObj

PhaseObj

EventDays

EventMatchup

Scheduler

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.