from csv import reader from typing import Tuple from pathlib import Path from dataclasses import dataclass @dataclass class Player: name: str skill: int = 0 status: bool = False @dataclass class Team: player1: str player2: str @dataclass class Game: court: int team1: Team team2: Team @dataclass class CourtList: total: int def __post_init__(self) -> None: self.courts = {i + 1: True for i in range(self.total)} def get_court_status(self, court_number: int) -> bool: return self.courts[court_number] def toggle_court_status(self, court_number: int) -> None: new_status = not self.courts[court_number] self.courts[court_number] = new_status return new_status def get_courts(self) -> dict: return self.courts def separate_courts(self) -> Tuple[dict, dict]: active_courts = {k: v for k, v in self.courts.items() if v} inactive_courts = {k: v for k, v in self.courts.items() if not v} return active_courts, inactive_courts @dataclass class PlayerList: location: Path def __post_init__(self) -> None: with open(self.location, newline="") as file: pointer = reader(file) next(pointer, None) players = {id: Player(row[0], row[1]) for id, row in enumerate(pointer)} self.players = players def get_player_status(self, player_number: int) -> bool: return self.players[player_number].status def toggle_player_status(self, player_number: int) -> Tuple[bool, str]: new_status = not self.players[player_number].status self.players[player_number].status = new_status return new_status, self.players[player_number].name def get_players(self) -> dict: return self.players def separate_players(self) -> Tuple[dict, dict]: active_players = {k: v for k, v in self.players.items() if v.status} inactive_players = {k: v for k, v in self.players.items() if not v.status} return active_players, inactive_players