Files
dxfmakros/lib/testdata_schema.py
T
m.stangl aaf47ab3c1 [CHANGE] JSON-Testdaten-Feldnamen aus dxf_anlage_export.py in lib/testdata_schema.py zentralisiert
dxf_anlage_export.py und dxf_scan_components.py fuehrten dieselben Feldnamen (abstand, deltaL_mm, as_seite, ...) aus doc/json-input-lisp.md unabhaengig als lose String-Literale - ein Tippfehler oder eine Schema-Aenderung in nur einer Datei waere nicht aufgefallen. Neues Modul lib/testdata_schema.py buendelt die Feldnamen/festen Werte der dokumentierten Schemas (Kreisel, Einzelblock, VF Standard/Etage, Gefaellestrecke Modus 1) als benannte Konstanten; dxf_anlage_export.py nutzt sie jetzt durchgaengig.

dxf_scan_components.py bewusst NICHT mitumgebaut: deutlich grösser/komplexer, mit zusaetzlichen Sonderfaellen (z.B. "startpunkt"/"gerade"-Form), ein vollstaendiger Umbau haette den Rahmen dieser Aenderung gesprengt und mehr Risiko als Nutzen gehabt.

Verhaltensgleich: alle 9 Tests in tests/test_dxf_anlage_export.py laufen weiterhin gruen.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-09 10:43:09 +02:00

80 lines
2.1 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
testdata_schema.py - Feldnamen und feste Werte der JSON-Testdaten-Schemas aus
doc/json-input-lisp.md, als einzige Quelle fuer alle Erzeuger.
Bisher standen dieselben Feldnamen ("function", "abstand", "deltaL_mm",
"as_seite", ...) als lose String-Literale unabhaengig in dxf_scan_components.py
(fremde Zeichnungen) UND dxf_anlage_export.py (eigene, mit unseren Makros
gebaute Zeichnungen) - ein Tippfehler oder eine Schema-Aenderung in nur einer
der beiden Dateien waere nicht aufgefallen. Dieses Modul buendelt sie an
einer Stelle; die LISP-Treiber (tests/test_*.lsp) lesen die JSON-Keys direkt
als Strings und sind davon nicht betroffen.
Nur Feldnamen/feste Werte, KEINE Validierung oder Default-Logik - die bleibt
bewusst in den jeweiligen Erzeugern, deren Kontext (fremde vs. eigene
Zeichnung) unterschiedliche Fallbacks braucht.
"""
# --- Gemeinsame Felder ---
F_FUNCTION = "function"
F_ID = "id"
F_TEST_ID = "test_id"
F_BLOCK = "block"
F_X = "x"
F_Y = "y"
F_Z = "z"
F_ROTATION = "rotation"
F_COMMENT = "comment"
FUNC_INSERT = "insert"
FUNC_CONNECT = "connect"
# --- Abschnitt 1 (json-input-lisp.md): Kreisel ---
F_ABSTAND = "abstand"
F_TYP = "typ"
F_DREHRICHTUNG = "drehrichtung"
TYP_STANDARD = "STANDARD"
TYP_PIN = "PIN"
DREHRICHTUNG_UZS = "UZS"
DREHRICHTUNG_GUZ = "GUZ"
# --- Abschnitt 3: VarioFoerderer Standard und Etage ---
F_VF_TYP = "typ"
F_RICHTUNG = "richtung"
F_DELTA_L = "deltaL"
F_DELTA_H = "deltaH"
F_WINKEL = "winkel"
F_L_GF1 = "L_GF1"
F_GF_VERTEILUNG = "gf_verteilung"
F_SEITE = "seite"
F_MOTORSEITE = "motorseite"
F_HZ = "hz"
VF_TYP_STANDARD = "standard"
VF_TYP_ETAGE = "etage"
RICHTUNG_AUF = "Auf"
RICHTUNG_AB = "Ab"
SEITE_LINKS = "links"
SEITE_RECHTS = "rechts"
# --- Abschnitt 4.1: Gefaellestrecke Modus 1 ---
F_MODUS = "modus"
F_DELTAL_MM = "deltaL_mm"
F_WINKEL_GRAD = "winkel_grad"
F_HZ_GRAD = "hz_grad"
F_START_MM = "start_mm"
F_AS_SEITE = "as_seite"
F_ES_SEITE = "es_seite"
F_AS_WINKEL = "as_winkel"
F_ES_WINKEL = "es_winkel"
GF_MODUS_WERTEINGABE = 1
GF_MODUS_RICHTUNG_AUS_PUNKTEN = 2
GF_MODUS_LINIENZUG = 3
SCHLEUS_WINKEL_90 = "90"
SCHLEUS_WINKEL_30 = "30"