Files
tft/.planer/einheiten/backend__tft__constants__loader.py.md
2026-07-24 11:24:24 +02:00

35 lines
1.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Einheiten: backend/tft/constants/loader.py
stand: f41ac76b5789
## backend/tft/constants/loader.py::load_constants
beschreibung: Lädt die TOML-Konstantendatei für ein gegebenes Set und gibt das eingelesene Dict zurück.
input: set_number (int) die zu ladende Set-Nummer.
output: dict die deserialisierten Konstanten aus der TOML-Datei.
entscheidungen:
- Fehlt die Set-Datei, bricht der Lader mit einer FileNotFoundError ab und gibt einen Hinweis zur Behebung.
beleg: "if not path.exists():"
- Die Datei wird im Binary-Modus geöffnet, da tomllib rohe Bytes erwartet.
beleg: "with path.open(\"rb\") as f:"
- Geladene Werte werden unmittelbar über validate einer Konsistenzprüfung unterzogen.
beleg: "validate(c)"
kanten:
- ruft-auf: backend/tft/constants/loader.py::validate
## backend/tft/constants/loader.py::validate
beschreibung: Validiert die Struktur und Plausibilität der geladenen Konstanten und wirft bei Verstößen ValueError.
input: c (dict) das zuvor aus TOML geladene Konstanten-Dict.
output: None signalisiert Gültigkeit durch stilles Zurückkehren oder Auslösen einer Ausnahme.
entscheidungen:
- Jede Shop-Odds-Zeile muss genau 5 Einträge besitzen.
beleg: "if len(row) != 5:"
- Die Pool-Größenliste muss exakt 5 Kostenstufen umfassen.
beleg: "if len(c[\"pool\"][\"sizes\"]) != 5:"
- Die Anzahl der XP-Stufen-Übergänge muss zur maximalen Stufe passen (to_next = max_level 1).
beleg: "if len(xp[\"to_next\"]) != xp[\"max_level\"] - 1:"
- Die streak_gold-Tabelle muss aufsteigend nach Streak-Länge sortiert sein.
beleg: "if streaks != sorted(streaks):"
- Jede Shop-Odds-Zeile muss in Summe genau 100 ergeben.
beleg: "if sum(row) != 100:"
kanten:
- wird-genutzt-von: backend/tft/constants/loader.py::load_constants