Spaces:
Running
Running
File size: 3,142 Bytes
7b3d14f bb05a74 7b3d14f bb05a74 7b3d14f | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | 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()
|