""" sn_basis/functions/laenderkennung.py – ALKIS-Länderkennung je Plugin-Präfix. AGLB-länderspezifische Funktionen (z.B. Flurstückskennzeichen-Bildung) sollen nicht hart auf Sachsen ("14") verdrahtet sein, sondern die Länderkennung über dieses generische Mapping ermitteln. Für neue Bundesländer genügt ein weiterer Eintrag in ``LAENDERKENNUNGEN`` – die aufrufende Logik bleibt unverändert. """ #: Mapping von sn_*-Plugin-Präfix (ohne Unterstrich) auf die zweistellige #: ALKIS-Länderkennung. Aktuell nur Sachsen befüllt; weitere Bundesländer #: können hier ergänzt werden, sobald Schwesterplugins dafür existieren. LAENDERKENNUNGEN: dict[str, str] = { "sn": "14", # Sachsen } def get_laenderkennung(plugin_praefix: str | None = None) -> str: """Ermittelt die ALKIS-Länderkennung für einen Plugin-Präfix. Parameters ---------- plugin_praefix : str, optional Plugin-Präfix ohne Unterstrich, z.B. ``"sn"``. Wird kein Präfix übergeben, wird er aus dem Package-Namen des aufrufenden Moduls abgeleitet (``__name__`` des Aufrufers, erstes ``_``-Segment). Returns ------- str Zweistellige Länderkennung, z.B. ``"14"``. Raises ------ KeyError Wenn für den ermittelten Präfix keine Länderkennung hinterlegt ist. """ if not plugin_praefix: import inspect frame = inspect.stack()[1] caller_module = frame.frame.f_globals.get("__name__", "") plugin_praefix = caller_module.split(".")[0].split("_")[0] plugin_praefix = plugin_praefix.lower() if plugin_praefix not in LAENDERKENNUNGEN: raise KeyError( f"Keine Länderkennung für Plugin-Präfix '{plugin_praefix}' hinterlegt. " f"Bekannte Präfixe: {sorted(LAENDERKENNUNGEN)}" ) return LAENDERKENNUNGEN[plugin_praefix]