From 7153c8b209d310286e4908fe25c9a6a21fe78ba5 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sun, 23 Aug 2026 15:58:25 -0500 Subject: [PATCH] Classify a truncated size report as a corrupt artifact UnicodeDecodeError is a ValueError, so a non-UTF-8 esp_idf_size.json read as an internal regression via the backstop; the size report is the one input nothing upstream validates. --- esphome/espidf/size_summary.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/esphome/espidf/size_summary.py b/esphome/espidf/size_summary.py index 335ee3f284..888cf3d41e 100644 --- a/esphome/espidf/size_summary.py +++ b/esphome/espidf/size_summary.py @@ -107,7 +107,8 @@ def _print_summary(size_json: Path, partitions_csv: Path | None) -> None: # FileNotFoundError lands in the OSError arm with the path in its text. try: data = json.loads(size_json.read_text(encoding="utf-8")) - except (OSError, json.JSONDecodeError) as e: + except (OSError, ValueError) as e: + # ValueError covers JSONDecodeError and a non-UTF-8 (truncated) file _LOGGER.warning("Skipping size summary: %s", e) return if not isinstance(data, dict):