From 9a680372c364e997fffc20e46d45e5b1d1384240 Mon Sep 17 00:00:00 2001 From: rs028 Date: Tue, 23 Jun 2026 15:43:36 +0100 Subject: [PATCH 1/2] Use json5 instead of pyjson5 --- .gitignore | 1 + UI/backend/json_error_to_english.py | 12 ++++++------ UI/backend/json_validators.py | 12 +++++------- UI/backend/transport_paths_plotting.py | 2 -- 4 files changed, 12 insertions(+), 15 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bee8a64 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +__pycache__ diff --git a/UI/backend/json_error_to_english.py b/UI/backend/json_error_to_english.py index 10ce800..bbde337 100644 --- a/UI/backend/json_error_to_english.py +++ b/UI/backend/json_error_to_english.py @@ -1,8 +1,8 @@ import re # --------------------------------------------------------------------------- -# Human‑friendly explanations for common JSON parsing errors. -# These map fragments of pyjson5 error messages to clearer descriptions. +# Human-friendly explanations for common JSON parsing errors. +# These map fragments of json5 error messages to clearer descriptions. # --------------------------------------------------------------------------- ERROR_EXPLANATIONS = { "identifierstart": "Invalid start of identifier: object keys must begin with a quote `\"`.", @@ -25,12 +25,12 @@ def _friendly_message(msg: str) -> str: """ - Convert a raw pyjson5 error message into a more readable explanation. + Convert a raw json5 error message into a more readable explanation. Parameters ---------- msg : str - The raw error message from pyjson5. + The raw error message from json5. Returns ------- @@ -64,7 +64,7 @@ def pretty_json_error(input_string: str, error: Exception): input_string : str The original JSON text the user attempted to parse. error : Exception - The exception raised by pyjson5. + The exception raised by json5. Returns ------- @@ -75,7 +75,7 @@ def pretty_json_error(input_string: str, error: Exception): # ----------------------------------------------------------------------- # Extract character position from the exception. - # pyjson5 sometimes exposes `.pos`, but not always, so we fall back to + # json5 sometimes exposes `.pos`, but not always, so we fall back to # regex extraction from the message. # ----------------------------------------------------------------------- pos = getattr(error, "pos", None) diff --git a/UI/backend/json_validators.py b/UI/backend/json_validators.py index be34821..8b6d061 100644 --- a/UI/backend/json_validators.py +++ b/UI/backend/json_validators.py @@ -1,5 +1,5 @@ from fastapi import APIRouter -import pyjson5 +import json5 from pydantic import BaseModel from .json_error_to_english import pretty_json_error @@ -24,7 +24,7 @@ def room(payload: InputModel): Validate room JSON submitted by the frontend. This endpoint performs two layers of validation: - 1. Parse the input using pyjson5 (allows comments, trailing commas, etc.) + 1. Parse the input using json5 (allows comments, trailing commas, etc.) Returns ------- @@ -36,7 +36,7 @@ def room(payload: InputModel): # Step 1: JSON parsing (with helpful error messages) try: - data = pyjson5.loads(input_string) + data = json5.loads(input_string) return {"success": True} except Exception as e: return { @@ -45,14 +45,13 @@ def room(payload: InputModel): } - @router.post("/wind") def wind(payload: InputModel): """ Validate wind JSON submitted by the frontend. Follows the same two‑stage validation process as /room: - 1. Parse JSON using pyjson5 + 1. Parse JSON using json5 Returns ------- @@ -64,11 +63,10 @@ def wind(payload: InputModel): # Step 1: JSON parsing try: - data = pyjson5.loads(input_string) + data = json5.loads(input_string) return {"success": True} except Exception as e: return { "success": False, "message": pretty_json_error(input_string, e) } - diff --git a/UI/backend/transport_paths_plotting.py b/UI/backend/transport_paths_plotting.py index 5772a05..9a1b6ee 100644 --- a/UI/backend/transport_paths_plotting.py +++ b/UI/backend/transport_paths_plotting.py @@ -15,8 +15,6 @@ class InputModel(BaseModel): apertures: List[InputAperture] - - @router.post("/paths") def paths(payload: InputModel): """ From ad8106632920ad20ba4daff208b0562ed9de8824 Mon Sep 17 00:00:00 2001 From: rs028 Date: Tue, 23 Jun 2026 16:58:24 +0100 Subject: [PATCH 2/2] Lowercase directory name --- UI/{Frontend => frontend}/README.md | 0 UI/{Frontend => frontend}/index.html | 0 UI/{Frontend => frontend}/js/core/default_room_text.js | 0 UI/{Frontend => frontend}/js/core/state.js | 0 UI/{Frontend => frontend}/js/core/utils.js | 0 UI/{Frontend => frontend}/js/interfaces/ResultsViewInterface.js | 0 .../js/interfaces/TransportPathDeductionInterface.js | 0 UI/{Frontend => frontend}/js/interfaces/jsonValidatorInterface.js | 0 UI/{Frontend => frontend}/js/main.js | 0 UI/{Frontend => frontend}/js/managers/ApertureManager.js | 0 UI/{Frontend => frontend}/js/managers/ConnectionRenderer.js | 0 UI/{Frontend => frontend}/js/managers/DragResizeManager.js | 0 UI/{Frontend => frontend}/js/managers/LinkModeManager.js | 0 UI/{Frontend => frontend}/js/managers/LoadSaveManager.js | 0 UI/{Frontend => frontend}/js/managers/ResultsViewManager.js | 0 UI/{Frontend => frontend}/js/managers/RoomManager.js | 0 UI/{Frontend => frontend}/js/managers/SelectionManager.js | 0 UI/{Frontend => frontend}/js/managers/TransportPathManager.js | 0 UI/{Frontend => frontend}/js/objects/Aperture.js | 0 UI/{Frontend => frontend}/js/objects/Room.js | 0 UI/{Frontend => frontend}/js/ui/JsonEditor.js | 0 UI/{Frontend => frontend}/js/ui/Toolbar.js | 0 UI/{Frontend => frontend}/styles.css | 0 23 files changed, 0 insertions(+), 0 deletions(-) rename UI/{Frontend => frontend}/README.md (100%) rename UI/{Frontend => frontend}/index.html (100%) rename UI/{Frontend => frontend}/js/core/default_room_text.js (100%) rename UI/{Frontend => frontend}/js/core/state.js (100%) rename UI/{Frontend => frontend}/js/core/utils.js (100%) rename UI/{Frontend => frontend}/js/interfaces/ResultsViewInterface.js (100%) rename UI/{Frontend => frontend}/js/interfaces/TransportPathDeductionInterface.js (100%) rename UI/{Frontend => frontend}/js/interfaces/jsonValidatorInterface.js (100%) rename UI/{Frontend => frontend}/js/main.js (100%) rename UI/{Frontend => frontend}/js/managers/ApertureManager.js (100%) rename UI/{Frontend => frontend}/js/managers/ConnectionRenderer.js (100%) rename UI/{Frontend => frontend}/js/managers/DragResizeManager.js (100%) rename UI/{Frontend => frontend}/js/managers/LinkModeManager.js (100%) rename UI/{Frontend => frontend}/js/managers/LoadSaveManager.js (100%) rename UI/{Frontend => frontend}/js/managers/ResultsViewManager.js (100%) rename UI/{Frontend => frontend}/js/managers/RoomManager.js (100%) rename UI/{Frontend => frontend}/js/managers/SelectionManager.js (100%) rename UI/{Frontend => frontend}/js/managers/TransportPathManager.js (100%) rename UI/{Frontend => frontend}/js/objects/Aperture.js (100%) rename UI/{Frontend => frontend}/js/objects/Room.js (100%) rename UI/{Frontend => frontend}/js/ui/JsonEditor.js (100%) rename UI/{Frontend => frontend}/js/ui/Toolbar.js (100%) rename UI/{Frontend => frontend}/styles.css (100%) diff --git a/UI/Frontend/README.md b/UI/frontend/README.md similarity index 100% rename from UI/Frontend/README.md rename to UI/frontend/README.md diff --git a/UI/Frontend/index.html b/UI/frontend/index.html similarity index 100% rename from UI/Frontend/index.html rename to UI/frontend/index.html diff --git a/UI/Frontend/js/core/default_room_text.js b/UI/frontend/js/core/default_room_text.js similarity index 100% rename from UI/Frontend/js/core/default_room_text.js rename to UI/frontend/js/core/default_room_text.js diff --git a/UI/Frontend/js/core/state.js b/UI/frontend/js/core/state.js similarity index 100% rename from UI/Frontend/js/core/state.js rename to UI/frontend/js/core/state.js diff --git a/UI/Frontend/js/core/utils.js b/UI/frontend/js/core/utils.js similarity index 100% rename from UI/Frontend/js/core/utils.js rename to UI/frontend/js/core/utils.js diff --git a/UI/Frontend/js/interfaces/ResultsViewInterface.js b/UI/frontend/js/interfaces/ResultsViewInterface.js similarity index 100% rename from UI/Frontend/js/interfaces/ResultsViewInterface.js rename to UI/frontend/js/interfaces/ResultsViewInterface.js diff --git a/UI/Frontend/js/interfaces/TransportPathDeductionInterface.js b/UI/frontend/js/interfaces/TransportPathDeductionInterface.js similarity index 100% rename from UI/Frontend/js/interfaces/TransportPathDeductionInterface.js rename to UI/frontend/js/interfaces/TransportPathDeductionInterface.js diff --git a/UI/Frontend/js/interfaces/jsonValidatorInterface.js b/UI/frontend/js/interfaces/jsonValidatorInterface.js similarity index 100% rename from UI/Frontend/js/interfaces/jsonValidatorInterface.js rename to UI/frontend/js/interfaces/jsonValidatorInterface.js diff --git a/UI/Frontend/js/main.js b/UI/frontend/js/main.js similarity index 100% rename from UI/Frontend/js/main.js rename to UI/frontend/js/main.js diff --git a/UI/Frontend/js/managers/ApertureManager.js b/UI/frontend/js/managers/ApertureManager.js similarity index 100% rename from UI/Frontend/js/managers/ApertureManager.js rename to UI/frontend/js/managers/ApertureManager.js diff --git a/UI/Frontend/js/managers/ConnectionRenderer.js b/UI/frontend/js/managers/ConnectionRenderer.js similarity index 100% rename from UI/Frontend/js/managers/ConnectionRenderer.js rename to UI/frontend/js/managers/ConnectionRenderer.js diff --git a/UI/Frontend/js/managers/DragResizeManager.js b/UI/frontend/js/managers/DragResizeManager.js similarity index 100% rename from UI/Frontend/js/managers/DragResizeManager.js rename to UI/frontend/js/managers/DragResizeManager.js diff --git a/UI/Frontend/js/managers/LinkModeManager.js b/UI/frontend/js/managers/LinkModeManager.js similarity index 100% rename from UI/Frontend/js/managers/LinkModeManager.js rename to UI/frontend/js/managers/LinkModeManager.js diff --git a/UI/Frontend/js/managers/LoadSaveManager.js b/UI/frontend/js/managers/LoadSaveManager.js similarity index 100% rename from UI/Frontend/js/managers/LoadSaveManager.js rename to UI/frontend/js/managers/LoadSaveManager.js diff --git a/UI/Frontend/js/managers/ResultsViewManager.js b/UI/frontend/js/managers/ResultsViewManager.js similarity index 100% rename from UI/Frontend/js/managers/ResultsViewManager.js rename to UI/frontend/js/managers/ResultsViewManager.js diff --git a/UI/Frontend/js/managers/RoomManager.js b/UI/frontend/js/managers/RoomManager.js similarity index 100% rename from UI/Frontend/js/managers/RoomManager.js rename to UI/frontend/js/managers/RoomManager.js diff --git a/UI/Frontend/js/managers/SelectionManager.js b/UI/frontend/js/managers/SelectionManager.js similarity index 100% rename from UI/Frontend/js/managers/SelectionManager.js rename to UI/frontend/js/managers/SelectionManager.js diff --git a/UI/Frontend/js/managers/TransportPathManager.js b/UI/frontend/js/managers/TransportPathManager.js similarity index 100% rename from UI/Frontend/js/managers/TransportPathManager.js rename to UI/frontend/js/managers/TransportPathManager.js diff --git a/UI/Frontend/js/objects/Aperture.js b/UI/frontend/js/objects/Aperture.js similarity index 100% rename from UI/Frontend/js/objects/Aperture.js rename to UI/frontend/js/objects/Aperture.js diff --git a/UI/Frontend/js/objects/Room.js b/UI/frontend/js/objects/Room.js similarity index 100% rename from UI/Frontend/js/objects/Room.js rename to UI/frontend/js/objects/Room.js diff --git a/UI/Frontend/js/ui/JsonEditor.js b/UI/frontend/js/ui/JsonEditor.js similarity index 100% rename from UI/Frontend/js/ui/JsonEditor.js rename to UI/frontend/js/ui/JsonEditor.js diff --git a/UI/Frontend/js/ui/Toolbar.js b/UI/frontend/js/ui/Toolbar.js similarity index 100% rename from UI/Frontend/js/ui/Toolbar.js rename to UI/frontend/js/ui/Toolbar.js diff --git a/UI/Frontend/styles.css b/UI/frontend/styles.css similarity index 100% rename from UI/Frontend/styles.css rename to UI/frontend/styles.css