@@ -274,38 +274,31 @@ def deserialize(self, event_factory: EventFactory) -> List[Event]:
274274
275275 Args:
276276 event_factory: The event factory to use to build the event.
277- periods: The periods in the match.
278- teams: The teams in the match.
279- events: All events in the match.
280- data_version: The x/y and shot fidelity versions of the data.
281277
282278 Returns:
283279 A list of kloppy events.
284280 """
285281 generic_event_kwargs = self ._parse_generic_kwargs ()
286- aerial_won_events = self ._create_aerial_won_event (
282+
283+ # create events
284+ base_events = self ._create_events (
287285 event_factory , ** generic_event_kwargs
288286 )
289- base_events = self ._create_events (
287+ aerial_won_events = self ._create_aerial_won_event (
290288 event_factory , ** generic_event_kwargs
291289 )
292290 ball_out_events = self ._create_ball_out_event (
293291 event_factory , ** generic_event_kwargs
294292 )
295- under_pressure_events = aerial_won_events + base_events
296- for event in under_pressure_events :
293+
294+ # add qualifiers
295+ for event in aerial_won_events + base_events :
297296 self ._add_under_pressure_qualifier (event )
298- events = under_pressure_events + ball_out_events
299- for event in events :
300- play_pattern_qualifiers = _get_play_pattern_qualifiers (
301- event .raw_event
302- )
303- if len (play_pattern_qualifiers ) > 0 :
304- event .qualifiers = (
305- event .qualifiers or []
306- ) + play_pattern_qualifiers
297+ for event in aerial_won_events + base_events + ball_out_events :
298+ self ._add_play_pattern_qualifiers (event )
307299
308- return events
300+ # return events (note: order is important)
301+ return aerial_won_events + base_events + ball_out_events
309302
310303 def _parse_generic_kwargs (self ) -> Dict :
311304 game_state_value = parse_obv_values (self .raw_event )
@@ -370,14 +363,22 @@ def _create_ball_out_event(
370363 return [ball_out_event ]
371364 return []
372365
366+ def _add_play_pattern_qualifiers (self , event : Event ) -> Event :
367+ if "play_pattern" in event .raw_event :
368+ pattern_id = PLAY_PATTERN (event .raw_event ["play_pattern" ]["id" ])
369+ if pattern_id == PLAY_PATTERN .FROM_COUNTER :
370+ q = CounterAttackQualifier (value = True )
371+ event .qualifiers = event .qualifiers or []
372+ event .qualifiers .append (q )
373+ return event
374+
373375 def _add_under_pressure_qualifier (self , event : Event ) -> Event :
374376 if ("under_pressure" in self .raw_event ) and (
375377 self .raw_event ["under_pressure" ]
376378 ):
377- if event .qualifiers :
378- event .qualifiers .append (UnderPressureQualifier (True ))
379- else :
380- event .qualifiers = [UnderPressureQualifier (True )]
379+ q = UnderPressureQualifier (True )
380+ event .qualifiers = event .qualifiers or []
381+ event .qualifiers .append (q )
381382
382383 return event
383384
@@ -1463,16 +1464,6 @@ def _get_set_piece_qualifiers(
14631464 return []
14641465
14651466
1466- def _get_play_pattern_qualifiers (
1467- event_dict : Dict ,
1468- ) -> List [CounterAttackQualifier ]:
1469- if "play_pattern" in event_dict :
1470- pattern_id = PLAY_PATTERN (event_dict ["play_pattern" ]["id" ])
1471- if pattern_id == PLAY_PATTERN .FROM_COUNTER :
1472- return [CounterAttackQualifier (value = True )]
1473- return []
1474-
1475-
14761467def event_decoder (raw_event : Dict ) -> Union [EVENT , Dict ]:
14771468 type_to_event = {
14781469 EVENT_TYPE .PASS : PASS ,
0 commit comments