mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 21:27:38 +00:00
Start deprecation vacuum constants for feature flags (#126354)
This commit is contained in:
parent
283033f902
commit
ef88425d25
@ -23,6 +23,12 @@ from homeassistant.const import ( # noqa: F401 # STATE_PAUSED/IDLE are API
|
|||||||
)
|
)
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers import config_validation as cv
|
from homeassistant.helpers import config_validation as cv
|
||||||
|
from homeassistant.helpers.deprecation import (
|
||||||
|
DeprecatedConstantEnum,
|
||||||
|
all_with_deprecated_constants,
|
||||||
|
check_if_deprecated_constant,
|
||||||
|
dir_with_deprecated_constants,
|
||||||
|
)
|
||||||
from homeassistant.helpers.entity import Entity, EntityDescription
|
from homeassistant.helpers.entity import Entity, EntityDescription
|
||||||
from homeassistant.helpers.entity_component import EntityComponent
|
from homeassistant.helpers.entity_component import EntityComponent
|
||||||
from homeassistant.helpers.icon import icon_for_battery_level
|
from homeassistant.helpers.icon import icon_for_battery_level
|
||||||
@ -84,20 +90,38 @@ class VacuumEntityFeature(IntFlag):
|
|||||||
|
|
||||||
# These SUPPORT_* constants are deprecated as of Home Assistant 2022.5.
|
# These SUPPORT_* constants are deprecated as of Home Assistant 2022.5.
|
||||||
# Please use the VacuumEntityFeature enum instead.
|
# Please use the VacuumEntityFeature enum instead.
|
||||||
SUPPORT_TURN_ON = 1
|
_DEPRECATED_SUPPORT_TURN_ON = DeprecatedConstantEnum(
|
||||||
SUPPORT_TURN_OFF = 2
|
VacuumEntityFeature.TURN_ON, "2025.10"
|
||||||
SUPPORT_PAUSE = 4
|
)
|
||||||
SUPPORT_STOP = 8
|
_DEPRECATED_SUPPORT_TURN_OFF = DeprecatedConstantEnum(
|
||||||
SUPPORT_RETURN_HOME = 16
|
VacuumEntityFeature.TURN_OFF, "2025.10"
|
||||||
SUPPORT_FAN_SPEED = 32
|
)
|
||||||
SUPPORT_BATTERY = 64
|
_DEPRECATED_SUPPORT_PAUSE = DeprecatedConstantEnum(VacuumEntityFeature.PAUSE, "2025.10")
|
||||||
SUPPORT_STATUS = 128
|
_DEPRECATED_SUPPORT_STOP = DeprecatedConstantEnum(VacuumEntityFeature.STOP, "2025.10")
|
||||||
SUPPORT_SEND_COMMAND = 256
|
_DEPRECATED_SUPPORT_RETURN_HOME = DeprecatedConstantEnum(
|
||||||
SUPPORT_LOCATE = 512
|
VacuumEntityFeature.RETURN_HOME, "2025.10"
|
||||||
SUPPORT_CLEAN_SPOT = 1024
|
)
|
||||||
SUPPORT_MAP = 2048
|
_DEPRECATED_SUPPORT_FAN_SPEED = DeprecatedConstantEnum(
|
||||||
SUPPORT_STATE = 4096
|
VacuumEntityFeature.FAN_SPEED, "2025.10"
|
||||||
SUPPORT_START = 8192
|
)
|
||||||
|
_DEPRECATED_SUPPORT_BATTERY = DeprecatedConstantEnum(
|
||||||
|
VacuumEntityFeature.BATTERY, "2025.10"
|
||||||
|
)
|
||||||
|
_DEPRECATED_SUPPORT_STATUS = DeprecatedConstantEnum(
|
||||||
|
VacuumEntityFeature.STATUS, "2025.10"
|
||||||
|
)
|
||||||
|
_DEPRECATED_SUPPORT_SEND_COMMAND = DeprecatedConstantEnum(
|
||||||
|
VacuumEntityFeature.SEND_COMMAND, "2025.10"
|
||||||
|
)
|
||||||
|
_DEPRECATED_SUPPORT_LOCATE = DeprecatedConstantEnum(
|
||||||
|
VacuumEntityFeature.LOCATE, "2025.10"
|
||||||
|
)
|
||||||
|
_DEPRECATED_SUPPORT_CLEAN_SPOT = DeprecatedConstantEnum(
|
||||||
|
VacuumEntityFeature.CLEAN_SPOT, "2025.10"
|
||||||
|
)
|
||||||
|
_DEPRECATED_SUPPORT_MAP = DeprecatedConstantEnum(VacuumEntityFeature.MAP, "2025.10")
|
||||||
|
_DEPRECATED_SUPPORT_STATE = DeprecatedConstantEnum(VacuumEntityFeature.STATE, "2025.10")
|
||||||
|
_DEPRECATED_SUPPORT_START = DeprecatedConstantEnum(VacuumEntityFeature.START, "2025.10")
|
||||||
|
|
||||||
# mypy: disallow-any-generics
|
# mypy: disallow-any-generics
|
||||||
|
|
||||||
@ -381,3 +405,13 @@ class StateVacuumEntity(
|
|||||||
This method must be run in the event loop.
|
This method must be run in the event loop.
|
||||||
"""
|
"""
|
||||||
await self.hass.async_add_executor_job(self.pause)
|
await self.hass.async_add_executor_job(self.pause)
|
||||||
|
|
||||||
|
|
||||||
|
# As we import deprecated constants from the const module, we need to add these two functions
|
||||||
|
# otherwise this module will be logged for using deprecated constants and not the custom component
|
||||||
|
# These can be removed if no deprecated constant are in this module anymore
|
||||||
|
__getattr__ = partial(check_if_deprecated_constant, module_globals=globals())
|
||||||
|
__dir__ = partial(
|
||||||
|
dir_with_deprecated_constants, module_globals_keys=[*globals().keys()]
|
||||||
|
)
|
||||||
|
__all__ = all_with_deprecated_constants(globals())
|
||||||
|
@ -2,10 +2,13 @@
|
|||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from enum import Enum
|
||||||
|
from types import ModuleType
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
from homeassistant.components import vacuum
|
||||||
from homeassistant.components.vacuum import (
|
from homeassistant.components.vacuum import (
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
SERVICE_CLEAN_SPOT,
|
SERVICE_CLEAN_SPOT,
|
||||||
@ -30,11 +33,45 @@ from . import MockVacuum, help_async_setup_entry_init, help_async_unload_entry
|
|||||||
from tests.common import (
|
from tests.common import (
|
||||||
MockConfigEntry,
|
MockConfigEntry,
|
||||||
MockModule,
|
MockModule,
|
||||||
|
help_test_all,
|
||||||
|
import_and_test_deprecated_constant_enum,
|
||||||
mock_integration,
|
mock_integration,
|
||||||
setup_test_component_platform,
|
setup_test_component_platform,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def _create_tuples(enum: type[Enum], constant_prefix: str) -> list[tuple[Enum, str]]:
|
||||||
|
return [(enum_field, constant_prefix) for enum_field in enum if enum_field]
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
"module",
|
||||||
|
[vacuum],
|
||||||
|
)
|
||||||
|
def test_all(module: ModuleType) -> None:
|
||||||
|
"""Test module.__all__ is correctly set."""
|
||||||
|
help_test_all(module)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
("enum", "constant_prefix"), _create_tuples(vacuum.VacuumEntityFeature, "SUPPORT_")
|
||||||
|
)
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
"module",
|
||||||
|
[vacuum],
|
||||||
|
)
|
||||||
|
def test_deprecated_constants(
|
||||||
|
caplog: pytest.LogCaptureFixture,
|
||||||
|
enum: Enum,
|
||||||
|
constant_prefix: str,
|
||||||
|
module: ModuleType,
|
||||||
|
) -> None:
|
||||||
|
"""Test deprecated constants."""
|
||||||
|
import_and_test_deprecated_constant_enum(
|
||||||
|
caplog, module, enum, constant_prefix, "2025.10"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
("service", "expected_state"),
|
("service", "expected_state"),
|
||||||
[
|
[
|
||||||
|
Loading…
x
Reference in New Issue
Block a user