fix: use logger.exception() in calculate_pitcher_ratings error handler

Replaces logger.error() with logger.exception() so the full stack trace
is captured when a pitcher card fails to generate, making it possible to
diagnose the root cause rather than just seeing the error message.

Closes #17

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Cal Corum 2026-03-20 18:01:48 -05:00
parent f1ca14791d
commit 071f9f9cdf

View File

@ -196,8 +196,8 @@ async def create_new_players(
{ {
"p_name": f"{f_name} {l_name}", "p_name": f"{f_name} {l_name}",
"cost": NEW_PLAYER_COST, "cost": NEW_PLAYER_COST,
"image": f'{card_base_url}/{df_data["player_id"]}/' "image": f"{card_base_url}/{df_data['player_id']}/"
f'pitchingcard{urllib.parse.quote("?d=")}{release_dir}', f"pitchingcard{urllib.parse.quote('?d=')}{release_dir}",
"mlbclub": CLUB_LIST[df_data["Tm_vL"]], "mlbclub": CLUB_LIST[df_data["Tm_vL"]],
"franchise": FRANCHISE_LIST[df_data["Tm_vL"]], "franchise": FRANCHISE_LIST[df_data["Tm_vL"]],
"cardset_id": cardset["id"], "cardset_id": cardset["id"],
@ -268,7 +268,7 @@ async def calculate_pitching_cards(
def create_pitching_card(df_data): def create_pitching_card(df_data):
logger.info( logger.info(
f'Creating pitching card for {df_data["name_first"]} {df_data["name_last"]} / fg ID: {df_data["key_fangraphs"]}' f"Creating pitching card for {df_data['name_first']} {df_data['name_last']} / fg ID: {df_data['key_fangraphs']}"
) )
pow_data = cde.pow_ratings( pow_data = cde.pow_ratings(
float(df_data["Inn_def"]), df_data["GS"], df_data["G"] float(df_data["Inn_def"]), df_data["GS"], df_data["G"]
@ -298,11 +298,13 @@ async def calculate_pitching_cards(
int(df_data["GF"]), int(df_data["SV"]), int(df_data["G"]) int(df_data["GF"]), int(df_data["SV"]), int(df_data["G"])
), ),
"hand": df_data["pitch_hand"], "hand": df_data["pitch_hand"],
"batting": f'#1W{df_data["pitch_hand"]}-C', "batting": f"#1W{df_data['pitch_hand']}-C",
} }
) )
except Exception as e: except Exception:
logger.error(f'Skipping fg ID {df_data["key_fangraphs"]} due to: {e}') logger.exception(
f"Skipping fg ID {df_data['key_fangraphs']} due to exception"
)
print("Calculating pitching cards...") print("Calculating pitching cards...")
pitching_stats.apply(create_pitching_card, axis=1) pitching_stats.apply(create_pitching_card, axis=1)
@ -333,7 +335,7 @@ async def create_position(
def create_pit_position(df_data): def create_pit_position(df_data):
if df_data["key_bbref"] in df_p.index: if df_data["key_bbref"] in df_p.index:
logger.debug(f'Running P stats for {df_data["p_name"]}') logger.debug(f"Running P stats for {df_data['p_name']}")
pit_positions.append( pit_positions.append(
{ {
"player_id": int(df_data["player_id"]), "player_id": int(df_data["player_id"]),
@ -364,7 +366,7 @@ async def create_position(
) )
except Exception: except Exception:
logger.error( logger.error(
f'Could not create pitcher position for {df_data["key_bbref"]}' f"Could not create pitcher position for {df_data['key_bbref']}"
) )
print("Calculating pitcher fielding lines now...") print("Calculating pitcher fielding lines now...")
@ -386,7 +388,7 @@ async def calculate_pitcher_ratings(pitching_stats: pd.DataFrame, post_pitchers:
pitching_ratings.extend(cpi.get_pitcher_ratings(df_data)) pitching_ratings.extend(cpi.get_pitcher_ratings(df_data))
except Exception: except Exception:
logger.error( logger.error(
f'Could not create a pitching card for {df_data["key_fangraphs"]}' f"Could not create a pitching card for {df_data['key_fangraphs']}"
) )
print("Calculating card ratings...") print("Calculating card ratings...")
@ -525,8 +527,8 @@ async def post_player_updates(
[ [
( (
"image", "image",
f'{card_base_url}/{df_data["player_id"]}/pitchingcard' f"{card_base_url}/{df_data['player_id']}/pitchingcard"
f'{urllib.parse.quote("?d=")}{release_dir}', f"{urllib.parse.quote('?d=')}{release_dir}",
) )
] ]
) )