mirror of
https://github.com/home-assistant/core.git
synced 2026-09-26 11:45:55 +01:00
Migrate alarm control panel entity attributes to StrEnum (#174590)
This commit is contained in:
@@ -8,7 +8,7 @@ from propcache.api import cached_property
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import (
|
||||
from homeassistant.const import ( # noqa: F401
|
||||
ATTR_CODE,
|
||||
ATTR_CODE_FORMAT,
|
||||
SERVICE_ALARM_ARM_AWAY,
|
||||
@@ -28,11 +28,12 @@ from homeassistant.helpers.entity_component import EntityComponent
|
||||
from homeassistant.helpers.typing import ConfigType
|
||||
from homeassistant.util.hass_dict import HassKey
|
||||
|
||||
from .const import (
|
||||
from .const import ( # noqa: F401
|
||||
ATTR_CHANGED_BY,
|
||||
ATTR_CODE_ARM_REQUIRED,
|
||||
DOMAIN,
|
||||
AlarmControlPanelEntityFeature,
|
||||
AlarmControlPanelEntityStateAttribute,
|
||||
AlarmControlPanelState,
|
||||
CodeFormat,
|
||||
)
|
||||
@@ -303,9 +304,11 @@ class AlarmControlPanelEntity(Entity, cached_properties=CACHED_PROPERTIES_WITH_A
|
||||
def state_attributes(self) -> dict[str, Any] | None:
|
||||
"""Return the state attributes."""
|
||||
return {
|
||||
ATTR_CODE_FORMAT: self.code_format,
|
||||
ATTR_CHANGED_BY: self.changed_by,
|
||||
ATTR_CODE_ARM_REQUIRED: self.code_arm_required,
|
||||
AlarmControlPanelEntityStateAttribute.CODE_FORMAT: self.code_format,
|
||||
AlarmControlPanelEntityStateAttribute.CHANGED_BY: self.changed_by,
|
||||
AlarmControlPanelEntityStateAttribute.CODE_ARM_REQUIRED: (
|
||||
self.code_arm_required
|
||||
),
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
@@ -9,6 +9,14 @@ ATTR_CHANGED_BY: Final = "changed_by"
|
||||
ATTR_CODE_ARM_REQUIRED: Final = "code_arm_required"
|
||||
|
||||
|
||||
class AlarmControlPanelEntityStateAttribute(StrEnum):
|
||||
"""State attributes for alarm control panel entities."""
|
||||
|
||||
CODE_FORMAT = "code_format"
|
||||
CHANGED_BY = "changed_by"
|
||||
CODE_ARM_REQUIRED = "code_arm_required"
|
||||
|
||||
|
||||
class AlarmControlPanelState(StrEnum):
|
||||
"""Alarm control panel entity states."""
|
||||
|
||||
|
||||
@@ -39,9 +39,9 @@
|
||||
# name: test_alarm_control_panel[amax_3000-None][alarm_control_panel.area1-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'changed_by': None,
|
||||
'code_arm_required': False,
|
||||
'code_format': None,
|
||||
<AlarmControlPanelEntityStateAttribute.CHANGED_BY: 'changed_by'>: None,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_ARM_REQUIRED: 'code_arm_required'>: False,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_FORMAT: 'code_format'>: None,
|
||||
'friendly_name': 'Area1',
|
||||
'supported_features': <AlarmControlPanelEntityFeature: 3>,
|
||||
}),
|
||||
@@ -93,9 +93,9 @@
|
||||
# name: test_alarm_control_panel[b5512-None][alarm_control_panel.area1-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'changed_by': None,
|
||||
'code_arm_required': False,
|
||||
'code_format': None,
|
||||
<AlarmControlPanelEntityStateAttribute.CHANGED_BY: 'changed_by'>: None,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_ARM_REQUIRED: 'code_arm_required'>: False,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_FORMAT: 'code_format'>: None,
|
||||
'friendly_name': 'Area1',
|
||||
'supported_features': <AlarmControlPanelEntityFeature: 3>,
|
||||
}),
|
||||
@@ -147,9 +147,9 @@
|
||||
# name: test_alarm_control_panel[solution_3000-None][alarm_control_panel.area1-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'changed_by': None,
|
||||
'code_arm_required': False,
|
||||
'code_format': None,
|
||||
<AlarmControlPanelEntityStateAttribute.CHANGED_BY: 'changed_by'>: None,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_ARM_REQUIRED: 'code_arm_required'>: False,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_FORMAT: 'code_format'>: None,
|
||||
'friendly_name': 'Area1',
|
||||
'supported_features': <AlarmControlPanelEntityFeature: 3>,
|
||||
}),
|
||||
|
||||
@@ -39,9 +39,9 @@
|
||||
# name: test_alarm_control_panel[sensor_payload0-alarm_system_payload0][alarm_control_panel.keypad-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'changed_by': None,
|
||||
'code_arm_required': True,
|
||||
'code_format': <CodeFormat.NUMBER: 'number'>,
|
||||
<AlarmControlPanelEntityStateAttribute.CHANGED_BY: 'changed_by'>: None,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_ARM_REQUIRED: 'code_arm_required'>: True,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_FORMAT: 'code_format'>: <CodeFormat.NUMBER: 'number'>,
|
||||
'friendly_name': 'Keypad',
|
||||
'supported_features': <AlarmControlPanelEntityFeature: 7>,
|
||||
}),
|
||||
|
||||
@@ -39,9 +39,9 @@
|
||||
# name: test_alarm_control_panels[alarm_control_panel.direct_panel_https_1_1_1_1_443_api_v2_area_1-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'changed_by': None,
|
||||
'code_arm_required': False,
|
||||
'code_format': <CodeFormat.NUMBER: 'number'>,
|
||||
<AlarmControlPanelEntityStateAttribute.CHANGED_BY: 'changed_by'>: None,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_ARM_REQUIRED: 'code_arm_required'>: False,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_FORMAT: 'code_format'>: <CodeFormat.NUMBER: 'number'>,
|
||||
'friendly_name': 'Direct Panel https://1.1.1.1:443/api/v2 AREA 1',
|
||||
'supported_features': <AlarmControlPanelEntityFeature: 2>,
|
||||
}),
|
||||
@@ -93,9 +93,9 @@
|
||||
# name: test_alarm_control_panels[alarm_control_panel.direct_panel_https_1_1_1_1_443_api_v2_area_2-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'changed_by': None,
|
||||
'code_arm_required': False,
|
||||
'code_format': <CodeFormat.NUMBER: 'number'>,
|
||||
<AlarmControlPanelEntityStateAttribute.CHANGED_BY: 'changed_by'>: None,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_ARM_REQUIRED: 'code_arm_required'>: False,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_FORMAT: 'code_format'>: <CodeFormat.NUMBER: 'number'>,
|
||||
'friendly_name': 'Direct Panel https://1.1.1.1:443/api/v2 AREA 2',
|
||||
'supported_features': <AlarmControlPanelEntityFeature: 2>,
|
||||
}),
|
||||
@@ -147,9 +147,9 @@
|
||||
# name: test_alarm_control_panels[alarm_control_panel.direct_panel_https_1_1_1_1_443_api_v2_area_3-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'changed_by': None,
|
||||
'code_arm_required': False,
|
||||
'code_format': <CodeFormat.NUMBER: 'number'>,
|
||||
<AlarmControlPanelEntityStateAttribute.CHANGED_BY: 'changed_by'>: None,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_ARM_REQUIRED: 'code_arm_required'>: False,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_FORMAT: 'code_format'>: <CodeFormat.NUMBER: 'number'>,
|
||||
'friendly_name': 'Direct Panel https://1.1.1.1:443/api/v2 AREA 3',
|
||||
'supported_features': <AlarmControlPanelEntityFeature: 2>,
|
||||
}),
|
||||
|
||||
@@ -39,9 +39,9 @@
|
||||
# name: test_alarm_control_panel_snapshot[alarm_control_panel.testhomee_status-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'changed_by': 'user - 4',
|
||||
'code_arm_required': False,
|
||||
'code_format': None,
|
||||
<AlarmControlPanelEntityStateAttribute.CHANGED_BY: 'changed_by'>: 'user - 4',
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_ARM_REQUIRED: 'code_arm_required'>: False,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_FORMAT: 'code_format'>: None,
|
||||
'friendly_name': 'TestHomee Status',
|
||||
'supported_features': <AlarmControlPanelEntityFeature: 39>,
|
||||
}),
|
||||
|
||||
@@ -1587,9 +1587,9 @@
|
||||
}),
|
||||
'state': dict({
|
||||
'attributes': dict({
|
||||
'changed_by': None,
|
||||
'code_arm_required': False,
|
||||
'code_format': None,
|
||||
<AlarmControlPanelEntityStateAttribute.CHANGED_BY: 'changed_by'>: None,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_ARM_REQUIRED: 'code_arm_required'>: False,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_FORMAT: 'code_format'>: None,
|
||||
'friendly_name': 'Aqara-Hub-E1-00A0 Security System',
|
||||
'supported_features': <AlarmControlPanelEntityFeature: 7>,
|
||||
}),
|
||||
@@ -1987,9 +1987,9 @@
|
||||
}),
|
||||
'state': dict({
|
||||
'attributes': dict({
|
||||
'changed_by': None,
|
||||
'code_arm_required': False,
|
||||
'code_format': None,
|
||||
<AlarmControlPanelEntityStateAttribute.CHANGED_BY: 'changed_by'>: None,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_ARM_REQUIRED: 'code_arm_required'>: False,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_FORMAT: 'code_format'>: None,
|
||||
'friendly_name': 'Aqara Hub-1563 Security System',
|
||||
'supported_features': <AlarmControlPanelEntityFeature: 7>,
|
||||
}),
|
||||
|
||||
@@ -39,9 +39,9 @@
|
||||
# name: test_alarm_control_panel[alarm_control_panel.home-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'changed_by': None,
|
||||
'code_arm_required': True,
|
||||
'code_format': <CodeFormat.NUMBER: 'number'>,
|
||||
<AlarmControlPanelEntityStateAttribute.CHANGED_BY: 'changed_by'>: None,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_ARM_REQUIRED: 'code_arm_required'>: True,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_FORMAT: 'code_format'>: <CodeFormat.NUMBER: 'number'>,
|
||||
'friendly_name': 'Home',
|
||||
'supported_features': <AlarmControlPanelEntityFeature: 3>,
|
||||
}),
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
# name: test_setup_config_entry
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'changed_by': None,
|
||||
'code_arm_required': True,
|
||||
'code_format': <CodeFormat.NUMBER: 'number'>,
|
||||
<AlarmControlPanelEntityStateAttribute.CHANGED_BY: 'changed_by'>: None,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_ARM_REQUIRED: 'code_arm_required'>: True,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_FORMAT: 'code_format'>: <CodeFormat.NUMBER: 'number'>,
|
||||
'friendly_name': 'My template',
|
||||
'supported_features': <AlarmControlPanelEntityFeature: 0>,
|
||||
}),
|
||||
|
||||
@@ -39,9 +39,9 @@
|
||||
# name: test_entities[alarm_control_panel.test-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'changed_by': None,
|
||||
'code_arm_required': False,
|
||||
'code_format': None,
|
||||
<AlarmControlPanelEntityStateAttribute.CHANGED_BY: 'changed_by'>: None,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_ARM_REQUIRED: 'code_arm_required'>: False,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_FORMAT: 'code_format'>: None,
|
||||
'friendly_name': 'test',
|
||||
'supported_features': <AlarmControlPanelEntityFeature: 7>,
|
||||
}),
|
||||
@@ -93,9 +93,9 @@
|
||||
# name: test_entities[alarm_control_panel.test_partition_2-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'changed_by': None,
|
||||
'code_arm_required': False,
|
||||
'code_format': None,
|
||||
<AlarmControlPanelEntityStateAttribute.CHANGED_BY: 'changed_by'>: None,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_ARM_REQUIRED: 'code_arm_required'>: False,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_FORMAT: 'code_format'>: None,
|
||||
'friendly_name': 'test Partition 2',
|
||||
'supported_features': <AlarmControlPanelEntityFeature: 7>,
|
||||
}),
|
||||
|
||||
@@ -39,9 +39,9 @@
|
||||
# name: test_platform_setup_and_discovery[alarm_control_panel.c30-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'changed_by': None,
|
||||
'code_arm_required': False,
|
||||
'code_format': None,
|
||||
<AlarmControlPanelEntityStateAttribute.CHANGED_BY: 'changed_by'>: None,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_ARM_REQUIRED: 'code_arm_required'>: False,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_FORMAT: 'code_format'>: None,
|
||||
'friendly_name': 'C30',
|
||||
'supported_features': <AlarmControlPanelEntityFeature: 11>,
|
||||
}),
|
||||
@@ -93,9 +93,9 @@
|
||||
# name: test_platform_setup_and_discovery[alarm_control_panel.multifunction_alarm-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'changed_by': None,
|
||||
'code_arm_required': False,
|
||||
'code_format': None,
|
||||
<AlarmControlPanelEntityStateAttribute.CHANGED_BY: 'changed_by'>: None,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_ARM_REQUIRED: 'code_arm_required'>: False,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_FORMAT: 'code_format'>: None,
|
||||
'friendly_name': 'Multifunction alarm',
|
||||
'supported_features': <AlarmControlPanelEntityFeature: 11>,
|
||||
}),
|
||||
|
||||
@@ -39,9 +39,9 @@
|
||||
# name: test_alarm_control_panel[load_platforms0][alarm_control_panel.test_username-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'changed_by': None,
|
||||
'code_arm_required': False,
|
||||
'code_format': None,
|
||||
<AlarmControlPanelEntityStateAttribute.CHANGED_BY: 'changed_by'>: None,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_ARM_REQUIRED: 'code_arm_required'>: False,
|
||||
<AlarmControlPanelEntityStateAttribute.CODE_FORMAT: 'code_format'>: None,
|
||||
'friendly_name': 'test-username',
|
||||
'supported_features': <AlarmControlPanelEntityFeature: 3>,
|
||||
}),
|
||||
|
||||
Reference in New Issue
Block a user