[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.
This commit is contained in:
J. Nick Koston
2026-04-07 16:01:05 -10:00
parent de7f081799
commit 67eec208bd
+4
View File
@@ -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)