From 1055fd2ef5c57b0a3c55456973eacd410d942dfa Mon Sep 17 00:00:00 2001 From: "UnravelSports [JB]" Date: Thu, 23 Jan 2025 12:42:12 +0100 Subject: [PATCH 1/5] weird behaviour fix? --- kloppy/domain/models/event.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/kloppy/domain/models/event.py b/kloppy/domain/models/event.py index 6e60fb83a..6cbff6624 100644 --- a/kloppy/domain/models/event.py +++ b/kloppy/domain/models/event.py @@ -1079,10 +1079,14 @@ def _update_formations_and_positions(self): replacement_player_position = event.player.positions.last( default=PositionType.Unknown ) - event.replacement_player.set_position( - event.time, - replacement_player_position, - ) + if ( + event.replacement_player.positions.last(default=None) + is None + ): + event.replacement_player.set_position( + event.time, + replacement_player_position, + ) event.player.set_position(event.time, None) elif isinstance(event, FormationChangeEvent): From 7efa761e85575638d27e61d33999246341e4f089 Mon Sep 17 00:00:00 2001 From: "UnravelSports [JB]" Date: Wed, 23 Apr 2025 12:11:12 +0200 Subject: [PATCH 2/5] ignore None players --- kloppy/infra/serializers/event/statsperform/deserializer.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/kloppy/infra/serializers/event/statsperform/deserializer.py b/kloppy/infra/serializers/event/statsperform/deserializer.py index 47d6b4a0f..8efafd901 100644 --- a/kloppy/infra/serializers/event/statsperform/deserializer.py +++ b/kloppy/infra/serializers/event/statsperform/deserializer.py @@ -351,6 +351,9 @@ def _parse_formation_change(raw_event: OptaEvent, team: Team) -> Dict: player_positions = {} for player_id, position_id in zip(player_ids, position_ids): player = team.get_player_by_id(player_id) + if player is None: + continue + position = positions_mapping[int(position_id)] player_positions[player] = position From f7f1c1ef288f61634090f10a0562ebecdfd5a7bc Mon Sep 17 00:00:00 2001 From: "UnravelSports [JB]" Date: Wed, 23 Apr 2025 12:23:27 +0200 Subject: [PATCH 3/5] added formation change to f24 test with player_id '1' that should be skipped now --- kloppy/tests/files/opta_f24.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/kloppy/tests/files/opta_f24.xml b/kloppy/tests/files/opta_f24.xml index 47c46c0b4..8ce15c06c 100644 --- a/kloppy/tests/files/opta_f24.xml +++ b/kloppy/tests/files/opta_f24.xml @@ -332,6 +332,14 @@ + + + + + + + + From dd7cc68047db1d2c2e4018569b520a09c06cd292 Mon Sep 17 00:00:00 2001 From: "UnravelSports [JB]" Date: Wed, 23 Apr 2025 12:42:35 +0200 Subject: [PATCH 4/5] added duplicate sub event to f24 test file --- kloppy/tests/files/opta_f24.xml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/kloppy/tests/files/opta_f24.xml b/kloppy/tests/files/opta_f24.xml index 8ce15c06c..53270b19b 100644 --- a/kloppy/tests/files/opta_f24.xml +++ b/kloppy/tests/files/opta_f24.xml @@ -114,6 +114,21 @@ + + + + + + + + + + + + + + + From f12ea7143928ee9bdd82c12300e3b6b07b6c6c7a Mon Sep 17 00:00:00 2001 From: "UnravelSports [JB]" Date: Wed, 23 Apr 2025 12:48:15 +0200 Subject: [PATCH 5/5] adapter test --- kloppy/tests/test_adapter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kloppy/tests/test_adapter.py b/kloppy/tests/test_adapter.py index 6b9dd997c..571eb0af5 100644 --- a/kloppy/tests/test_adapter.py +++ b/kloppy/tests/test_adapter.py @@ -67,4 +67,4 @@ def list_directory( # Asserts borrowed from `test_opta.py` assert dataset.metadata.provider == Provider.OPTA assert dataset.dataset_type == DatasetType.EVENT - assert len(dataset.events) == 39 + assert len(dataset.events) == 41