Add EntityFeature enum to Lock (#69118)
This commit is contained in:
parent
ea148a1b8e
commit
721db6d962
4 changed files with 18 additions and 9 deletions
|
@ -3,7 +3,7 @@ from __future__ import annotations
|
|||
|
||||
import asyncio
|
||||
|
||||
from homeassistant.components.lock import SUPPORT_OPEN, LockEntity
|
||||
from homeassistant.components.lock import LockEntity, LockEntityFeature
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import (
|
||||
STATE_JAMMED,
|
||||
|
@ -60,7 +60,7 @@ class DemoLock(LockEntity):
|
|||
"""Initialize the lock."""
|
||||
self._attr_name = name
|
||||
if openable:
|
||||
self._attr_supported_features = SUPPORT_OPEN
|
||||
self._attr_supported_features = LockEntityFeature.OPEN
|
||||
self._state = state
|
||||
self._openable = openable
|
||||
self._jam_on_operation = jam_on_operation
|
||||
|
@ -113,5 +113,5 @@ class DemoLock(LockEntity):
|
|||
def supported_features(self):
|
||||
"""Flag supported features."""
|
||||
if self._openable:
|
||||
return SUPPORT_OPEN
|
||||
return LockEntityFeature.OPEN
|
||||
return 0
|
||||
|
|
|
@ -3,6 +3,7 @@ from __future__ import annotations
|
|||
|
||||
from dataclasses import dataclass
|
||||
from datetime import timedelta
|
||||
from enum import IntEnum
|
||||
import functools as ft
|
||||
import logging
|
||||
from typing import Any, final
|
||||
|
@ -46,7 +47,15 @@ MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10)
|
|||
|
||||
LOCK_SERVICE_SCHEMA = make_entity_service_schema({vol.Optional(ATTR_CODE): cv.string})
|
||||
|
||||
# Bitfield of features supported by the lock entity
|
||||
|
||||
class LockEntityFeature(IntEnum):
|
||||
"""Supported features of the lock entity."""
|
||||
|
||||
OPEN = 1
|
||||
|
||||
|
||||
# The SUPPORT_OPEN constant is deprecated as of Home Assistant 2022.5.
|
||||
# Please use the LockEntityFeature enum instead.
|
||||
SUPPORT_OPEN = 1
|
||||
|
||||
PROP_TO_ATTR = {"changed_by": ATTR_CHANGED_BY, "code_format": ATTR_CODE_FORMAT}
|
||||
|
|
|
@ -18,7 +18,7 @@ from homeassistant.helpers import entity_registry
|
|||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.helpers.entity import get_supported_features
|
||||
|
||||
from . import DOMAIN, SUPPORT_OPEN
|
||||
from . import DOMAIN, LockEntityFeature
|
||||
|
||||
ACTION_TYPES = {"lock", "unlock", "open"}
|
||||
|
||||
|
@ -54,7 +54,7 @@ async def async_get_actions(
|
|||
actions.append({**base_action, CONF_TYPE: "lock"})
|
||||
actions.append({**base_action, CONF_TYPE: "unlock"})
|
||||
|
||||
if supported_features & (SUPPORT_OPEN):
|
||||
if supported_features & (LockEntityFeature.OPEN):
|
||||
actions.append({**base_action, CONF_TYPE: "open"})
|
||||
|
||||
return actions
|
||||
|
|
|
@ -3,7 +3,7 @@ import pytest
|
|||
|
||||
import homeassistant.components.automation as automation
|
||||
from homeassistant.components.device_automation import DeviceAutomationType
|
||||
from homeassistant.components.lock import DOMAIN, SUPPORT_OPEN
|
||||
from homeassistant.components.lock import DOMAIN, LockEntityFeature
|
||||
from homeassistant.helpers import device_registry
|
||||
from homeassistant.setup import async_setup_component
|
||||
|
||||
|
@ -34,9 +34,9 @@ def entity_reg(hass):
|
|||
"set_state,features_reg,features_state,expected_action_types",
|
||||
[
|
||||
(False, 0, 0, []),
|
||||
(False, SUPPORT_OPEN, 0, ["open"]),
|
||||
(False, LockEntityFeature.OPEN, 0, ["open"]),
|
||||
(True, 0, 0, []),
|
||||
(True, 0, SUPPORT_OPEN, ["open"]),
|
||||
(True, 0, LockEntityFeature.OPEN, ["open"]),
|
||||
],
|
||||
)
|
||||
async def test_get_actions(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue