gwoe-antragspruefer/app/wahlprogramm_check.py

38 lines
1.3 KiB
Python
Raw Permalink Normal View History

"""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]