From 0a2e7bb2ef06c7771ce5d286a8c2f1a280a298fe Mon Sep 17 00:00:00 2001 From: mistangl Date: Thu, 29 Jan 2026 16:41:06 +0100 Subject: [PATCH] Error Collector speichert jetzt listen und dictionaries --- lib/error_collector.py | 56 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 48 insertions(+), 8 deletions(-) diff --git a/lib/error_collector.py b/lib/error_collector.py index f7e9473..3278329 100644 --- a/lib/error_collector.py +++ b/lib/error_collector.py @@ -20,23 +20,63 @@ class ErrorCollector: """Fügt Fehler aus einem Dictionary hinzu.""" for key, value in error_dict.items(): if key in self.errors: - if isinstance(self.errors[key], list) and isinstance(value, list): - self.errors[key].extend(value) + # Key existiert bereits - Verhalten hängt vom Typ ab + existing = self.errors[key] + + if isinstance(existing, dict) and isinstance(value, dict): + # Beide sind Dictionaries → Merge/Update + existing.update(value) + elif isinstance(existing, list): + # Existierender Wert ist Liste + if isinstance(value, list): + existing.extend(value) + else: + existing.append(value) else: - self.errors[key] = [self.errors[key], value] + # Existierender Wert ist weder dict noch list → Mache Liste daraus + if isinstance(value, list): + self.errors[key] = [existing] + value + else: + self.errors[key] = [existing, value] else: - self.errors[key] = value + # Neuer Key - behalte Typ des Wertes + if isinstance(value, (dict, list)): + # Dictionary oder Liste → direkt speichern + self.errors[key] = value + else: + # Primitiver Wert (String, etc.) → als Liste speichern + self.errors[key] = [value] def add_warnings(self, warning_dict): """Fügt Warnungen aus einem Dictionary hinzu.""" for key, value in warning_dict.items(): if key in self.warnings: - if isinstance(self.warnings[key], list) and isinstance(value, list): - self.warnings[key].extend(value) + # Key existiert bereits - Verhalten hängt vom Typ ab + existing = self.warnings[key] + + if isinstance(existing, dict) and isinstance(value, dict): + # Beide sind Dictionaries → Merge/Update + existing.update(value) + elif isinstance(existing, list): + # Existierender Wert ist Liste + if isinstance(value, list): + existing.extend(value) + else: + existing.append(value) else: - self.warnings[key] = [self.warnings[key], value] + # Existierender Wert ist weder dict noch list → Mache Liste daraus + if isinstance(value, list): + self.warnings[key] = [existing] + value + else: + self.warnings[key] = [existing, value] else: - self.warnings[key] = value + # Neuer Key - behalte Typ des Wertes + if isinstance(value, (dict, list)): + # Dictionary oder Liste → direkt speichern + self.warnings[key] = value + else: + # Primitiver Wert (String, etc.) → als Liste speichern + self.warnings[key] = [value] def has_errors_or_warnings(self): """Prüft ob Fehler oder Warnungen vorhanden sind."""