"""Tracking modules for cross-frame state management. This package contains components that track state across multiple frames to identify play boundaries and other temporal events. Architecture (v2 - Restructured): - PlayTracker: Parent coordinator that manages sub-trackers - NormalPlayTracker: Handles standard plays (clock reset to 40, countdown) - SpecialPlayTracker: Handles 40→25 transitions (timeouts, punts, FGs, XPs) - FlagTracker: Independently tracks FLAG (penalty) events Public API: - TrackPlayState: Main state machine for play tracking (facade, backward compatible) - PlayTracker: New parent tracker class (can be used directly) - FlagTracker: Independent FLAG event tracker - PlayMerger: Merges overlapping plays - ClockResetIdentifier: Post-hoc analysis of 40→25 clock resets - Models: PlayEvent, PlayState, TrackerMode, determine_timeout_team, etc. Internal modules: - normal_play_tracker: Normal play handling logic - special_play_tracker: Special play (40→25) handling logic """ from .models import ( ClockResetStats, determine_timeout_team, FlagInfo, NormalTrackerState, PlayEvent, PlayState, SpecialPlayHandoff, SpecialPlayPhase, SpecialTrackerState, TimeoutInfo, TrackerMode, TrackPlayStateConfig, ) from .play_state import TrackPlayState from .play_tracker import PlayTracker from .flag_tracker import FlagTracker from .play_merger import PlayMerger from .clock_reset_identifier import ClockResetIdentifier from .normal_play_tracker import NormalPlayTracker from .special_play_tracker import SpecialPlayTracker __all__ = [ # Models "ClockResetStats", "FlagInfo", "NormalTrackerState", "PlayEvent", "PlayState", "SpecialPlayHandoff", "SpecialPlayPhase", "SpecialTrackerState", "TimeoutInfo", "TrackerMode", "TrackPlayStateConfig", # Utility functions "determine_timeout_team", # State machine (backward compatible facade) "TrackPlayState", # New tracker architecture "PlayTracker", "NormalPlayTracker", "SpecialPlayTracker", "FlagTracker", # Merger "PlayMerger", # Clock reset identification "ClockResetIdentifier", ]