From 071f9f9cdfc6a2f6bf845d896f1536bbcf8afb43 Mon Sep 17 00:00:00 2001 From: Cal Corum Date: Fri, 20 Mar 2026 18:01:48 -0500 Subject: [PATCH] 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 --- pitchers/creation.py | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/pitchers/creation.py b/pitchers/creation.py index 064627d..ad5d517 100644 --- a/pitchers/creation.py +++ b/pitchers/creation.py @@ -196,8 +196,8 @@ async def create_new_players( { "p_name": f"{f_name} {l_name}", "cost": NEW_PLAYER_COST, - "image": f'{card_base_url}/{df_data["player_id"]}/' - f'pitchingcard{urllib.parse.quote("?d=")}{release_dir}', + "image": f"{card_base_url}/{df_data['player_id']}/" + f"pitchingcard{urllib.parse.quote('?d=')}{release_dir}", "mlbclub": CLUB_LIST[df_data["Tm_vL"]], "franchise": FRANCHISE_LIST[df_data["Tm_vL"]], "cardset_id": cardset["id"], @@ -268,7 +268,7 @@ async def calculate_pitching_cards( def create_pitching_card(df_data): 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( 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"]) ), "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: - logger.error(f'Skipping fg ID {df_data["key_fangraphs"]} due to: {e}') + except Exception: + logger.exception( + f"Skipping fg ID {df_data['key_fangraphs']} due to exception" + ) print("Calculating pitching cards...") pitching_stats.apply(create_pitching_card, axis=1) @@ -333,7 +335,7 @@ async def create_position( def create_pit_position(df_data): 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( { "player_id": int(df_data["player_id"]), @@ -364,7 +366,7 @@ async def create_position( ) except Exception: 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...") @@ -386,7 +388,7 @@ async def calculate_pitcher_ratings(pitching_stats: pd.DataFrame, post_pitchers: pitching_ratings.extend(cpi.get_pitcher_ratings(df_data)) except Exception: 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...") @@ -525,8 +527,8 @@ async def post_player_updates( [ ( "image", - f'{card_base_url}/{df_data["player_id"]}/pitchingcard' - f'{urllib.parse.quote("?d=")}{release_dir}', + f"{card_base_url}/{df_data['player_id']}/pitchingcard" + f"{urllib.parse.quote('?d=')}{release_dir}", ) ] )