"""Erkennung fehlender Wahlprogramme (#128). Prüft für ein gegebenes Bundesland, welche der im Landtag vertretenen Fraktionen in der WAHLPROGRAMME-Registry nicht hinterlegt sind. Wird nach dem LLM-Call in analyze_antrag() aufgerufen, damit das Assessment-Ergebnis die Lücken explizit ausweist. """ from .bundeslaender import BUNDESLAENDER from .wahlprogramme import WAHLPROGRAMME def check_missing_programmes(bundesland: str, fraktionen: list[str]) -> list[str]: """Gibt eine Liste der Fraktions-Namen zurück, für die kein Wahlprogramm im gegebenen Bundesland hinterlegt ist. Args: bundesland: Bundesland-Code (z.B. "NRW", "BY"). fraktionen: Liste der Fraktionen, die geprüft werden sollen (typischerweise aus BUNDESLAENDER[bl].landtagsfraktionen). Returns: Geordnete Liste der Fraktions-Namen ohne hinterlegtes Wahlprogramm. Leere Liste, wenn für alle Fraktionen Programme vorliegen oder fraktionen leer ist. Raises: ValueError: Wenn das Bundesland nicht in BUNDESLAENDER bekannt ist. """ if bundesland not in BUNDESLAENDER: raise ValueError(f"Unbekanntes Bundesland: {bundesland!r}") if not fraktionen: return [] indexed = WAHLPROGRAMME.get(bundesland, {}) return [f for f in fraktionen if f not in indexed]