fix(wahlprogramme): HB-Bovenschulte-II-Datum + Helper-Semantik klarer

Zwei kleine Verbesserungen, die beim Schreiben der Drift-Tests in
bf5400a aufgefallen sind:

1. HB-Datum-Typo: regierungsbildung war 2023-07-04 (Tag der Konstituierung
   der 21. Bürgerschaft), korrekt ist 2023-07-05 (Vereidigung Senat
   Bovenschulte II). 5 Einträge angepasst (SPD/CDU/GRÜNE/LINKE/BIW).
   Kommentar im Header ebenfalls.

2. Helper-Docstrings (regierungsbildung_for, regierungsende_for,
   regierung_aktuell) explizit darüber, dass das Datum die ERSTE
   Regierung der WP ist, NICHT die aktuell amtierende. Wichtig bei
   Sukzessionen wie RP WP18 (Dreyer III 2021-05-18 → Schweitzer I
   2024-07-10) — die 2021er Wahlprogramme bleiben wirksam, auch nach
   MP-Wechsel. Für aktuell amtierende Regierung gibt es
   ``legislaturen.aktuelle_regierung``.

92/92 Programme-Tests grün.
This commit is contained in:
Dotty Dotter 2026-05-08 14:25:35 +02:00
parent bf5400ae33
commit d418fb0b4a

View File

