Spaces:
Sleeping
Sleeping
| def build_possession_sequences(events, event_to_tokens): | |
| sequences = [] | |
| current_sequence = [] | |
| current_key = None # (possession_id, team_id) | |
| for ev in events: | |
| # --- extract possession info --- | |
| possession_id = ev.get("possession") | |
| team_id = ev.get("possession_team", {}).get("id") | |
| # skip if missing (rare but safe) | |
| if possession_id is None or team_id is None: | |
| continue | |
| key = (possession_id, team_id) | |
| # --- new possession starts --- | |
| if key != current_key: | |
| if current_sequence: | |
| sequences.append(current_sequence) | |
| current_sequence = [] | |
| current_key = key | |
| # --- tokenize event --- | |
| tokens = event_to_tokens(ev) | |
| player_id = ev.get("player", {}).get("id") | |
| if tokens and player_id is not None: | |
| current_sequence.append({ | |
| "player_id": player_id, | |
| "tokens": tokens | |
| }) | |
| # --- last sequence --- | |
| if current_sequence: | |
| sequences.append(current_sequence) | |
| return sequences |