Rename trigger behavior options#172348
Merged
Merged
Conversation
12 tasks
Contributor
There was a problem hiding this comment.
Pull request overview
Renames the Labs purpose-specific trigger behavior option keys to better reflect their semantics (any → each, last → all) and updates validation, selectors, defaults, and tests accordingly.
Changes:
- Update
homeassistant.helpers.triggerto usebehavior: each|first|all(defaulteach) instead ofany|first|last. - Update the automation behavior selector to expose
each/allfor trigger mode and adjust selector tests. - Update integration
triggers.yamldefaults and refactor all affected tests/helpers to use the new option keys and helper names.
Reviewed changes
Copilot reviewed 71 out of 71 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| homeassistant/helpers/trigger.py | Renames supported trigger behavior option values and updates trigger validation/logic defaults. |
| homeassistant/helpers/selector.py | Updates automation behavior selector options for trigger mode (adds each, keeps any for condition mode). |
| homeassistant/components/air_quality/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/alarm_control_panel/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/assist_satellite/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/battery/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/climate/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/counter/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/cover/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/door/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/fan/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/garage_door/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/gate/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/humidifier/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/humidity/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/illuminance/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/lawn_mower/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/light/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/lock/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/media_player/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/moisture/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/motion/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/occupancy/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/power/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/remote/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/schedule/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/siren/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/switch/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/temperature/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/timer/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/update/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/vacuum/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/valve/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/water_heater/triggers.yaml | Updates default trigger behavior to each. |
| homeassistant/components/window/triggers.yaml | Updates default trigger behavior to each. |
| tests/helpers/test_trigger.py | Updates helper-trigger tests to use BEHAVIOR_EACH/ALL constants and renamed semantics. |
| tests/helpers/test_selector.py | Updates selector tests for new trigger behavior choices (each/all) and removed ones (any/last) in trigger mode. |
| tests/components/common.py | Renames shared trigger test helpers (assert_trigger_behavior_any/last → ...each/all) and updates behavior validation loop. |
| tests/components/air_quality/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/alarm_control_panel/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/assist_satellite/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/battery/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/climate/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/counter/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/cover/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/door/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/fan/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/garage_door/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/gate/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/humidifier/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/humidity/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/illuminance/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/lawn_mower/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/light/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/lock/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/media_player/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/moisture/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/motion/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/occupancy/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/power/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/remote/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/schedule/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/siren/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/switch/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/temperature/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/timer/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/update/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/vacuum/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/valve/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/water_heater/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
| tests/components/window/test_trigger.py | Updates imports and behavior-specific trigger tests to each/all. |
Comment on lines
340
to
345
| ENTITY_STATE_TRIGGER_SCHEMA_FIRST_LAST = ENTITY_STATE_TRIGGER_SCHEMA.extend( | ||
| { | ||
| vol.Required(CONF_OPTIONS, default={}): { | ||
| vol.Required(ATTR_BEHAVIOR, default=BEHAVIOR_ANY): vol.In( | ||
| [BEHAVIOR_FIRST, BEHAVIOR_LAST, BEHAVIOR_ANY] | ||
| vol.Required(ATTR_BEHAVIOR, default=BEHAVIOR_EACH): vol.In( | ||
| [BEHAVIOR_FIRST, BEHAVIOR_ALL, BEHAVIOR_EACH] | ||
| ), |
Comment on lines
274
to
+285
| @@ -282,7 +282,7 @@ async def test_window_trigger_binary_sensor_behavior_last( | |||
| states: list[TriggerStateDescription], | |||
| ) -> None: | |||
| """Test window trigger fires when the last binary_sensor changes state.""" | |||
| await assert_trigger_behavior_last( | |||
| await assert_trigger_behavior_all( | |||
Comment on lines
367
to
+378
| @@ -375,7 +375,7 @@ async def test_water_heater_state_trigger_behavior_last( | |||
| states: list[TriggerStateDescription], | |||
| ) -> None: | |||
| """Test water heater state trigger fires on last entity change.""" | |||
| await assert_trigger_behavior_last( | |||
| await assert_trigger_behavior_all( | |||
bramkragten
approved these changes
May 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
Breaking change
The trigger behavior options for triggers in labs have been renamed. In your automations and scripts, replace
behavior: anywithbehavior: eachandbehavior: lastwithbehavior: all.Proposed change
Rename trigger behavior options as requested in #166950
Type 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: