paper-dynasty-discord/cogs/players_new/shared_utils.py
Cal Corum ee80cd72ae fix: apply Black formatting and resolve ruff lint violations
Run Black formatter across 83 files and fix 1514 ruff violations:
- E722: bare except → typed exceptions (17 fixes)
- E711/E712/E721: comparison style fixes with noqa for SQLAlchemy (44 fixes)
- F841: unused variable assignments (70 fixes)
- F541/F401: f-string and import cleanup (1383 auto-fixes)

Remaining 925 errors are all F403/F405 (star imports) — structural,
requires converting to explicit imports in a separate effort.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 11:37:46 -05:00

448 lines
20 KiB
Python

# Shared utilities for players package
# Contains common functions extracted from the original players.py
import logging
import discord
from helpers import get_team_embed
logger = logging.getLogger("discord_app")
def get_ai_records(short_games, long_games):
"""
Calculate AI team records from game data.
Args:
short_games: List of short game records
long_games: List of long game records
Returns:
Dict containing records for all MLB teams across different leagues
"""
all_results = {
"ARI": {
"short": {"w": 0, "l": 0, "rd": 0, "points": 0},
"minor": {"w": 0, "l": 0, "rd": 0, "points": 0},
"major": {"w": 0, "l": 0, "rd": 0, "points": 0},
"hof": {"w": 0, "l": 0, "rd": 0, "points": 0},
},
"ATL": {
"short": {"w": 0, "l": 0, "rd": 0, "points": 0},
"minor": {"w": 0, "l": 0, "rd": 0, "points": 0},
"major": {"w": 0, "l": 0, "rd": 0, "points": 0},
"hof": {"w": 0, "l": 0, "rd": 0, "points": 0},
},
"BAL": {
"short": {"w": 0, "l": 0, "rd": 0, "points": 0},
"minor": {"w": 0, "l": 0, "rd": 0, "points": 0},
"major": {"w": 0, "l": 0, "rd": 0, "points": 0},
"hof": {"w": 0, "l": 0, "rd": 0, "points": 0},
},
"BOS": {
"short": {"w": 0, "l": 0, "rd": 0, "points": 0},
"minor": {"w": 0, "l": 0, "rd": 0, "points": 0},
"major": {"w": 0, "l": 0, "rd": 0, "points": 0},
"hof": {"w": 0, "l": 0, "rd": 0, "points": 0},
},
"CHC": {
"short": {"w": 0, "l": 0, "rd": 0, "points": 0},
"minor": {"w": 0, "l": 0, "rd": 0, "points": 0},
"major": {"w": 0, "l": 0, "rd": 0, "points": 0},
"hof": {"w": 0, "l": 0, "rd": 0, "points": 0},
},
"CHW": {
"short": {"w": 0, "l": 0, "rd": 0, "points": 0},
"minor": {"w": 0, "l": 0, "rd": 0, "points": 0},
"major": {"w": 0, "l": 0, "rd": 0, "points": 0},
"hof": {"w": 0, "l": 0, "rd": 0, "points": 0},
},
"CIN": {
"short": {"w": 0, "l": 0, "rd": 0, "points": 0},
"minor": {"w": 0, "l": 0, "rd": 0, "points": 0},
"major": {"w": 0, "l": 0, "rd": 0, "points": 0},
"hof": {"w": 0, "l": 0, "rd": 0, "points": 0},
},
"CLE": {
"short": {"w": 0, "l": 0, "rd": 0, "points": 0},
"minor": {"w": 0, "l": 0, "rd": 0, "points": 0},
"major": {"w": 0, "l": 0, "rd": 0, "points": 0},
"hof": {"w": 0, "l": 0, "rd": 0, "points": 0},
},
"COL": {
"short": {"w": 0, "l": 0, "rd": 0, "points": 0},
"minor": {"w": 0, "l": 0, "rd": 0, "points": 0},
"major": {"w": 0, "l": 0, "rd": 0, "points": 0},
"hof": {"w": 0, "l": 0, "rd": 0, "points": 0},
},
"DET": {
"short": {"w": 0, "l": 0, "rd": 0, "points": 0},
"minor": {"w": 0, "l": 0, "rd": 0, "points": 0},
"major": {"w": 0, "l": 0, "rd": 0, "points": 0},
"hof": {"w": 0, "l": 0, "rd": 0, "points": 0},
},
"HOU": {
"short": {"w": 0, "l": 0, "rd": 0, "points": 0},
"minor": {"w": 0, "l": 0, "rd": 0, "points": 0},
"major": {"w": 0, "l": 0, "rd": 0, "points": 0},
"hof": {"w": 0, "l": 0, "rd": 0, "points": 0},
},
"KCR": {
"short": {"w": 0, "l": 0, "rd": 0, "points": 0},
"minor": {"w": 0, "l": 0, "rd": 0, "points": 0},
"major": {"w": 0, "l": 0, "rd": 0, "points": 0},
"hof": {"w": 0, "l": 0, "rd": 0, "points": 0},
},
"LAA": {
"short": {"w": 0, "l": 0, "rd": 0, "points": 0},
"minor": {"w": 0, "l": 0, "rd": 0, "points": 0},
"major": {"w": 0, "l": 0, "rd": 0, "points": 0},
"hof": {"w": 0, "l": 0, "rd": 0, "points": 0},
},
"LAD": {
"short": {"w": 0, "l": 0, "rd": 0, "points": 0},
"minor": {"w": 0, "l": 0, "rd": 0, "points": 0},
"major": {"w": 0, "l": 0, "rd": 0, "points": 0},
"hof": {"w": 0, "l": 0, "rd": 0, "points": 0},
},
"MIA": {
"short": {"w": 0, "l": 0, "rd": 0, "points": 0},
"minor": {"w": 0, "l": 0, "rd": 0, "points": 0},
"major": {"w": 0, "l": 0, "rd": 0, "points": 0},
"hof": {"w": 0, "l": 0, "rd": 0, "points": 0},
},
"MIL": {
"short": {"w": 0, "l": 0, "rd": 0, "points": 0},
"minor": {"w": 0, "l": 0, "rd": 0, "points": 0},
"major": {"w": 0, "l": 0, "rd": 0, "points": 0},
"hof": {"w": 0, "l": 0, "rd": 0, "points": 0},
},
"MIN": {
"short": {"w": 0, "l": 0, "rd": 0, "points": 0},
"minor": {"w": 0, "l": 0, "rd": 0, "points": 0},
"major": {"w": 0, "l": 0, "rd": 0, "points": 0},
"hof": {"w": 0, "l": 0, "rd": 0, "points": 0},
},
"NYM": {
"short": {"w": 0, "l": 0, "rd": 0, "points": 0},
"minor": {"w": 0, "l": 0, "rd": 0, "points": 0},
"major": {"w": 0, "l": 0, "rd": 0, "points": 0},
"hof": {"w": 0, "l": 0, "rd": 0, "points": 0},
},
"NYY": {
"short": {"w": 0, "l": 0, "rd": 0, "points": 0},
"minor": {"w": 0, "l": 0, "rd": 0, "points": 0},
"major": {"w": 0, "l": 0, "rd": 0, "points": 0},
"hof": {"w": 0, "l": 0, "rd": 0, "points": 0},
},
"OAK": {
"short": {"w": 0, "l": 0, "rd": 0, "points": 0},
"minor": {"w": 0, "l": 0, "rd": 0, "points": 0},
"major": {"w": 0, "l": 0, "rd": 0, "points": 0},
"hof": {"w": 0, "l": 0, "rd": 0, "points": 0},
},
"PHI": {
"short": {"w": 0, "l": 0, "rd": 0, "points": 0},
"minor": {"w": 0, "l": 0, "rd": 0, "points": 0},
"major": {"w": 0, "l": 0, "rd": 0, "points": 0},
"hof": {"w": 0, "l": 0, "rd": 0, "points": 0},
},
"PIT": {
"short": {"w": 0, "l": 0, "rd": 0, "points": 0},
"minor": {"w": 0, "l": 0, "rd": 0, "points": 0},
"major": {"w": 0, "l": 0, "rd": 0, "points": 0},
"hof": {"w": 0, "l": 0, "rd": 0, "points": 0},
},
"SDP": {
"short": {"w": 0, "l": 0, "rd": 0, "points": 0},
"minor": {"w": 0, "l": 0, "rd": 0, "points": 0},
"major": {"w": 0, "l": 0, "rd": 0, "points": 0},
"hof": {"w": 0, "l": 0, "rd": 0, "points": 0},
},
"SEA": {
"short": {"w": 0, "l": 0, "rd": 0, "points": 0},
"minor": {"w": 0, "l": 0, "rd": 0, "points": 0},
"major": {"w": 0, "l": 0, "rd": 0, "points": 0},
"hof": {"w": 0, "l": 0, "rd": 0, "points": 0},
},
"SFG": {
"short": {"w": 0, "l": 0, "rd": 0, "points": 0},
"minor": {"w": 0, "l": 0, "rd": 0, "points": 0},
"major": {"w": 0, "l": 0, "rd": 0, "points": 0},
"hof": {"w": 0, "l": 0, "rd": 0, "points": 0},
},
"STL": {
"short": {"w": 0, "l": 0, "rd": 0, "points": 0},
"minor": {"w": 0, "l": 0, "rd": 0, "points": 0},
"major": {"w": 0, "l": 0, "rd": 0, "points": 0},
"hof": {"w": 0, "l": 0, "rd": 0, "points": 0},
},
"TBR": {
"short": {"w": 0, "l": 0, "rd": 0, "points": 0},
"minor": {"w": 0, "l": 0, "rd": 0, "points": 0},
"major": {"w": 0, "l": 0, "rd": 0, "points": 0},
"hof": {"w": 0, "l": 0, "rd": 0, "points": 0},
},
"TEX": {
"short": {"w": 0, "l": 0, "rd": 0, "points": 0},
"minor": {"w": 0, "l": 0, "rd": 0, "points": 0},
"major": {"w": 0, "l": 0, "rd": 0, "points": 0},
"hof": {"w": 0, "l": 0, "rd": 0, "points": 0},
},
"TOR": {
"short": {"w": 0, "l": 0, "rd": 0, "points": 0},
"minor": {"w": 0, "l": 0, "rd": 0, "points": 0},
"major": {"w": 0, "l": 0, "rd": 0, "points": 0},
"hof": {"w": 0, "l": 0, "rd": 0, "points": 0},
},
"WSN": {
"short": {"w": 0, "l": 0, "rd": 0, "points": 0},
"minor": {"w": 0, "l": 0, "rd": 0, "points": 0},
"major": {"w": 0, "l": 0, "rd": 0, "points": 0},
"hof": {"w": 0, "l": 0, "rd": 0, "points": 0},
},
}
logger.debug("Running short games...")
for line in short_games:
home_win = True if line["home_score"] > line["away_score"] else False
if line["away_team"]["is_ai"]:
all_results[line["away_team"]["abbrev"]]["short"]["w"] += (
1 if home_win else 0
)
all_results[line["away_team"]["abbrev"]]["short"]["l"] += (
1 if not home_win else 0
)
all_results[line["away_team"]["abbrev"]]["short"]["points"] += (
2 if home_win else 1
)
all_results[line["away_team"]["abbrev"]]["short"]["rd"] += (
line["home_score"] - line["away_score"]
)
elif line["home_team"]["is_ai"]:
all_results[line["home_team"]["abbrev"]]["short"]["w"] += (
1 if not home_win else 0
)
all_results[line["home_team"]["abbrev"]]["short"]["l"] += (
1 if home_win else 0
)
all_results[line["home_team"]["abbrev"]]["short"]["points"] += (
2 if not home_win else 1
)
all_results[line["home_team"]["abbrev"]]["short"]["rd"] += (
line["away_score"] - line["home_score"]
)
logger.debug("Done short games")
logger.debug("Running league games...")
league = {
None: "minor",
"minor-league": "minor",
"major-league": "major",
"hall-of-fame": "hof",
}
for line in long_games:
home_win = True if line["home_score"] > line["away_score"] else False
if line["away_team"]["is_ai"]:
all_results[line["away_team"]["abbrev"]][league[line["game_type"]]][
"w"
] += (1 if home_win else 0)
all_results[line["away_team"]["abbrev"]][league[line["game_type"]]][
"l"
] += (1 if not home_win else 0)
all_results[line["away_team"]["abbrev"]][league[line["game_type"]]][
"points"
] += (2 if home_win else 1)
all_results[line["away_team"]["abbrev"]][league[line["game_type"]]][
"rd"
] += (line["home_score"] - line["away_score"])
elif line["home_team"]["is_ai"]:
all_results[line["home_team"]["abbrev"]][league[line["game_type"]]][
"w"
] += (1 if not home_win else 0)
all_results[line["home_team"]["abbrev"]][league[line["game_type"]]][
"l"
] += (1 if home_win else 0)
all_results[line["home_team"]["abbrev"]][league[line["game_type"]]][
"points"
] += (2 if not home_win else 1)
all_results[line["home_team"]["abbrev"]][league[line["game_type"]]][
"rd"
] += (line["away_score"] - line["home_score"])
logger.debug("Done league games")
return all_results
def get_record_embed_legacy(embed: discord.Embed, results: dict, league: str):
"""
Legacy format for record embed display organized by MLB divisions.
Args:
embed: Discord embed to modify
results: AI records data
league: League type ('short', 'minor', 'major', 'hof')
Returns:
Modified Discord embed with division standings
"""
ale_points = (
results["BAL"][league]["points"]
+ results["BOS"][league]["points"]
+ results["NYY"][league]["points"]
+ results["TBR"][league]["points"]
+ results["TOR"][league]["points"]
)
alc_points = (
results["CLE"][league]["points"]
+ results["CHW"][league]["points"]
+ results["DET"][league]["points"]
+ results["KCR"][league]["points"]
+ results["MIN"][league]["points"]
)
alw_points = (
results["HOU"][league]["points"]
+ results["LAA"][league]["points"]
+ results["OAK"][league]["points"]
+ results["SEA"][league]["points"]
+ results["TEX"][league]["points"]
)
nle_points = (
results["ATL"][league]["points"]
+ results["MIA"][league]["points"]
+ results["NYM"][league]["points"]
+ results["PHI"][league]["points"]
+ results["WSN"][league]["points"]
)
nlc_points = (
results["CHC"][league]["points"]
+ results["CIN"][league]["points"]
+ results["MIL"][league]["points"]
+ results["PIT"][league]["points"]
+ results["STL"][league]["points"]
)
nlw_points = (
results["ARI"][league]["points"]
+ results["COL"][league]["points"]
+ results["LAD"][league]["points"]
+ results["SDP"][league]["points"]
+ results["SFG"][league]["points"]
)
embed.add_field(
name=f"AL East ({ale_points} pts)",
value=f'BAL: {results["BAL"][league]["w"]} - {results["BAL"][league]["l"]} ({results["BAL"][league]["rd"]} RD)\n'
f'BOS: {results["BOS"][league]["w"]} - {results["BOS"][league]["l"]} ({results["BOS"][league]["rd"]} RD)\n'
f'NYY: {results["NYY"][league]["w"]} - {results["NYY"][league]["l"]} ({results["NYY"][league]["rd"]} RD)\n'
f'TBR: {results["TBR"][league]["w"]} - {results["TBR"][league]["l"]} ({results["TBR"][league]["rd"]} RD)\n'
f'TOR: {results["TOR"][league]["w"]} - {results["TOR"][league]["l"]} ({results["TOR"][league]["rd"]} RD)\n',
)
embed.add_field(
name=f"AL Central ({alc_points} pts)",
value=f'CLE: {results["CLE"][league]["w"]} - {results["CLE"][league]["l"]} ({results["CLE"][league]["rd"]} RD)\n'
f'CHW: {results["CHW"][league]["w"]} - {results["CHW"][league]["l"]} ({results["CHW"][league]["rd"]} RD)\n'
f'DET: {results["DET"][league]["w"]} - {results["DET"][league]["l"]} ({results["DET"][league]["rd"]} RD)\n'
f'KCR: {results["KCR"][league]["w"]} - {results["KCR"][league]["l"]} ({results["KCR"][league]["rd"]} RD)\n'
f'MIN: {results["MIN"][league]["w"]} - {results["MIN"][league]["l"]} ({results["MIN"][league]["rd"]} RD)\n',
)
embed.add_field(
name=f"AL West ({alw_points} pts)",
value=f'HOU: {results["HOU"][league]["w"]} - {results["HOU"][league]["l"]} ({results["HOU"][league]["rd"]} RD)\n'
f'LAA: {results["LAA"][league]["w"]} - {results["LAA"][league]["l"]} ({results["LAA"][league]["rd"]} RD)\n'
f'OAK: {results["OAK"][league]["w"]} - {results["OAK"][league]["l"]} ({results["OAK"][league]["rd"]} RD)\n'
f'SEA: {results["SEA"][league]["w"]} - {results["SEA"][league]["l"]} ({results["SEA"][league]["rd"]} RD)\n'
f'TEX: {results["TEX"][league]["w"]} - {results["TEX"][league]["l"]} ({results["TEX"][league]["rd"]} RD)\n',
)
embed.add_field(
name=f"NL East ({nle_points} pts)",
value=f'ATL: {results["ATL"][league]["w"]} - {results["ATL"][league]["l"]} ({results["ATL"][league]["rd"]} RD)\n'
f'MIA: {results["MIA"][league]["w"]} - {results["MIA"][league]["l"]} ({results["MIA"][league]["rd"]} RD)\n'
f'NYM: {results["NYM"][league]["w"]} - {results["NYM"][league]["l"]} ({results["NYM"][league]["rd"]} RD)\n'
f'PHI: {results["PHI"][league]["w"]} - {results["PHI"][league]["l"]} ({results["PHI"][league]["rd"]} RD)\n'
f'WSN: {results["WSN"][league]["w"]} - {results["WSN"][league]["l"]} ({results["WSN"][league]["rd"]} RD)\n',
)
embed.add_field(
name=f"NL Central ({nlc_points} pts)",
value=f'CHC: {results["CHC"][league]["w"]} - {results["CHC"][league]["l"]} ({results["CHC"][league]["rd"]} RD)\n'
f'CIN: {results["CIN"][league]["w"]} - {results["CIN"][league]["l"]} ({results["CIN"][league]["rd"]} RD)\n'
f'MIL: {results["MIL"][league]["w"]} - {results["MIL"][league]["l"]} ({results["MIL"][league]["rd"]} RD)\n'
f'PIT: {results["PIT"][league]["w"]} - {results["PIT"][league]["l"]} ({results["PIT"][league]["rd"]} RD)\n'
f'STL: {results["STL"][league]["w"]} - {results["STL"][league]["l"]} ({results["STL"][league]["rd"]} RD)\n',
)
embed.add_field(
name=f"NL West ({nlw_points} pts)",
value=f'ARI: {results["ARI"][league]["w"]} - {results["ARI"][league]["l"]} ({results["ARI"][league]["rd"]} RD)\n'
f'COL: {results["COL"][league]["w"]} - {results["COL"][league]["l"]} ({results["COL"][league]["rd"]} RD)\n'
f'LAD: {results["LAD"][league]["w"]} - {results["LAD"][league]["l"]} ({results["LAD"][league]["rd"]} RD)\n'
f'SDP: {results["SDP"][league]["w"]} - {results["SDP"][league]["l"]} ({results["SDP"][league]["rd"]} RD)\n'
f'SFG: {results["SFG"][league]["w"]} - {results["SFG"][league]["l"]} ({results["SFG"][league]["rd"]} RD)\n',
)
return embed
def get_record_embed(team: dict, results: dict, league: str):
"""
Modern format for record embed display.
Args:
team: Team data for embed styling
results: AI records data (expected format: team -> [wins, losses, run_diff])
league: League type for embed title
Returns:
Discord embed with team records
"""
embed = get_team_embed(league, team)
embed.add_field(
name="AL East",
value=f'BAL: {results["BAL"][0]} - {results["BAL"][1]} ({results["BAL"][2]} RD)\n'
f'BOS: {results["BOS"][0]} - {results["BOS"][1]} ({results["BOS"][2]} RD)\n'
f'NYY: {results["NYY"][0]} - {results["NYY"][1]} ({results["NYY"][2]} RD)\n'
f'TBR: {results["TBR"][0]} - {results["TBR"][1]} ({results["TBR"][2]} RD)\n'
f'TOR: {results["TOR"][0]} - {results["TOR"][1]} ({results["TOR"][2]} RD)\n',
)
embed.add_field(
name="AL Central",
value=f'CLE: {results["CLE"][0]} - {results["CLE"][1]} ({results["CLE"][2]} RD)\n'
f'CHW: {results["CHW"][0]} - {results["CHW"][1]} ({results["CHW"][2]} RD)\n'
f'DET: {results["DET"][0]} - {results["DET"][1]} ({results["DET"][2]} RD)\n'
f'KCR: {results["KCR"][0]} - {results["KCR"][1]} ({results["KCR"][2]} RD)\n'
f'MIN: {results["MIN"][0]} - {results["MIN"][1]} ({results["MIN"][2]} RD)\n',
)
embed.add_field(
name="AL West",
value=f'HOU: {results["HOU"][0]} - {results["HOU"][1]} ({results["HOU"][2]} RD)\n'
f'LAA: {results["LAA"][0]} - {results["LAA"][1]} ({results["LAA"][2]} RD)\n'
f'OAK: {results["OAK"][0]} - {results["OAK"][1]} ({results["OAK"][2]} RD)\n'
f'SEA: {results["SEA"][0]} - {results["SEA"][1]} ({results["SEA"][2]} RD)\n'
f'TEX: {results["TEX"][0]} - {results["TEX"][1]} ({results["TEX"][2]} RD)\n',
)
embed.add_field(
name="NL East",
value=f'ATL: {results["ATL"][0]} - {results["ATL"][1]} ({results["ATL"][2]} RD)\n'
f'MIA: {results["MIA"][0]} - {results["MIA"][1]} ({results["MIA"][2]} RD)\n'
f'NYM: {results["NYM"][0]} - {results["NYM"][1]} ({results["NYM"][2]} RD)\n'
f'PHI: {results["PHI"][0]} - {results["PHI"][1]} ({results["PHI"][2]} RD)\n'
f'WSN: {results["WSN"][0]} - {results["WSN"][1]} ({results["WSN"][2]} RD)\n',
)
embed.add_field(
name="NL Central",
value=f'CHC: {results["CHC"][0]} - {results["CHC"][1]} ({results["CHC"][2]} RD)\n'
f'CIN: {results["CIN"][0]} - {results["CIN"][1]} ({results["CIN"][2]} RD)\n'
f'MIL: {results["MIL"][0]} - {results["MIL"][1]} ({results["MIL"][2]} RD)\n'
f'PIT: {results["PIT"][0]} - {results["PIT"][1]} ({results["PIT"][2]} RD)\n'
f'STL: {results["STL"][0]} - {results["STL"][1]} ({results["STL"][2]} RD)\n',
)
embed.add_field(
name="NL West",
value=f'ARI: {results["ARI"][0]} - {results["ARI"][1]} ({results["ARI"][2]} RD)\n'
f'COL: {results["COL"][0]} - {results["COL"][1]} ({results["COL"][2]} RD)\n'
f'LAD: {results["LAD"][0]} - {results["LAD"][1]} ({results["LAD"][2]} RD)\n'
f'SDP: {results["SDP"][0]} - {results["SDP"][1]} ({results["SDP"][2]} RD)\n'
f'SFG: {results["SFG"][0]} - {results["SFG"][1]} ({results["SFG"][2]} RD)\n',
)
return embed