From 8f854a78e88cb9f0fe6052ba1ed6d20867f7743a Mon Sep 17 00:00:00 2001 From: XANTRONIX Industrial Date: Fri, 4 Apr 2025 12:09:18 -0400 Subject: [PATCH] Add guard clauses to prevent parsing incomplete data --- lib/xmet/raob.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/xmet/raob.py b/lib/xmet/raob.py index c1c8dc9..180e92d 100644 --- a/lib/xmet/raob.py +++ b/lib/xmet/raob.py @@ -370,6 +370,9 @@ class RAOBObs(): station = self.tokens[1] samples = list() + if self.tokens[2] == 'MISDA': + return None + sample = self.parse_ttaa_sample(self.tokens[2:5]) samples.append(sample) @@ -415,7 +418,7 @@ class RAOBObs(): 'dewpoint': None } - if len(tokens) > 1: + if len(tokens) > 1 and len(tokens[1]) == 5: td = self.parse_temp_dewpoint(tokens[1]) ret['temp'] = td.get('temp') ret['dewpoint'] = td.get('dewpoint') @@ -427,6 +430,12 @@ class RAOBObs(): station = self.tokens[1] samples = list() + if len(self.tokens) < 5: + return None + + if self.tokens[2] == 'MISDA': + return None + sample = self.parse_ttbb_sample(self.tokens[2:4]) samples.append(sample) @@ -481,6 +490,12 @@ class RAOBObs(): station = self.tokens[1] samples = list() + if len(self.tokens) < 7: + return None + + if self.tokens[2] == 'MISDA': + return None + for i in range(2, len(self.tokens), 4): data = self.parse_ppbb_samples(self.tokens[i:i+4])