File size: 2,202 Bytes
6c65498
 
 
90c84a5
 
46f8ebc
 
 
 
fbeda03
46f8ebc
90c84a5
46f8ebc
 
fbeda03
90c84a5
 
fbeda03
90c84a5
fbeda03
46f8ebc
 
6c65498
 
46f8ebc
fbeda03
 
 
 
46f8ebc
 
 
fbeda03
46f8ebc
fbeda03
 
 
46f8ebc
251faa9
46f8ebc
fbeda03
251faa9
8abcfef
46f8ebc
 
6c65498
 
 
fbeda03
 
 
6c65498
251faa9
46f8ebc
fbeda03
46f8ebc
fbeda03
 
 
 
 
46f8ebc
6c65498
46f8ebc
 
 
 
fbeda03
251faa9
 
8abcfef
 
6c65498
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
"""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",
]