Fix websocket_api _state_diff_event using json_encoder_default (#96905)

This commit is contained in:
J. Nick Koston 2023-07-19 11:22:43 -05:00 committed by GitHub
parent c80085367d
commit dae264f79e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 1 deletions

View file

@ -180,7 +180,10 @@ def _state_diff(
if old_attributes.get(key) != value:
additions.setdefault(COMPRESSED_STATE_ATTRIBUTES, {})[key] = value
if removed := set(old_attributes).difference(new_attributes):
diff[STATE_DIFF_REMOVALS] = {COMPRESSED_STATE_ATTRIBUTES: removed}
# sets are not JSON serializable by default so we convert to list
# here if there are any values to avoid jumping into the json_encoder_default
# for every state diff with a removed attribute
diff[STATE_DIFF_REMOVALS] = {COMPRESSED_STATE_ATTRIBUTES: list(removed)}
return {ENTITY_EVENT_CHANGE: {new_state.entity_id: diff}}