Spaces:
Running
Running
| from __future__ import annotations | |
| import os | |
| import sys | |
| import unittest | |
| import pandas as pd | |
| sys.path.insert(0, os.path.dirname(os.path.dirname(__file__))) | |
| from data.shared_baseline import _blend_entity_frames, _normalize_name | |
| class TestSharedBaseline(unittest.TestCase): | |
| def test_normalize_name_matches_first_last_and_last_first(self) -> None: | |
| self.assertEqual(_normalize_name("Eduardo Rodriguez"), _normalize_name("Rodriguez, Eduardo")) | |
| def test_blend_entity_frames_prefers_prior_when_current_sample_is_small(self) -> None: | |
| prior_df = pd.DataFrame( | |
| [ | |
| {"player_name": "Slugger Sam", "game_date": "2025-09-01", "source_season": 2025, "event_key": "p1"}, | |
| {"player_name": "Slugger Sam", "game_date": "2025-08-01", "source_season": 2025, "event_key": "p2"}, | |
| {"player_name": "Slugger Sam", "game_date": "2024-09-01", "source_season": 2024, "event_key": "p3"}, | |
| {"player_name": "Slugger Sam", "game_date": "2024-08-01", "source_season": 2024, "event_key": "p4"}, | |
| {"player_name": "Slugger Sam", "game_date": "2023-09-01", "source_season": 2023, "event_key": "p5"}, | |
| ] | |
| ) | |
| season_df = pd.DataFrame( | |
| [ | |
| {"player_name": "Slugger Sam", "game_date": "2026-03-20", "source_season": 2026, "event_key": "c1"}, | |
| ] | |
| ) | |
| prior_df["game_date"] = pd.to_datetime(prior_df["game_date"]) | |
| season_df["game_date"] = pd.to_datetime(season_df["game_date"]) | |
| blended_df, meta_df = _blend_entity_frames( | |
| prior_df=prior_df, | |
| season_df=season_df, | |
| blend_k=260.0, | |
| role_label="batter", | |
| ) | |
| self.assertFalse(blended_df.empty) | |
| self.assertEqual(len(meta_df), 1) | |
| meta = meta_df.iloc[0] | |
| self.assertEqual(meta["baseline_mode"], "blended") | |
| self.assertGreater(float(meta["prior_weight"]), float(meta["season_2026_weight"])) | |
| self.assertEqual(meta["baseline_driver"], "prior_led") | |
| self.assertTrue(bool(meta["rolling_overlay_active"])) | |
| def test_blend_entity_frames_uses_current_only_when_no_prior_exists(self) -> None: | |
| season_df = pd.DataFrame( | |
| [ | |
| {"player_name": "Ace Pitcher", "game_date": "2026-03-20", "source_season": 2026, "event_key": "c1"}, | |
| {"player_name": "Ace Pitcher", "game_date": "2026-03-18", "source_season": 2026, "event_key": "c2"}, | |
| ] | |
| ) | |
| season_df["game_date"] = pd.to_datetime(season_df["game_date"]) | |
| blended_df, meta_df = _blend_entity_frames( | |
| prior_df=pd.DataFrame(columns=season_df.columns), | |
| season_df=season_df, | |
| blend_k=320.0, | |
| role_label="pitcher", | |
| ) | |
| self.assertEqual(len(blended_df), 2) | |
| meta = meta_df.iloc[0] | |
| self.assertEqual(meta["baseline_mode"], "current_only") | |
| self.assertAlmostEqual(float(meta["season_2026_weight"]), 1.0, places=6) | |
| self.assertEqual(meta["baseline_driver"], "current_season_led") | |
| if __name__ == "__main__": | |
| unittest.main() | |