"""Katalog systemów domów dla warstwy prezentacji — JEDNO źródło nazw. Nazwy były zaszyte w czterech szablonach naraz (selektor na „Horoskop", selektor na „Skompiluj", checkboxy porównania, nagłówki tabeli). Przy trzech systemach uchodziło to na sucho; przy dziesięciu rozjazd jest kwestią czasu — wystarczy dopisać system w jednym miejscu i zapomnieć o trzech pozostałych. Kolejność jest celowa: najpierw dwa najpowszechniejsze (Placidus i Whole Sign), potem reszta. `LIMITED` oznacza systemy, które powyżej koła podbiegunowego nie istnieją i podlegają jawnemu fallbackowi — UI ma o tym uprzedzać ZANIM ktoś policzy horoskop dla Tromsø, a nie dopiero w ostrzeżeniu przy wyniku. """ from __future__ import annotations HOUSE_SYSTEMS: list[tuple[str, str]] = [ ("placidus", "Placidus"), ("whole_sign", "Whole Sign"), ("whole_sign_aries", "Whole Sign (od Barana)"), ("koch", "Koch"), ("equal", "Equal (od Asc)"), ("equal_mc", "Equal (od MC)"), ("porphyry", "Porphyry"), ("regiomontanus", "Regiomontanus"), ("campanus", "Campanus"), ("alcabitus", "Alcabitus"), ("topocentric", "Topocentric"), ("morinus", "Morinus"), ("vehlow", "Vehlow"), ] # Systemy oparte na łuku dobowym — jedyne z realną granicą dziedziny. LIMITED = frozenset({"placidus", "koch"}) HOUSE_SYSTEM_NAMES: dict[str, str] = dict(HOUSE_SYSTEMS) def label(system: str) -> str: """Nazwa do pokazania; nieznany identyfikator zwracamy bez zmian, nie gubimy go.""" return HOUSE_SYSTEM_NAMES.get(system, system)