@ -120,15 +120,15 @@ WAHLPROGRAMME: dict[str, dict[str, dict]] = {
"SPD": {"file": "spd-by-2023.pdf", "titel": "SPD Bayern Zukunftsprogramm 2023", "partei": "SPD Bayern", "jahr": 2023, "seiten": 100, "regierungsbildung": "2023-11-07", "regierungsende": None}, "SPD": {"file": "spd-by-2023.pdf", "titel": "SPD Bayern Zukunftsprogramm 2023", "partei": "SPD Bayern", "jahr": 2023, "seiten": 100, "regierungsbildung": "2023-11-07", "regierungsende": None},
"AfD": {"file": "afd-by-2023.pdf", "titel": "AfD Bayern Wahlprogramm 2023", "partei": "AfD Bayern", "jahr": 2023, "seiten": 100, "regierungsbildung": "2023-11-07", "regierungsende": None}, "AfD": {"file": "afd-by-2023.pdf", "titel": "AfD Bayern Wahlprogramm 2023", "partei": "AfD Bayern", "jahr": 2023, "seiten": 100, "regierungsbildung": "2023-11-07", "regierungsende": None},
}, },
# Bremen — Bürgerschaftswahl 14.05.2023. Senat Bovenschulte II (SPD+GRÜNE+LINKE) vereidigt 04.07.2023. # Bremen — Bürgerschaftswahl 14.05.2023. Senat Bovenschulte II (SPD+GRÜNE+LINKE) vereidigt 05.07.2023.
# AfD war wegen Listenstreit nicht zur Wahl zugelassen — stattdessen ist # AfD war wegen Listenstreit nicht zur Wahl zugelassen — stattdessen ist
# BIW (Bürger in Wut) als 6. Fraktion in der 21. Bürgerschaft. # BIW (Bürger in Wut) als 6. Fraktion in der 21. Bürgerschaft.
"HB": { "HB": {
"SPD": {"file": "spd-hb-2023.pdf", "titel": "SPD Bremen Wahlprogramm Bürgerschaftswahl 2023", "partei": "SPD Bremen", "jahr": 2023, "seiten": 100, "regierungsbildung": "2023-07-04", "regierungsende": None}, "SPD": {"file": "spd-hb-2023.pdf", "titel": "SPD Bremen Wahlprogramm Bürgerschaftswahl 2023", "partei": "SPD Bremen", "jahr": 2023, "seiten": 100, "regierungsbildung": "2023-07-05", "regierungsende": None},
"CDU": {"file": "cdu-hb-2023.pdf", "titel": "CDU Bremen Wahlprogramm Bürgerschaftswahl 2023", "partei": "CDU Bremen", "jahr": 2023, "seiten": 100, "regierungsbildung": "2023-07-04", "regierungsende": None}, "CDU": {"file": "cdu-hb-2023.pdf", "titel": "CDU Bremen Wahlprogramm Bürgerschaftswahl 2023", "partei": "CDU Bremen", "jahr": 2023, "seiten": 100, "regierungsbildung": "2023-07-05", "regierungsende": None},
"GRÜNE": {"file": "gruene-hb-2023.pdf","titel": "BÜNDNIS 90/DIE GRÜNEN Bremen Wahlprogramm 2023", "partei": "BÜNDNIS 90/DIE GRÜNEN Bremen", "jahr": 2023, "seiten": 100, "regierungsbildung": "2023-07-04", "regierungsende": None}, "GRÜNE": {"file": "gruene-hb-2023.pdf","titel": "BÜNDNIS 90/DIE GRÜNEN Bremen Wahlprogramm 2023", "partei": "BÜNDNIS 90/DIE GRÜNEN Bremen", "jahr": 2023, "seiten": 100, "regierungsbildung": "2023-07-05", "regierungsende": None},
"LINKE": {"file": "linke-hb-2023.pdf", "titel": "DIE LINKE Bremen Wahlprogramm Bürgerschaftswahl 2023", "partei": "DIE LINKE Bremen", "jahr": 2023, "seiten": 100, "regierungsbildung": "2023-07-04", "regierungsende": None}, "LINKE": {"file": "linke-hb-2023.pdf", "titel": "DIE LINKE Bremen Wahlprogramm Bürgerschaftswahl 2023", "partei": "DIE LINKE Bremen", "jahr": 2023, "seiten": 100, "regierungsbildung": "2023-07-05", "regierungsende": None},
"BIW": {"file": "biw-hb-2023.pdf", "titel": "BÜRGER IN WUT — Programm für die Bürgerschaftswahl 2023", "partei": "BIW Bremen", "jahr": 2023, "seiten": 26, "regierungsbildung": "2023-07-04", "regierungsende": None}, "BIW": {"file": "biw-hb-2023.pdf", "titel": "BÜRGER IN WUT — Programm für die Bürgerschaftswahl 2023", "partei": "BIW Bremen", "jahr": 2023, "seiten": 26, "regierungsbildung": "2023-07-05", "regierungsende": None},
}, },
# Hessen — LTW 08.10.2023. Kabinett Rhein II (CDU+SPD) vereidigt 18.01.2024. # Hessen — LTW 08.10.2023. Kabinett Rhein II (CDU+SPD) vereidigt 18.01.2024.
"HE": { "HE": {
@ -197,8 +197,16 @@ def parteien_mit_wahlprogramm(bundesland: str) -> list[str]:
def regierungsbildung_for(bundesland: str) -> Optional[str]: def regierungsbildung_for(bundesland: str) -> Optional[str]:
"""Datum der Regierungsbildung (Vereidigung) der aktuellen Regierung des """Datum der Regierungsbildung (Vereidigung) der Regierung, die nach der
Bundeslands, oder ``None`` wenn nicht hinterlegt.""" aktuellen Wahl aus diesem Programm hervorging.
Achtung: NICHT die Vereidigung der gerade amtierenden Regierung bei
Sukzessionen innerhalb derselben WP (z.B. RP Dreyer III Schweitzer I
in WP18) bleibt das Datum bei der ersten Regierung der WP. Die
Wahlprogramme bleiben zur Wahl wirksam, auch wenn die MP-Person später
wechselt. Für die "aktuell amtierende" Regierung siehe
``legislaturen.aktuelle_regierung``.
"""
parteien = WAHLPROGRAMME.get(bundesland, {}) parteien = WAHLPROGRAMME.get(bundesland, {})
for info in parteien.values(): for info in parteien.values():
rb = info.get("regierungsbildung") rb = info.get("regierungsbildung")
@ -208,8 +216,9 @@ def regierungsbildung_for(bundesland: str) -> Optional[str]:
def regierungsende_for(bundesland: str) -> Optional[str]: def regierungsende_for(bundesland: str) -> Optional[str]:
"""Datum, ab dem die aktuelle Regierungsperiode endet. ``None`` solange """Datum, ab dem die aus dieser Wahl hervorgegangene Regierungsperiode
laufend.""" endet. ``None`` solange laufend (auch nach Sukzession in derselben WP).
"""
parteien = WAHLPROGRAMME.get(bundesland, {}) parteien = WAHLPROGRAMME.get(bundesland, {})
for info in parteien.values(): for info in parteien.values():
return info.get("regierungsende") return info.get("regierungsende")
@ -217,8 +226,8 @@ def regierungsende_for(bundesland: str) -> Optional[str]:
def regierung_aktuell(bundesland: str) -> bool: def regierung_aktuell(bundesland: str) -> bool:
"""True, wenn die hinterlegte Regierungsperiode noch läuft (bildung """True, wenn die aus dieser Wahl hervorgegangene Regierungsperiode noch
gesetzt, ende=None).""" läuft (bildung gesetzt, ende=None)."""
parteien = WAHLPROGRAMME.get(bundesland, {}) parteien = WAHLPROGRAMME.get(bundesland, {})
if not parteien: if not parteien:
return False return False