From 67eec208bd962c7ccb3c1163795362cf206c9fcb Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Tue, 7 Apr 2026 16:01:05 -1000 Subject: [PATCH] [yaml] Add IncludeFile representer to ESPHomeDumper The deferred IncludeFile objects introduced in #12213 could not be serialized by the YAML dumper, causing test_build_components to fail when merging configs that contain !include package references. Uses add_multi_representer to also match the dynamically-created ESPHomeDataBase subclass produced by add_class_to_obj. --- esphome/yaml_util.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/esphome/yaml_util.py b/esphome/yaml_util.py index c621428196..19bbca61f8 100644 --- a/esphome/yaml_util.py +++ b/esphome/yaml_util.py @@ -754,6 +754,9 @@ class ESPHomeDumper(yaml.SafeDumper): def represent_remove(self, value): return self.represent_scalar(tag="!remove", value=value.value) + def represent_include_file(self, value): + return self.represent_scalar(tag="!include", value=value.file.as_posix()) + def represent_id(self, value): if is_secret(value.id): return self.represent_secret(value.id) @@ -785,3 +788,4 @@ ESPHomeDumper.add_multi_representer(Remove, ESPHomeDumper.represent_remove) ESPHomeDumper.add_multi_representer(core.ID, ESPHomeDumper.represent_id) ESPHomeDumper.add_multi_representer(uuid.UUID, ESPHomeDumper.represent_stringify) ESPHomeDumper.add_multi_representer(Path, ESPHomeDumper.represent_stringify) +ESPHomeDumper.add_multi_representer(IncludeFile, ESPHomeDumper.represent_include_file)