From a05ab1d14a9d05136a6cb1c1b3678d6db2d72055 Mon Sep 17 00:00:00 2001
From: David McKenna <mckenna@astron.nl>
Date: Tue, 10 Jun 2025 13:34:50 +0200
Subject: [PATCH] FIX: Pass on invalid station configurations instead of
 exiting.

---
 l2json/parsers/parse_json.py | 2 +-
 l2json/sources/generators.py | 7 +++++--
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/l2json/parsers/parse_json.py b/l2json/parsers/parse_json.py
index 114b967..474b84e 100644
--- a/l2json/parsers/parse_json.py
+++ b/l2json/parsers/parse_json.py
@@ -103,7 +103,7 @@ def get_last_valid_device_value(
         value = get_value_from_metadata(metadata, antennafield, output_key, device_mapping)
         if value is not None:
             return value
-    raise KeyError(f"No value found for {output_key=} in provided metadata dicts.")
+    print(f"No value found for {output_key=} in provided metadata dicts.")
 
 
 # def get_static_metadata(filtered_metadata: list[dict[str, Any]], antennafield: str, keys: set[str]) -> dict[str, str]:
diff --git a/l2json/sources/generators.py b/l2json/sources/generators.py
index 278a88a..d580bad 100644
--- a/l2json/sources/generators.py
+++ b/l2json/sources/generators.py
@@ -106,6 +106,9 @@ def yield_l2obs_from_params(
                 continue
 
             # filtered_metadata, filtered_data = metadata, data
-            l2obs = parse_json.build_lofar2_observation(filtered_metadata, filtered_data)
+            try:
+                l2obs = parse_json.build_lofar2_observation(filtered_metadata, filtered_data)
 
-            yield (station, field, datatype, obs_id), l2obs
+                yield (station, field, datatype, obs_id), l2obs
+            except Exception as e:
+                print(f"Skipping {obs_id=} for {station}{field} due to {e=}")
-- 
GitLab