Allow nested schema validation in event automation trigger #126771
+61
−8
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Proposed change
While trying to build an automation for motion controlled lights that disables itself if some other source changes a light entity, I stumbled upon something unexpected.
^ This trigger triggered on the following event (taken from the trace):
It did so, because the schema built by the trigger does not care about nested dicts.
Not being a nested schema might be intentional so this might introduce a performance penalty and might not be desired.
If that is the case, maybe it would make sense to limit the nesting depth, though if not, I think I'd keep it without a depth limit.
An alternative solution could be to update the docs, warn about this caveat and instead further validate with a template condition. Though then you get an automation that triggers all the time so might also not be desirable.
I would argue that you'd want the
event
trigger to work with at least thecall_service
events for core servicesType of change
Additional information
Checklist
ruff format homeassistant tests
)If user exposed functionality or configuration variables are added/changed:
If the code communicates with devices, web services, or third-party tools:
Updated and included derived files by running:
python3 -m script.hassfest
.requirements_all.txt
.Updated by running
python3 -m script.gen_requirements_all
.To help with the load of incoming pull requests: