Neue Module: - app/programme.py: zentrale Programm-Registry (alle Wahl- und Grundsatz- programme in einem Index), mit Geltungsdaten gueltig_ab/gueltig_bis und Helpern wahlprogramm_zum_zeitpunkt(), grundsatzprogramm_zum_zeitpunkt(), alle_versionen(). Skelett fuer 6 zusaetzliche Eintraege (CSU 2023, CDU NRW 2015, CDU SN 2023, CDU LSA 2023, SSW SH 2016, FREIE WAEHLER) vorbereitet — PDFs folgen. - app/legislaturen.py: 56 Legislaturen + 70 Regierungen fuer 16 BL + Bund. Helper legislatur_zum_zeitpunkt(), regierung_zum_zeitpunkt(), regierungen_einer_wp() fuer historisch korrekte Antrags-Bewertung (z.B. Kemmerich-28-Tage-Kabinett, RP-Uebergang Dreyer III -> Schweitzer I, BUND Scholz-Ampel -> geschaeftsfuehrend -> Merz I). - tests/test_legislaturen.py: 20 Tests zu Konsistenz + Historie. Datenbasis: 8 BTW-2025-Wahlprogramme (CDU, CSU, SPD, GRUENE, FDP, AfD, LINKE, BSW) als PDFs hinzugefuegt. SHA-256-Pinning in app/wahlprogramm-shas.lock.json (separat). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
314 lines
30 KiB
Python
314 lines
30 KiB
Python
"""Wahlperioden + Regierungen pro Bundesland — historisch + aktuell.
|
|
|
|
Diese Datei beantwortet zwei Fragen pro Bundesland:
|
|
|
|
1. **Welche Legislatur lief zum Zeitpunkt X?** (``legislatur_zum_zeitpunkt``)
|
|
2. **Welche Regierung war zum Zeitpunkt X im Amt?** (``regierung_zum_zeitpunkt``)
|
|
|
|
Die Strukturen sind ergänzend zu ``app/programme.py``: Programme verweisen
|
|
über ``wp`` (Legislatur-Nummer) bzw. ``gueltig_ab`` (= Vereidigung der
|
|
Regierung) auf die hier gelisteten Einträge.
|
|
|
|
Sonderfälle, die das Schema unterstützt:
|
|
- Mehrere Regierungen in einer Legislatur (z.B. RP: Dreyer III → Schweitzer I)
|
|
- Vorgezogene Wahlen / verkürzte Legislaturen (z.B. NRW WP15 2010-2012)
|
|
- BUND als 17. Eintrag (technisch kein BL, aber Schema-konform)
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
from typing import Optional, TypedDict
|
|
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
# Typ
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
|
|
class Legislatur(TypedDict, total=False):
|
|
"""Eine Wahlperiode eines deutschen Parlaments."""
|
|
bundesland: str # BL-Code (NRW, BUND, …)
|
|
wp: int # Wahlperioden-Nummer
|
|
wahltermin: str # ISO YYYY-MM-DD
|
|
konstituierung: str # ISO YYYY-MM-DD (= Beginn der WP)
|
|
ende: Optional[str] # ISO oder None bei aktueller WP
|
|
|
|
|
|
class Regierung(TypedDict, total=False):
|
|
"""Eine Landes- oder Bundesregierung (Kabinett).
|
|
|
|
Eine Legislatur kann mehrere Regierungen enthalten (z.B. wenn mitten in
|
|
der WP der/die Ministerpräsident:in zurücktritt). Bei diesen wird ``bis``
|
|
der Vorgängerin = ``von`` der Nachfolgerin gesetzt.
|
|
"""
|
|
bundesland: str
|
|
name: str # "Wüst II", "Schweitzer I", "Merz I", …
|
|
wp: int # Legislatur-Nummer
|
|
parteien: list[str] # Koalitionspartner (sortiert nach Größe)
|
|
ministerpraesident: str # MP / Bundeskanzler:in
|
|
von: str # ISO — Vereidigung
|
|
bis: Optional[str] # ISO — Vereidigung der Nachfolge oder Ende der WP
|
|
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
# Daten-Container
|
|
# Werden vom Daten-Modul ``legislaturen_data.py`` befüllt sobald die
|
|
# Recherche fertig ist. Hier bleiben sie initial leer und werden später
|
|
# importiert / erweitert.
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
|
|
LEGISLATUREN: list[Legislatur] = [
|
|
# ─── Baden-Württemberg ───────────────────────────────────────────────
|
|
{"bundesland": "BW", "wp": 15, "wahltermin": "2011-03-27", "konstituierung": "2011-05-11", "ende": "2016-05-11"},
|
|
{"bundesland": "BW", "wp": 16, "wahltermin": "2016-03-13", "konstituierung": "2016-05-11", "ende": "2021-05-11"},
|
|
{"bundesland": "BW", "wp": 17, "wahltermin": "2021-03-14", "konstituierung": "2021-05-11", "ende": None},
|
|
# ─── Bayern ──────────────────────────────────────────────────────────
|
|
{"bundesland": "BY", "wp": 17, "wahltermin": "2013-09-15", "konstituierung": "2013-10-07", "ende": "2018-11-05"},
|
|
{"bundesland": "BY", "wp": 18, "wahltermin": "2018-10-14", "konstituierung": "2018-11-05", "ende": "2023-10-30"},
|
|
{"bundesland": "BY", "wp": 19, "wahltermin": "2023-10-08", "konstituierung": "2023-10-30", "ende": None},
|
|
# ─── Berlin ──────────────────────────────────────────────────────────
|
|
{"bundesland": "BE", "wp": 17, "wahltermin": "2011-09-18", "konstituierung": "2011-10-27", "ende": "2016-10-27"},
|
|
{"bundesland": "BE", "wp": 18, "wahltermin": "2016-09-18", "konstituierung": "2016-10-27", "ende": "2021-11-04"},
|
|
# WP19: Originalwahl 2021-09-26; Wiederholung 2023-02-12 (BVerfG). Formal weiter WP19.
|
|
{"bundesland": "BE", "wp": 19, "wahltermin": "2021-09-26", "konstituierung": "2021-11-04", "ende": None},
|
|
# ─── Brandenburg ─────────────────────────────────────────────────────
|
|
{"bundesland": "BB", "wp": 6, "wahltermin": "2014-09-14", "konstituierung": "2014-10-21", "ende": "2019-09-25"},
|
|
{"bundesland": "BB", "wp": 7, "wahltermin": "2019-09-01", "konstituierung": "2019-09-25", "ende": "2024-10-23"},
|
|
{"bundesland": "BB", "wp": 8, "wahltermin": "2024-09-22", "konstituierung": "2024-10-23", "ende": None},
|
|
# ─── Bremen ──────────────────────────────────────────────────────────
|
|
{"bundesland": "HB", "wp": 18, "wahltermin": "2011-05-22", "konstituierung": "2011-06-07", "ende": "2015-06-15"},
|
|
{"bundesland": "HB", "wp": 19, "wahltermin": "2015-05-10", "konstituierung": "2015-06-15", "ende": "2019-07-04"},
|
|
{"bundesland": "HB", "wp": 20, "wahltermin": "2019-05-26", "konstituierung": "2019-07-04", "ende": "2023-07-04"},
|
|
{"bundesland": "HB", "wp": 21, "wahltermin": "2023-05-14", "konstituierung": "2023-07-04", "ende": None},
|
|
# ─── Hamburg ─────────────────────────────────────────────────────────
|
|
{"bundesland": "HH", "wp": 21, "wahltermin": "2015-02-15", "konstituierung": "2015-03-18", "ende": "2020-03-18"},
|
|
{"bundesland": "HH", "wp": 22, "wahltermin": "2020-02-23", "konstituierung": "2020-03-18", "ende": "2025-03-19"},
|
|
{"bundesland": "HH", "wp": 23, "wahltermin": "2025-03-02", "konstituierung": "2025-03-19", "ende": None},
|
|
# ─── Hessen ──────────────────────────────────────────────────────────
|
|
{"bundesland": "HE", "wp": 19, "wahltermin": "2013-09-22", "konstituierung": "2014-01-18", "ende": "2019-01-18"},
|
|
{"bundesland": "HE", "wp": 20, "wahltermin": "2018-10-28", "konstituierung": "2019-01-18", "ende": "2024-01-18"},
|
|
{"bundesland": "HE", "wp": 21, "wahltermin": "2023-10-08", "konstituierung": "2024-01-18", "ende": None},
|
|
# ─── Mecklenburg-Vorpommern ──────────────────────────────────────────
|
|
{"bundesland": "MV", "wp": 6, "wahltermin": "2011-09-04", "konstituierung": "2011-10-04", "ende": "2016-10-04"},
|
|
{"bundesland": "MV", "wp": 7, "wahltermin": "2016-09-04", "konstituierung": "2016-10-04", "ende": "2021-10-26"},
|
|
{"bundesland": "MV", "wp": 8, "wahltermin": "2021-09-26", "konstituierung": "2021-10-26", "ende": None},
|
|
# ─── Niedersachsen ───────────────────────────────────────────────────
|
|
{"bundesland": "NI", "wp": 17, "wahltermin": "2013-01-20", "konstituierung": "2013-02-19", "ende": "2017-11-14"},
|
|
{"bundesland": "NI", "wp": 18, "wahltermin": "2017-10-15", "konstituierung": "2017-11-14", "ende": "2022-11-08"},
|
|
{"bundesland": "NI", "wp": 19, "wahltermin": "2022-10-09", "konstituierung": "2022-11-08", "ende": None},
|
|
# ─── Nordrhein-Westfalen ─────────────────────────────────────────────
|
|
{"bundesland": "NRW", "wp": 15, "wahltermin": "2010-05-09", "konstituierung": "2010-06-09", "ende": "2012-06-12"},
|
|
{"bundesland": "NRW", "wp": 16, "wahltermin": "2012-05-13", "konstituierung": "2012-06-12", "ende": "2017-06-01"},
|
|
{"bundesland": "NRW", "wp": 17, "wahltermin": "2017-05-14", "konstituierung": "2017-06-01", "ende": "2022-06-01"},
|
|
{"bundesland": "NRW", "wp": 18, "wahltermin": "2022-05-15", "konstituierung": "2022-06-01", "ende": None},
|
|
# ─── Rheinland-Pfalz ─────────────────────────────────────────────────
|
|
{"bundesland": "RP", "wp": 16, "wahltermin": "2011-03-27", "konstituierung": "2011-05-18", "ende": "2016-05-18"},
|
|
{"bundesland": "RP", "wp": 17, "wahltermin": "2016-03-13", "konstituierung": "2016-05-18", "ende": "2021-05-18"},
|
|
{"bundesland": "RP", "wp": 18, "wahltermin": "2021-03-14", "konstituierung": "2021-05-18", "ende": None},
|
|
# ─── Saarland ────────────────────────────────────────────────────────
|
|
{"bundesland": "SL", "wp": 14, "wahltermin": "2009-08-30", "konstituierung": "2009-09-30", "ende": "2012-04-25"},
|
|
{"bundesland": "SL", "wp": 15, "wahltermin": "2012-03-25", "konstituierung": "2012-04-25", "ende": "2017-05-09"},
|
|
{"bundesland": "SL", "wp": 16, "wahltermin": "2017-03-26", "konstituierung": "2017-05-09", "ende": "2022-04-25"},
|
|
{"bundesland": "SL", "wp": 17, "wahltermin": "2022-03-27", "konstituierung": "2022-04-25", "ende": None},
|
|
# ─── Sachsen ─────────────────────────────────────────────────────────
|
|
{"bundesland": "SN", "wp": 5, "wahltermin": "2009-08-30", "konstituierung": "2009-09-29", "ende": "2014-09-29"},
|
|
{"bundesland": "SN", "wp": 6, "wahltermin": "2014-08-31", "konstituierung": "2014-09-29", "ende": "2019-10-01"},
|
|
{"bundesland": "SN", "wp": 7, "wahltermin": "2019-09-01", "konstituierung": "2019-10-01", "ende": "2024-10-01"},
|
|
{"bundesland": "SN", "wp": 8, "wahltermin": "2024-09-01", "konstituierung": "2024-10-01", "ende": None},
|
|
# ─── Sachsen-Anhalt ──────────────────────────────────────────────────
|
|
{"bundesland": "LSA", "wp": 6, "wahltermin": "2011-03-20", "konstituierung": "2011-04-19", "ende": "2016-04-13"},
|
|
{"bundesland": "LSA", "wp": 7, "wahltermin": "2016-03-13", "konstituierung": "2016-04-13", "ende": "2021-07-06"},
|
|
{"bundesland": "LSA", "wp": 8, "wahltermin": "2021-06-06", "konstituierung": "2021-07-06", "ende": None},
|
|
# ─── Schleswig-Holstein ──────────────────────────────────────────────
|
|
{"bundesland": "SH", "wp": 18, "wahltermin": "2012-05-06", "konstituierung": "2012-06-05", "ende": "2017-06-06"},
|
|
{"bundesland": "SH", "wp": 19, "wahltermin": "2017-05-07", "konstituierung": "2017-06-06", "ende": "2022-06-07"},
|
|
{"bundesland": "SH", "wp": 20, "wahltermin": "2022-05-08", "konstituierung": "2022-06-07", "ende": None},
|
|
# ─── Thüringen ───────────────────────────────────────────────────────
|
|
{"bundesland": "TH", "wp": 6, "wahltermin": "2014-09-14", "konstituierung": "2014-10-14", "ende": "2019-11-26"},
|
|
{"bundesland": "TH", "wp": 7, "wahltermin": "2019-10-27", "konstituierung": "2019-11-26", "ende": "2024-09-26"},
|
|
{"bundesland": "TH", "wp": 8, "wahltermin": "2024-09-01", "konstituierung": "2024-09-26", "ende": None},
|
|
# ─── Bund (Deutscher Bundestag) ──────────────────────────────────────
|
|
{"bundesland": "BUND", "wp": 18, "wahltermin": "2013-09-22", "konstituierung": "2013-10-22", "ende": "2017-10-24"},
|
|
{"bundesland": "BUND", "wp": 19, "wahltermin": "2017-09-24", "konstituierung": "2017-10-24", "ende": "2021-10-26"},
|
|
{"bundesland": "BUND", "wp": 20, "wahltermin": "2021-09-26", "konstituierung": "2021-10-26", "ende": "2025-03-25"},
|
|
{"bundesland": "BUND", "wp": 21, "wahltermin": "2025-02-23", "konstituierung": "2025-03-25", "ende": None},
|
|
]
|
|
|
|
|
|
REGIERUNGEN: list[Regierung] = [
|
|
# ─── Baden-Württemberg ───────────────────────────────────────────────
|
|
{"bundesland": "BW", "name": "Kretschmann I", "wp": 15, "parteien": ["GRÜNE", "SPD"], "ministerpraesident": "Winfried Kretschmann", "von": "2011-05-12", "bis": "2016-05-12"},
|
|
{"bundesland": "BW", "name": "Kretschmann II", "wp": 16, "parteien": ["GRÜNE", "CDU"], "ministerpraesident": "Winfried Kretschmann", "von": "2016-05-12", "bis": "2021-05-12"},
|
|
{"bundesland": "BW", "name": "Kretschmann III", "wp": 17, "parteien": ["GRÜNE", "CDU"], "ministerpraesident": "Winfried Kretschmann", "von": "2021-05-12", "bis": None},
|
|
# ─── Bayern ──────────────────────────────────────────────────────────
|
|
{"bundesland": "BY", "name": "Seehofer II", "wp": 17, "parteien": ["CSU"], "ministerpraesident": "Horst Seehofer", "von": "2013-10-10", "bis": "2018-03-21"},
|
|
{"bundesland": "BY", "name": "Söder I", "wp": 17, "parteien": ["CSU"], "ministerpraesident": "Markus Söder", "von": "2018-03-21", "bis": "2018-11-12"},
|
|
{"bundesland": "BY", "name": "Söder II", "wp": 18, "parteien": ["CSU", "FREIE WÄHLER"], "ministerpraesident": "Markus Söder", "von": "2018-11-12", "bis": "2023-11-07"},
|
|
{"bundesland": "BY", "name": "Söder III", "wp": 19, "parteien": ["CSU", "FREIE WÄHLER"], "ministerpraesident": "Markus Söder", "von": "2023-11-07", "bis": None},
|
|
# ─── Berlin ──────────────────────────────────────────────────────────
|
|
{"bundesland": "BE", "name": "Wowereit IV", "wp": 17, "parteien": ["SPD", "CDU"], "ministerpraesident": "Klaus Wowereit", "von": "2011-11-24", "bis": "2014-12-11"},
|
|
{"bundesland": "BE", "name": "Müller I", "wp": 17, "parteien": ["SPD", "CDU"], "ministerpraesident": "Michael Müller", "von": "2014-12-11", "bis": "2016-12-08"},
|
|
{"bundesland": "BE", "name": "Müller II", "wp": 18, "parteien": ["SPD", "LINKE", "GRÜNE"], "ministerpraesident": "Michael Müller", "von": "2016-12-08", "bis": "2021-12-21"},
|
|
{"bundesland": "BE", "name": "Giffey I", "wp": 19, "parteien": ["SPD", "GRÜNE", "LINKE"], "ministerpraesident": "Franziska Giffey", "von": "2021-12-21", "bis": "2023-04-27"},
|
|
{"bundesland": "BE", "name": "Wegner I", "wp": 19, "parteien": ["CDU", "SPD"], "ministerpraesident": "Kai Wegner", "von": "2023-04-27", "bis": None},
|
|
# ─── Brandenburg ─────────────────────────────────────────────────────
|
|
{"bundesland": "BB", "name": "Woidke I", "wp": 6, "parteien": ["SPD", "LINKE"], "ministerpraesident": "Dietmar Woidke", "von": "2014-11-05", "bis": "2019-11-20"},
|
|
{"bundesland": "BB", "name": "Woidke II", "wp": 7, "parteien": ["SPD", "CDU", "GRÜNE"], "ministerpraesident": "Dietmar Woidke", "von": "2019-11-20", "bis": "2024-12-11"},
|
|
{"bundesland": "BB", "name": "Woidke III", "wp": 8, "parteien": ["SPD", "BSW"], "ministerpraesident": "Dietmar Woidke", "von": "2024-12-11", "bis": None},
|
|
# ─── Bremen ──────────────────────────────────────────────────────────
|
|
{"bundesland": "HB", "name": "Böhrnsen III", "wp": 18, "parteien": ["SPD", "GRÜNE"], "ministerpraesident": "Jens Böhrnsen", "von": "2011-06-29", "bis": "2015-07-15"},
|
|
{"bundesland": "HB", "name": "Sieling I", "wp": 19, "parteien": ["SPD", "GRÜNE"], "ministerpraesident": "Carsten Sieling", "von": "2015-07-15", "bis": "2019-08-15"},
|
|
{"bundesland": "HB", "name": "Bovenschulte I", "wp": 20, "parteien": ["SPD", "GRÜNE", "LINKE"], "ministerpraesident": "Andreas Bovenschulte", "von": "2019-08-15", "bis": "2023-07-05"},
|
|
{"bundesland": "HB", "name": "Bovenschulte II", "wp": 21, "parteien": ["SPD", "GRÜNE", "LINKE"], "ministerpraesident": "Andreas Bovenschulte", "von": "2023-07-05", "bis": None},
|
|
# ─── Hamburg ─────────────────────────────────────────────────────────
|
|
{"bundesland": "HH", "name": "Scholz II", "wp": 21, "parteien": ["SPD", "GRÜNE"], "ministerpraesident": "Olaf Scholz", "von": "2015-04-15", "bis": "2018-03-28"},
|
|
{"bundesland": "HH", "name": "Tschentscher I", "wp": 21, "parteien": ["SPD", "GRÜNE"], "ministerpraesident": "Peter Tschentscher", "von": "2018-03-28", "bis": "2020-06-10"},
|
|
{"bundesland": "HH", "name": "Tschentscher II", "wp": 22, "parteien": ["SPD", "GRÜNE"], "ministerpraesident": "Peter Tschentscher", "von": "2020-06-10", "bis": "2025-05-07"},
|
|
{"bundesland": "HH", "name": "Tschentscher III", "wp": 23, "parteien": ["SPD", "GRÜNE"], "ministerpraesident": "Peter Tschentscher", "von": "2025-05-07", "bis": None},
|
|
# ─── Hessen ──────────────────────────────────────────────────────────
|
|
{"bundesland": "HE", "name": "Bouffier II", "wp": 19, "parteien": ["CDU", "GRÜNE"], "ministerpraesident": "Volker Bouffier", "von": "2014-01-18", "bis": "2019-01-18"},
|
|
{"bundesland": "HE", "name": "Bouffier III", "wp": 20, "parteien": ["CDU", "GRÜNE"], "ministerpraesident": "Volker Bouffier", "von": "2019-01-18", "bis": "2022-05-31"},
|
|
{"bundesland": "HE", "name": "Rhein I", "wp": 20, "parteien": ["CDU", "GRÜNE"], "ministerpraesident": "Boris Rhein", "von": "2022-05-31", "bis": "2024-01-18"},
|
|
{"bundesland": "HE", "name": "Rhein II", "wp": 21, "parteien": ["CDU", "SPD"], "ministerpraesident": "Boris Rhein", "von": "2024-01-18", "bis": None},
|
|
# ─── Mecklenburg-Vorpommern ──────────────────────────────────────────
|
|
{"bundesland": "MV", "name": "Sellering II", "wp": 6, "parteien": ["SPD", "CDU"], "ministerpraesident": "Erwin Sellering", "von": "2011-10-25", "bis": "2016-11-01"},
|
|
{"bundesland": "MV", "name": "Sellering III", "wp": 7, "parteien": ["SPD", "CDU"], "ministerpraesident": "Erwin Sellering", "von": "2016-11-01", "bis": "2017-07-04"},
|
|
{"bundesland": "MV", "name": "Schwesig I", "wp": 7, "parteien": ["SPD", "CDU"], "ministerpraesident": "Manuela Schwesig", "von": "2017-07-04", "bis": "2021-11-15"},
|
|
{"bundesland": "MV", "name": "Schwesig II", "wp": 8, "parteien": ["SPD", "LINKE"], "ministerpraesident": "Manuela Schwesig", "von": "2021-11-15", "bis": None},
|
|
# ─── Niedersachsen ───────────────────────────────────────────────────
|
|
{"bundesland": "NI", "name": "Weil I", "wp": 17, "parteien": ["SPD", "GRÜNE"], "ministerpraesident": "Stephan Weil", "von": "2013-02-19", "bis": "2017-11-22"},
|
|
{"bundesland": "NI", "name": "Weil II", "wp": 18, "parteien": ["SPD", "CDU"], "ministerpraesident": "Stephan Weil", "von": "2017-11-22", "bis": "2022-11-08"},
|
|
{"bundesland": "NI", "name": "Weil III", "wp": 19, "parteien": ["SPD", "GRÜNE"], "ministerpraesident": "Stephan Weil", "von": "2022-11-08", "bis": None},
|
|
# ─── Nordrhein-Westfalen ─────────────────────────────────────────────
|
|
{"bundesland": "NRW", "name": "Kraft I", "wp": 15, "parteien": ["SPD", "GRÜNE"], "ministerpraesident": "Hannelore Kraft", "von": "2010-07-15", "bis": "2012-06-20"},
|
|
{"bundesland": "NRW", "name": "Kraft II", "wp": 16, "parteien": ["SPD", "GRÜNE"], "ministerpraesident": "Hannelore Kraft", "von": "2012-06-20", "bis": "2017-06-30"},
|
|
{"bundesland": "NRW", "name": "Laschet I", "wp": 17, "parteien": ["CDU", "FDP"], "ministerpraesident": "Armin Laschet", "von": "2017-06-30", "bis": "2021-10-27"},
|
|
{"bundesland": "NRW", "name": "Wüst I", "wp": 17, "parteien": ["CDU", "FDP"], "ministerpraesident": "Hendrik Wüst", "von": "2021-10-27", "bis": "2022-06-29"},
|
|
{"bundesland": "NRW", "name": "Wüst II", "wp": 18, "parteien": ["CDU", "GRÜNE"], "ministerpraesident": "Hendrik Wüst", "von": "2022-06-29", "bis": None},
|
|
# ─── Rheinland-Pfalz ─────────────────────────────────────────────────
|
|
{"bundesland": "RP", "name": "Beck V", "wp": 16, "parteien": ["SPD", "GRÜNE"], "ministerpraesident": "Kurt Beck", "von": "2011-05-18", "bis": "2013-01-16"},
|
|
{"bundesland": "RP", "name": "Dreyer I", "wp": 16, "parteien": ["SPD", "GRÜNE"], "ministerpraesident": "Malu Dreyer", "von": "2013-01-16", "bis": "2016-05-18"},
|
|
{"bundesland": "RP", "name": "Dreyer II", "wp": 17, "parteien": ["SPD", "GRÜNE", "FDP"], "ministerpraesident": "Malu Dreyer", "von": "2016-05-18", "bis": "2021-05-18"},
|
|
{"bundesland": "RP", "name": "Dreyer III", "wp": 18, "parteien": ["SPD", "GRÜNE", "FDP"], "ministerpraesident": "Malu Dreyer", "von": "2021-05-18", "bis": "2024-07-10"},
|
|
{"bundesland": "RP", "name": "Schweitzer I", "wp": 18, "parteien": ["SPD", "GRÜNE", "FDP"], "ministerpraesident": "Alexander Schweitzer", "von": "2024-07-10", "bis": None},
|
|
# ─── Saarland ────────────────────────────────────────────────────────
|
|
{"bundesland": "SL", "name": "Müller III", "wp": 14, "parteien": ["CDU", "FDP", "GRÜNE"], "ministerpraesident": "Peter Müller", "von": "2009-11-10", "bis": "2011-08-10"},
|
|
{"bundesland": "SL", "name": "Kramp-Karrenbauer I", "wp": 14, "parteien": ["CDU", "FDP", "GRÜNE"], "ministerpraesident": "Annegret Kramp-Karrenbauer", "von": "2011-08-10", "bis": "2012-05-09"},
|
|
{"bundesland": "SL", "name": "Kramp-Karrenbauer II", "wp": 15, "parteien": ["CDU", "SPD"], "ministerpraesident": "Annegret Kramp-Karrenbauer", "von": "2012-05-09", "bis": "2017-05-17"},
|
|
{"bundesland": "SL", "name": "Kramp-Karrenbauer III", "wp": 16, "parteien": ["CDU", "SPD"], "ministerpraesident": "Annegret Kramp-Karrenbauer", "von": "2017-05-17", "bis": "2018-02-28"},
|
|
{"bundesland": "SL", "name": "Hans I", "wp": 16, "parteien": ["CDU", "SPD"], "ministerpraesident": "Tobias Hans", "von": "2018-02-28", "bis": "2022-04-25"},
|
|
{"bundesland": "SL", "name": "Rehlinger I", "wp": 17, "parteien": ["SPD"], "ministerpraesident": "Anke Rehlinger", "von": "2022-04-25", "bis": None},
|
|
# ─── Sachsen ─────────────────────────────────────────────────────────
|
|
{"bundesland": "SN", "name": "Tillich I", "wp": 5, "parteien": ["CDU", "FDP"], "ministerpraesident": "Stanislaw Tillich", "von": "2009-09-29", "bis": "2014-11-13"},
|
|
{"bundesland": "SN", "name": "Tillich II", "wp": 6, "parteien": ["CDU", "SPD"], "ministerpraesident": "Stanislaw Tillich", "von": "2014-11-13", "bis": "2017-12-13"},
|
|
{"bundesland": "SN", "name": "Kretschmer I", "wp": 6, "parteien": ["CDU", "SPD"], "ministerpraesident": "Michael Kretschmer", "von": "2017-12-13", "bis": "2019-12-20"},
|
|
{"bundesland": "SN", "name": "Kretschmer II", "wp": 7, "parteien": ["CDU", "GRÜNE", "SPD"], "ministerpraesident": "Michael Kretschmer", "von": "2019-12-20", "bis": "2024-12-18"},
|
|
{"bundesland": "SN", "name": "Kretschmer III", "wp": 8, "parteien": ["CDU", "SPD"], "ministerpraesident": "Michael Kretschmer", "von": "2024-12-18", "bis": None},
|
|
# ─── Sachsen-Anhalt ──────────────────────────────────────────────────
|
|
{"bundesland": "LSA", "name": "Haseloff I", "wp": 6, "parteien": ["CDU", "SPD"], "ministerpraesident": "Reiner Haseloff", "von": "2011-04-19", "bis": "2016-04-25"},
|
|
{"bundesland": "LSA", "name": "Haseloff II", "wp": 7, "parteien": ["CDU", "SPD", "GRÜNE"], "ministerpraesident": "Reiner Haseloff", "von": "2016-04-25", "bis": "2021-09-16"},
|
|
{"bundesland": "LSA", "name": "Haseloff III", "wp": 8, "parteien": ["CDU", "SPD", "FDP"], "ministerpraesident": "Reiner Haseloff", "von": "2021-09-16", "bis": None},
|
|
# ─── Schleswig-Holstein ──────────────────────────────────────────────
|
|
{"bundesland": "SH", "name": "Albig I", "wp": 18, "parteien": ["SPD", "GRÜNE", "SSW"], "ministerpraesident": "Torsten Albig", "von": "2012-06-12", "bis": "2017-06-28"},
|
|
{"bundesland": "SH", "name": "Günther I", "wp": 19, "parteien": ["CDU", "GRÜNE", "FDP"], "ministerpraesident": "Daniel Günther", "von": "2017-06-28", "bis": "2022-06-29"},
|
|
{"bundesland": "SH", "name": "Günther II", "wp": 20, "parteien": ["CDU", "GRÜNE"], "ministerpraesident": "Daniel Günther", "von": "2022-06-29", "bis": None},
|
|
# ─── Thüringen ───────────────────────────────────────────────────────
|
|
{"bundesland": "TH", "name": "Ramelow I", "wp": 6, "parteien": ["LINKE", "SPD", "GRÜNE"], "ministerpraesident": "Bodo Ramelow", "von": "2014-12-05", "bis": "2020-02-05"},
|
|
{"bundesland": "TH", "name": "Kemmerich I", "wp": 7, "parteien": ["FDP"], "ministerpraesident": "Thomas Kemmerich", "von": "2020-02-05", "bis": "2020-03-04"},
|
|
{"bundesland": "TH", "name": "Ramelow II", "wp": 7, "parteien": ["LINKE", "SPD", "GRÜNE"], "ministerpraesident": "Bodo Ramelow", "von": "2020-03-04", "bis": "2024-12-12"},
|
|
{"bundesland": "TH", "name": "Voigt I", "wp": 8, "parteien": ["CDU", "BSW", "SPD"], "ministerpraesident": "Mario Voigt", "von": "2024-12-12", "bis": None},
|
|
# ─── Bund (Deutscher Bundestag) ──────────────────────────────────────
|
|
{"bundesland": "BUND", "name": "Merkel III", "wp": 18, "parteien": ["CDU", "CSU", "SPD"], "ministerpraesident": "Angela Merkel", "von": "2013-12-17", "bis": "2018-03-14"},
|
|
{"bundesland": "BUND", "name": "Merkel IV", "wp": 19, "parteien": ["CDU", "CSU", "SPD"], "ministerpraesident": "Angela Merkel", "von": "2018-03-14", "bis": "2021-12-08"},
|
|
{"bundesland": "BUND", "name": "Scholz I", "wp": 20, "parteien": ["SPD", "GRÜNE", "FDP"], "ministerpraesident": "Olaf Scholz", "von": "2021-12-08", "bis": "2024-11-06"},
|
|
{"bundesland": "BUND", "name": "Scholz I (geschäftsführend)", "wp": 20, "parteien": ["SPD", "GRÜNE"], "ministerpraesident": "Olaf Scholz", "von": "2024-11-06", "bis": "2025-05-06"},
|
|
{"bundesland": "BUND", "name": "Merz I", "wp": 21, "parteien": ["CDU", "CSU", "SPD"], "ministerpraesident": "Friedrich Merz", "von": "2025-05-06", "bis": None},
|
|
]
|
|
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
# Helper-API
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
|
|
def _datum_in_range(datum: str, von: str, bis: Optional[str]) -> bool:
|
|
if datum < von:
|
|
return False
|
|
if bis is None:
|
|
return True
|
|
return datum < bis
|
|
|
|
|
|
def legislatur_zum_zeitpunkt(
|
|
bundesland: str, datum: str,
|
|
) -> Optional[Legislatur]:
|
|
"""Welche Wahlperiode lief im Bundesland zum gegebenen Datum?"""
|
|
for leg in LEGISLATUREN:
|
|
if leg["bundesland"] != bundesland:
|
|
continue
|
|
if _datum_in_range(datum, leg["konstituierung"], leg.get("ende")):
|
|
return leg
|
|
return None
|
|
|
|
|
|
def regierung_zum_zeitpunkt(
|
|
bundesland: str, datum: str,
|
|
) -> Optional[Regierung]:
|
|
"""Welche Regierung war im Bundesland zum gegebenen Datum im Amt?"""
|
|
for reg in REGIERUNGEN:
|
|
if reg["bundesland"] != bundesland:
|
|
continue
|
|
if _datum_in_range(datum, reg["von"], reg.get("bis")):
|
|
return reg
|
|
return None
|
|
|
|
|
|
def aktuelle_regierung(bundesland: str) -> Optional[Regierung]:
|
|
"""Aktuelle Regierung des Bundeslands (bis=None)."""
|
|
for reg in REGIERUNGEN:
|
|
if reg["bundesland"] == bundesland and reg.get("bis") is None:
|
|
return reg
|
|
return None
|
|
|
|
|
|
def aktuelle_legislatur(bundesland: str) -> Optional[Legislatur]:
|
|
"""Laufende Wahlperiode (ende=None)."""
|
|
for leg in LEGISLATUREN:
|
|
if leg["bundesland"] == bundesland and leg.get("ende") is None:
|
|
return leg
|
|
return None
|
|
|
|
|
|
def regierungen_einer_wp(bundesland: str, wp: int) -> list[Regierung]:
|
|
"""Alle Regierungen einer bestimmten Legislatur, chronologisch."""
|
|
regs = [
|
|
r for r in REGIERUNGEN
|
|
if r["bundesland"] == bundesland and r["wp"] == wp
|
|
]
|
|
regs.sort(key=lambda r: r["von"])
|
|
return regs
|
|
|
|
|
|
def parteien_in_regierung_zum_zeitpunkt(
|
|
bundesland: str, datum: str,
|
|
) -> list[str]:
|
|
"""Welche Parteien waren zum Zeitpunkt in der Regierung?"""
|
|
reg = regierung_zum_zeitpunkt(bundesland, datum)
|
|
if reg is None:
|
|
return []
|
|
return list(reg.get("parteien", []))
|
|
|
|
|
|
def alle_legislaturen(bundesland: str) -> list[Legislatur]:
|
|
"""Alle Wahlperioden eines Bundeslands, sortiert nach WP-Nummer."""
|
|
legs = [leg for leg in LEGISLATUREN if leg["bundesland"] == bundesland]
|
|
legs.sort(key=lambda l: l["wp"])
|
|
return legs
|
|
|
|
|
|
def alle_regierungen(bundesland: str) -> list[Regierung]:
|
|
"""Alle Regierungen eines Bundeslands, chronologisch nach von."""
|
|
regs = [r for r in REGIERUNGEN if r["bundesland"] == bundesland]
|
|
regs.sort(key=lambda r: r["von"])
|
|
return regs
|