[script] Preserve source order of enum options in language schema (#16371)

This commit is contained in:
Jesse Hills
2026-05-13 06:28:39 +12:00
committed by GitHub
parent 727c74da3f
commit 76ce45c59e
2 changed files with 107 additions and 1 deletions

View File

@@ -119,7 +119,15 @@ from esphome.util import Registry # noqa: E402
def sort_obj(obj):
if isinstance(obj, dict):
return {k: sort_obj(v) for k, v in sorted(obj.items(), key=lambda x: str(x[0]))}
is_enum = obj.get(S_TYPE) == "enum"
result = {}
for k, v in sorted(obj.items(), key=lambda x: str(x[0])):
if is_enum and k == "values" and isinstance(v, dict):
# Preserve source order of enum options
result[k] = {vk: sort_obj(vv) for vk, vv in v.items()}
else:
result[k] = sort_obj(v)
return result
if isinstance(obj, list):
return [sort_obj(item) for item in obj]
return obj