from __future__ import annotations from dataclasses import dataclass from typing import Any, Optional, Literal # Erweitertes Literal mit allen erlaubten Aktionen (PruefAktion) PruefAktion = Literal[ "ok", "leer", "leereingabe_erlaubt", "leereingabe_nicht_erlaubt", "standarddatei_vorschlagen", "temporaer_erlaubt", "temporaer_erzeugen", "datei_nicht_gefunden", "kein_dateipfad", "pfad_nicht_gefunden", "url_nicht_erreichbar", "netzwerkfehler", "layer_nicht_gefunden", "layer_unsichtbar", "falscher_geotyp", "layer_leer", "falscher_layertyp", "falsches_crs", "felder_fehlen", "datenquelle_unerwartet", "layer_nicht_editierbar", "falsche_endung", # Excel / Import-spezifische Aktionen "kein_header", "kein_arbeitsblatt", "read_error", "open_error", # Generische Prüf-/Speicher-Aktionen "pruefe_exception", "save_exception", "save_not_implemented", "stil_not_implemented", "datei_unbekannt", "needs_user_action", ] @dataclass class pruef_ergebnis: """ Einheitliches Ergebnisobjekt für Prüfer. - ok: True wenn Prüfung bestanden - meldung: menschenlesbare Meldung - aktion: maschinenlesbarer Aktionscode (PruefAktion) - kontext: optionaler Zusatzkontext (z. B. Pfad, Layer-Objekt) """ ok: bool meldung: Optional[str] = None aktion: Optional[PruefAktion] = None kontext: Optional[Any] = None def __init__(self, ok: bool, meldung: Optional[str] = None, aktion: Optional[PruefAktion] = None, kontext: Optional[Any] = None): self.ok = ok self.meldung = meldung self.aktion = aktion self.kontext = kontext