Konfiguration
Grundsätzlich kann ich die Wahl von JSON verstehen, da es in der Standard-Library vorhanden ist. Allerdings ist es keine besonders geeignete Wahl, da es durch ein paar Eigenheiten (z.B. trailing comma) und dem Fehlen von Kommentaren unhandlich für Menschen ist. Klar, im Regelfall kommt es direkt aus dem Konfigurationsmanagement. Aber gerade beim Mailsetup kann ich mir gut die Situation vorstellen, in der mal eben vor Ort etwas gefixt wird. Mögliche Alternativen:
- TOML, soll ja auch in die Standard-Library wandern, könnte man solange vendorn
- ConfigParser, ist in der Standard-Library, INI-like, etwas eigene API
- XML, würde zum Zeitalter des Systems, das wir hier bedienen passen, würde ich aber eher von abraten
- YAML, bräuchte eine extra Library, ist nicht das beste aller Formate, aber hätte in Ansible frist-class Support
Momentan wird direkt auf die im JSON hinterlegten Daten zugegriffen, d.h. es wird erwartet, dass sie vollständig und passend existiert. Eine vollständige Prüfung ist hier nicht unbedingt nötig. Es wäre aber schon gut, wenn es graziler agieren als mit einem KeyError fehlschlagen würde. In vielen Fällen könnte ich mir auch einen sinnvollen Default vorstellen. Vielleicht, also eine Default-Config haben und sonst mit .get("key", "default")
zugreifen?
Nach diesen allgemeinen Überlegungen, noch ein konkreter Punkt: Das f-String-Templating in der Output-Option ist weird und für eine sonst statische Konfiguration unerwartet/unpassend. Einfachste Möglichkeiten wären hier aus den Domains ein Dictionary zu machen oder die Domain-Ausgabe zu erzwingen und nur ein Verzeichnis abzufragen.