Include deprecated constants in wildcard imports (#107114)

This commit is contained in:
Erik Montnemery 2024-01-05 11:46:45 +01:00 committed by Franck Nijhof
parent a7aa5c0e52
commit b8576b8091
No known key found for this signature in database
GPG key ID: D62583BA8AB11CA3
52 changed files with 438 additions and 137 deletions

View file

@ -24,6 +24,7 @@ from homeassistant.core import HomeAssistant
import homeassistant.helpers.config_validation as cv import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.config_validation import make_entity_service_schema from homeassistant.helpers.config_validation import make_entity_service_schema
from homeassistant.helpers.deprecation import ( from homeassistant.helpers.deprecation import (
all_with_deprecated_constants,
check_if_deprecated_constant, check_if_deprecated_constant,
dir_with_deprecated_constants, dir_with_deprecated_constants,
) )
@ -52,12 +53,6 @@ if TYPE_CHECKING:
else: else:
from homeassistant.backports.functools import cached_property from homeassistant.backports.functools import cached_property
# As we import constants of the cost module here, we need to add the following
# functions to check for deprecated constants again
# Both 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=globals())
_LOGGER: Final = logging.getLogger(__name__) _LOGGER: Final = logging.getLogger(__name__)
SCAN_INTERVAL: Final = timedelta(seconds=30) SCAN_INTERVAL: Final = timedelta(seconds=30)
@ -249,3 +244,13 @@ class AlarmControlPanelEntity(Entity, cached_properties=CACHED_PROPERTIES_WITH_A
ATTR_CHANGED_BY: self.changed_by, ATTR_CHANGED_BY: self.changed_by,
ATTR_CODE_ARM_REQUIRED: self.code_arm_required, ATTR_CODE_ARM_REQUIRED: self.code_arm_required,
} }
# As we import constants of the const module here, we need to add the following
# functions to check for deprecated constants again
# 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())

View file

@ -5,6 +5,7 @@ from typing import Final
from homeassistant.helpers.deprecation import ( from homeassistant.helpers.deprecation import (
DeprecatedConstantEnum, DeprecatedConstantEnum,
all_with_deprecated_constants,
check_if_deprecated_constant, check_if_deprecated_constant,
dir_with_deprecated_constants, dir_with_deprecated_constants,
) )
@ -60,10 +61,6 @@ _DEPRECATED_SUPPORT_ALARM_ARM_VACATION: Final = DeprecatedConstantEnum(
AlarmControlPanelEntityFeature.ARM_VACATION, "2025.1" AlarmControlPanelEntityFeature.ARM_VACATION, "2025.1"
) )
# Both 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=globals())
CONDITION_TRIGGERED: Final = "is_triggered" CONDITION_TRIGGERED: Final = "is_triggered"
CONDITION_DISARMED: Final = "is_disarmed" CONDITION_DISARMED: Final = "is_disarmed"
CONDITION_ARMED_HOME: Final = "is_armed_home" CONDITION_ARMED_HOME: Final = "is_armed_home"
@ -71,3 +68,10 @@ CONDITION_ARMED_AWAY: Final = "is_armed_away"
CONDITION_ARMED_NIGHT: Final = "is_armed_night" CONDITION_ARMED_NIGHT: Final = "is_armed_night"
CONDITION_ARMED_VACATION: Final = "is_armed_vacation" CONDITION_ARMED_VACATION: Final = "is_armed_vacation"
CONDITION_ARMED_CUSTOM_BYPASS: Final = "is_armed_custom_bypass" CONDITION_ARMED_CUSTOM_BYPASS: Final = "is_armed_custom_bypass"
# 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())

View file

@ -58,6 +58,7 @@ from homeassistant.helpers import condition
import homeassistant.helpers.config_validation as cv import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.deprecation import ( from homeassistant.helpers.deprecation import (
DeprecatedConstant, DeprecatedConstant,
all_with_deprecated_constants,
check_if_deprecated_constant, check_if_deprecated_constant,
dir_with_deprecated_constants, dir_with_deprecated_constants,
) )
@ -147,10 +148,6 @@ _DEPRECATED_AutomationTriggerInfo = DeprecatedConstant(
TriggerInfo, "TriggerInfo", "2025.1" TriggerInfo, "TriggerInfo", "2025.1"
) )
# Both 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=globals())
@bind_hass @bind_hass
def is_on(hass: HomeAssistant, entity_id: str) -> bool: def is_on(hass: HomeAssistant, entity_id: str) -> bool:
@ -1108,3 +1105,11 @@ def websocket_config(
"config": automation.raw_config, "config": automation.raw_config,
}, },
) )
# 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())

View file

@ -19,6 +19,7 @@ from homeassistant.helpers.config_validation import ( # noqa: F401
) )
from homeassistant.helpers.deprecation import ( from homeassistant.helpers.deprecation import (
DeprecatedConstantEnum, DeprecatedConstantEnum,
all_with_deprecated_constants,
check_if_deprecated_constant, check_if_deprecated_constant,
dir_with_deprecated_constants, dir_with_deprecated_constants,
) )
@ -218,10 +219,6 @@ _DEPRECATED_DEVICE_CLASS_WINDOW = DeprecatedConstantEnum(
BinarySensorDeviceClass.WINDOW, "2025.1" BinarySensorDeviceClass.WINDOW, "2025.1"
) )
# Both 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=globals())
# mypy: disallow-any-generics # mypy: disallow-any-generics
@ -303,3 +300,11 @@ class BinarySensorEntity(Entity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_)
if (is_on := self.is_on) is None: if (is_on := self.is_on) is None:
return None return None
return STATE_ON if is_on else STATE_OFF return STATE_ON if is_on else STATE_OFF
# 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())

View file

@ -54,6 +54,7 @@ from homeassistant.helpers.config_validation import ( # noqa: F401
) )
from homeassistant.helpers.deprecation import ( from homeassistant.helpers.deprecation import (
DeprecatedConstantEnum, DeprecatedConstantEnum,
all_with_deprecated_constants,
check_if_deprecated_constant, check_if_deprecated_constant,
dir_with_deprecated_constants, dir_with_deprecated_constants,
) )
@ -123,10 +124,6 @@ _DEPRECATED_SUPPORT_STREAM: Final = DeprecatedConstantEnum(
CameraEntityFeature.STREAM, "2025.1" CameraEntityFeature.STREAM, "2025.1"
) )
# Both 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=globals())
RTSP_PREFIXES = {"rtsp://", "rtsps://", "rtmp://"} RTSP_PREFIXES = {"rtsp://", "rtsps://", "rtmp://"}
DEFAULT_CONTENT_TYPE: Final = "image/jpeg" DEFAULT_CONTENT_TYPE: Final = "image/jpeg"
@ -1082,3 +1079,11 @@ async def async_handle_record_service(
duration=service_call.data[CONF_DURATION], duration=service_call.data[CONF_DURATION],
lookback=service_call.data[CONF_LOOKBACK], lookback=service_call.data[CONF_LOOKBACK],
) )
# 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())

View file

@ -5,6 +5,7 @@ from typing import Final
from homeassistant.helpers.deprecation import ( from homeassistant.helpers.deprecation import (
DeprecatedConstantEnum, DeprecatedConstantEnum,
all_with_deprecated_constants,
check_if_deprecated_constant, check_if_deprecated_constant,
dir_with_deprecated_constants, dir_with_deprecated_constants,
) )
@ -47,6 +48,9 @@ _DEPRECATED_STREAM_TYPE_HLS = DeprecatedConstantEnum(StreamType.HLS, "2025.1")
_DEPRECATED_STREAM_TYPE_WEB_RTC = DeprecatedConstantEnum(StreamType.WEB_RTC, "2025.1") _DEPRECATED_STREAM_TYPE_WEB_RTC = DeprecatedConstantEnum(StreamType.WEB_RTC, "2025.1")
# Both can be removed if no deprecated constant are in this module anymore # These can be removed if no deprecated constant are in this module anymore
__getattr__ = partial(check_if_deprecated_constant, module_globals=globals()) __getattr__ = partial(check_if_deprecated_constant, module_globals=globals())
__dir__ = partial(dir_with_deprecated_constants, module_globals=globals()) __dir__ = partial(
dir_with_deprecated_constants, module_globals_keys=[*globals().keys()]
)
__all__ = all_with_deprecated_constants(globals())

View file

@ -28,6 +28,7 @@ from homeassistant.helpers.config_validation import ( # noqa: F401
make_entity_service_schema, make_entity_service_schema,
) )
from homeassistant.helpers.deprecation import ( from homeassistant.helpers.deprecation import (
all_with_deprecated_constants,
check_if_deprecated_constant, check_if_deprecated_constant,
dir_with_deprecated_constants, dir_with_deprecated_constants,
) )
@ -141,12 +142,6 @@ SET_TEMPERATURE_SCHEMA = vol.All(
), ),
) )
# 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
# Both can be removed if no deprecated constant are in this module anymore
__getattr__ = ft.partial(check_if_deprecated_constant, module_globals=globals())
__dir__ = ft.partial(dir_with_deprecated_constants, module_globals=globals())
# mypy: disallow-any-generics # mypy: disallow-any-generics
@ -734,3 +729,13 @@ async def async_service_temperature_set(
kwargs[value] = temp kwargs[value] = temp
await entity.async_set_temperature(**kwargs) await entity.async_set_temperature(**kwargs)
# 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__ = ft.partial(check_if_deprecated_constant, module_globals=globals())
__dir__ = ft.partial(
dir_with_deprecated_constants, module_globals_keys=[*globals().keys()]
)
__all__ = all_with_deprecated_constants(globals())

View file

@ -5,6 +5,7 @@ from functools import partial
from homeassistant.helpers.deprecation import ( from homeassistant.helpers.deprecation import (
DeprecatedConstantEnum, DeprecatedConstantEnum,
all_with_deprecated_constants,
check_if_deprecated_constant, check_if_deprecated_constant,
dir_with_deprecated_constants, dir_with_deprecated_constants,
) )
@ -188,6 +189,9 @@ _DEPRECATED_SUPPORT_AUX_HEAT = DeprecatedConstantEnum(
ClimateEntityFeature.AUX_HEAT, "2025.1" ClimateEntityFeature.AUX_HEAT, "2025.1"
) )
# Both can be removed if no deprecated constant are in this module anymore # These can be removed if no deprecated constant are in this module anymore
__getattr__ = partial(check_if_deprecated_constant, module_globals=globals()) __getattr__ = partial(check_if_deprecated_constant, module_globals=globals())
__dir__ = partial(dir_with_deprecated_constants, module_globals=globals()) __dir__ = partial(
dir_with_deprecated_constants, module_globals_keys=[*globals().keys()]
)
__all__ = all_with_deprecated_constants(globals())

View file

@ -34,6 +34,7 @@ from homeassistant.helpers.config_validation import ( # noqa: F401
) )
from homeassistant.helpers.deprecation import ( from homeassistant.helpers.deprecation import (
DeprecatedConstantEnum, DeprecatedConstantEnum,
all_with_deprecated_constants,
check_if_deprecated_constant, check_if_deprecated_constant,
dir_with_deprecated_constants, dir_with_deprecated_constants,
) )
@ -143,10 +144,6 @@ _DEPRECATED_SUPPORT_SET_TILT_POSITION = DeprecatedConstantEnum(
CoverEntityFeature.SET_TILT_POSITION, "2025.1" CoverEntityFeature.SET_TILT_POSITION, "2025.1"
) )
# Both can be removed if no deprecated constant are in this module anymore
__getattr__ = ft.partial(check_if_deprecated_constant, module_globals=globals())
__dir__ = ft.partial(dir_with_deprecated_constants, module_globals=globals())
ATTR_CURRENT_POSITION = "current_position" ATTR_CURRENT_POSITION = "current_position"
ATTR_CURRENT_TILT_POSITION = "current_tilt_position" ATTR_CURRENT_TILT_POSITION = "current_tilt_position"
ATTR_POSITION = "position" ATTR_POSITION = "position"
@ -493,3 +490,11 @@ class CoverEntity(Entity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_):
if self._cover_is_last_toggle_direction_open: if self._cover_is_last_toggle_direction_open:
return fns["close"] return fns["close"]
return fns["open"] return fns["open"]
# These can be removed if no deprecated constant are in this module anymore
__getattr__ = ft.partial(check_if_deprecated_constant, module_globals=globals())
__dir__ = ft.partial(
dir_with_deprecated_constants, module_globals_keys=[*globals().keys()]
)
__all__ = all_with_deprecated_constants(globals())

View file

@ -6,6 +6,7 @@ from functools import partial
from homeassistant.const import ATTR_GPS_ACCURACY, STATE_HOME # noqa: F401 from homeassistant.const import ATTR_GPS_ACCURACY, STATE_HOME # noqa: F401
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers.deprecation import ( from homeassistant.helpers.deprecation import (
all_with_deprecated_constants,
check_if_deprecated_constant, check_if_deprecated_constant,
dir_with_deprecated_constants, dir_with_deprecated_constants,
) )
@ -57,12 +58,6 @@ from .legacy import ( # noqa: F401
see, see,
) )
# 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
# Both 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=globals())
@bind_hass @bind_hass
def is_on(hass: HomeAssistant, entity_id: str) -> bool: def is_on(hass: HomeAssistant, entity_id: str) -> bool:
@ -83,3 +78,13 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
await async_setup_legacy_integration(hass, config) await async_setup_legacy_integration(hass, config)
return True return True
# 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())

View file

@ -9,6 +9,7 @@ from typing import Final
from homeassistant.helpers.deprecation import ( from homeassistant.helpers.deprecation import (
DeprecatedConstantEnum, DeprecatedConstantEnum,
all_with_deprecated_constants,
check_if_deprecated_constant, check_if_deprecated_constant,
dir_with_deprecated_constants, dir_with_deprecated_constants,
) )
@ -44,10 +45,6 @@ _DEPRECATED_SOURCE_TYPE_BLUETOOTH_LE: Final = DeprecatedConstantEnum(
SourceType.BLUETOOTH_LE, "2025.1" SourceType.BLUETOOTH_LE, "2025.1"
) )
# Both 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=globals())
CONF_SCAN_INTERVAL: Final = "interval_seconds" CONF_SCAN_INTERVAL: Final = "interval_seconds"
SCAN_INTERVAL: Final = timedelta(seconds=12) SCAN_INTERVAL: Final = timedelta(seconds=12)
@ -71,3 +68,10 @@ ATTR_CONSIDER_HOME: Final = "consider_home"
ATTR_IP: Final = "ip" ATTR_IP: Final = "ip"
CONNECTED_DEVICE_REGISTERED: Final = "device_tracker_connected_device_registered" CONNECTED_DEVICE_REGISTERED: Final = "device_tracker_connected_device_registered"
# 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())

View file

@ -26,6 +26,7 @@ from homeassistant.helpers.config_validation import ( # noqa: F401
) )
from homeassistant.helpers.deprecation import ( from homeassistant.helpers.deprecation import (
DeprecatedConstantEnum, DeprecatedConstantEnum,
all_with_deprecated_constants,
check_if_deprecated_constant, check_if_deprecated_constant,
dir_with_deprecated_constants, dir_with_deprecated_constants,
) )
@ -76,10 +77,6 @@ _DEPRECATED_SUPPORT_PRESET_MODE = DeprecatedConstantEnum(
FanEntityFeature.PRESET_MODE, "2025.1" FanEntityFeature.PRESET_MODE, "2025.1"
) )
# Both can be removed if no deprecated constant are in this module anymore
__getattr__ = ft.partial(check_if_deprecated_constant, module_globals=globals())
__dir__ = ft.partial(dir_with_deprecated_constants, module_globals=globals())
SERVICE_INCREASE_SPEED = "increase_speed" SERVICE_INCREASE_SPEED = "increase_speed"
SERVICE_DECREASE_SPEED = "decrease_speed" SERVICE_DECREASE_SPEED = "decrease_speed"
SERVICE_OSCILLATE = "oscillate" SERVICE_OSCILLATE = "oscillate"
@ -471,3 +468,11 @@ class FanEntity(ToggleEntity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_):
if hasattr(self, "_attr_preset_modes"): if hasattr(self, "_attr_preset_modes"):
return self._attr_preset_modes return self._attr_preset_modes
return None return None
# These can be removed if no deprecated constant are in this module anymore
__getattr__ = ft.partial(check_if_deprecated_constant, module_globals=globals())
__dir__ = ft.partial(
dir_with_deprecated_constants, module_globals_keys=[*globals().keys()]
)
__all__ = all_with_deprecated_constants(globals())

View file

@ -24,6 +24,7 @@ from homeassistant.helpers.config_validation import ( # noqa: F401
PLATFORM_SCHEMA_BASE, PLATFORM_SCHEMA_BASE,
) )
from homeassistant.helpers.deprecation import ( from homeassistant.helpers.deprecation import (
all_with_deprecated_constants,
check_if_deprecated_constant, check_if_deprecated_constant,
dir_with_deprecated_constants, dir_with_deprecated_constants,
) )
@ -81,12 +82,6 @@ DEVICE_CLASSES_SCHEMA = vol.All(vol.Lower, vol.Coerce(HumidifierDeviceClass))
# use the HumidifierDeviceClass enum instead. # use the HumidifierDeviceClass enum instead.
DEVICE_CLASSES = [cls.value for cls in HumidifierDeviceClass] DEVICE_CLASSES = [cls.value for cls in HumidifierDeviceClass]
# 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
# Both 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=globals())
# mypy: disallow-any-generics # mypy: disallow-any-generics
@ -293,3 +288,13 @@ class HumidifierEntity(ToggleEntity, cached_properties=CACHED_PROPERTIES_WITH_AT
self._report_deprecated_supported_features_values(new_features) self._report_deprecated_supported_features_values(new_features)
return new_features return new_features
return features return features
# 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())

View file

@ -5,6 +5,7 @@ from functools import partial
from homeassistant.helpers.deprecation import ( from homeassistant.helpers.deprecation import (
DeprecatedConstant, DeprecatedConstant,
DeprecatedConstantEnum, DeprecatedConstantEnum,
all_with_deprecated_constants,
check_if_deprecated_constant, check_if_deprecated_constant,
dir_with_deprecated_constants, dir_with_deprecated_constants,
) )
@ -66,6 +67,9 @@ _DEPRECATED_SUPPORT_MODES = DeprecatedConstantEnum(
HumidifierEntityFeature.MODES, "2025.1" HumidifierEntityFeature.MODES, "2025.1"
) )
# Both can be removed if no deprecated constant are in this module anymore # These can be removed if no deprecated constant are in this module anymore
__getattr__ = partial(check_if_deprecated_constant, module_globals=globals()) __getattr__ = partial(check_if_deprecated_constant, module_globals=globals())
__dir__ = partial(dir_with_deprecated_constants, module_globals=globals()) __dir__ = partial(
dir_with_deprecated_constants, module_globals_keys=[*globals().keys()]
)
__all__ = all_with_deprecated_constants(globals())

View file

@ -33,6 +33,7 @@ from homeassistant.helpers.config_validation import ( # noqa: F401
) )
from homeassistant.helpers.deprecation import ( from homeassistant.helpers.deprecation import (
DeprecatedConstantEnum, DeprecatedConstantEnum,
all_with_deprecated_constants,
check_if_deprecated_constant, check_if_deprecated_constant,
dir_with_deprecated_constants, dir_with_deprecated_constants,
) )
@ -70,10 +71,6 @@ class LockEntityFeature(IntFlag):
# Please use the LockEntityFeature enum instead. # Please use the LockEntityFeature enum instead.
_DEPRECATED_SUPPORT_OPEN = DeprecatedConstantEnum(LockEntityFeature.OPEN, "2025.1") _DEPRECATED_SUPPORT_OPEN = DeprecatedConstantEnum(LockEntityFeature.OPEN, "2025.1")
# Both can be removed if no deprecated constant are in this module anymore
__getattr__ = ft.partial(check_if_deprecated_constant, module_globals=globals())
__dir__ = ft.partial(dir_with_deprecated_constants, module_globals=globals())
PROP_TO_ATTR = {"changed_by": ATTR_CHANGED_BY, "code_format": ATTR_CODE_FORMAT} PROP_TO_ATTR = {"changed_by": ATTR_CHANGED_BY, "code_format": ATTR_CODE_FORMAT}
# mypy: disallow-any-generics # mypy: disallow-any-generics
@ -315,3 +312,11 @@ class LockEntity(Entity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_):
return return
self._lock_option_default_code = "" self._lock_option_default_code = ""
# These can be removed if no deprecated constant are in this module anymore
__getattr__ = ft.partial(check_if_deprecated_constant, module_globals=globals())
__dir__ = ft.partial(
dir_with_deprecated_constants, module_globals_keys=[*globals().keys()]
)
__all__ = all_with_deprecated_constants(globals())

View file

@ -38,6 +38,7 @@ from homeassistant.const import (
) )
from homeassistant.helpers.deprecation import ( from homeassistant.helpers.deprecation import (
DeprecatedConstantEnum, DeprecatedConstantEnum,
all_with_deprecated_constants,
check_if_deprecated_constant, check_if_deprecated_constant,
dir_with_deprecated_constants, dir_with_deprecated_constants,
) )
@ -70,10 +71,6 @@ _DEPRECATED_MODE_AUTO: Final = DeprecatedConstantEnum(NumberMode.AUTO, "2025.1")
_DEPRECATED_MODE_BOX: Final = DeprecatedConstantEnum(NumberMode.BOX, "2025.1") _DEPRECATED_MODE_BOX: Final = DeprecatedConstantEnum(NumberMode.BOX, "2025.1")
_DEPRECATED_MODE_SLIDER: Final = DeprecatedConstantEnum(NumberMode.SLIDER, "2025.1") _DEPRECATED_MODE_SLIDER: Final = DeprecatedConstantEnum(NumberMode.SLIDER, "2025.1")
# Both 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=globals())
class NumberDeviceClass(StrEnum): class NumberDeviceClass(StrEnum):
"""Device class for numbers.""" """Device class for numbers."""
@ -481,3 +478,10 @@ DEVICE_CLASS_UNITS: dict[NumberDeviceClass, set[type[StrEnum] | str | None]] = {
UNIT_CONVERTERS: dict[str, type[BaseUnitConverter]] = { UNIT_CONVERTERS: dict[str, type[BaseUnitConverter]] = {
NumberDeviceClass.TEMPERATURE: TemperatureConverter, NumberDeviceClass.TEMPERATURE: TemperatureConverter,
} }
# 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())

View file

@ -27,6 +27,7 @@ from homeassistant.helpers.config_validation import ( # noqa: F401
) )
from homeassistant.helpers.deprecation import ( from homeassistant.helpers.deprecation import (
DeprecatedConstantEnum, DeprecatedConstantEnum,
all_with_deprecated_constants,
check_if_deprecated_constant, check_if_deprecated_constant,
dir_with_deprecated_constants, dir_with_deprecated_constants,
) )
@ -92,10 +93,6 @@ _DEPRECATED_SUPPORT_ACTIVITY = DeprecatedConstantEnum(
) )
# Both can be removed if no deprecated constant are in this module anymore
__getattr__ = ft.partial(check_if_deprecated_constant, module_globals=globals())
__dir__ = ft.partial(dir_with_deprecated_constants, module_globals=globals())
REMOTE_SERVICE_ACTIVITY_SCHEMA = make_entity_service_schema( REMOTE_SERVICE_ACTIVITY_SCHEMA = make_entity_service_schema(
{vol.Optional(ATTR_ACTIVITY): cv.string} {vol.Optional(ATTR_ACTIVITY): cv.string}
) )
@ -262,3 +259,11 @@ class RemoteEntity(ToggleEntity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_)
await self.hass.async_add_executor_job( await self.hass.async_add_executor_job(
ft.partial(self.delete_command, **kwargs) ft.partial(self.delete_command, **kwargs)
) )
# These can be removed if no deprecated constant are in this module anymore
__getattr__ = ft.partial(check_if_deprecated_constant, module_globals=globals())
__dir__ = ft.partial(
dir_with_deprecated_constants, module_globals_keys=[*globals().keys()]
)
__all__ = all_with_deprecated_constants(globals())

View file

@ -59,6 +59,7 @@ from homeassistant.helpers.config_validation import (
PLATFORM_SCHEMA_BASE, PLATFORM_SCHEMA_BASE,
) )
from homeassistant.helpers.deprecation import ( from homeassistant.helpers.deprecation import (
all_with_deprecated_constants,
check_if_deprecated_constant, check_if_deprecated_constant,
dir_with_deprecated_constants, dir_with_deprecated_constants,
) )
@ -120,12 +121,6 @@ __all__ = [
"SensorStateClass", "SensorStateClass",
] ]
# 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
# Both 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=globals())
# mypy: disallow-any-generics # mypy: disallow-any-generics
@ -955,3 +950,13 @@ def async_rounded_state(hass: HomeAssistant, entity_id: str, state: State) -> st
value = f"{numerical_value:z.{precision}f}" value = f"{numerical_value:z.{precision}f}"
return value return value
# 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())

View file

@ -38,6 +38,7 @@ from homeassistant.const import (
) )
from homeassistant.helpers.deprecation import ( from homeassistant.helpers.deprecation import (
DeprecatedConstantEnum, DeprecatedConstantEnum,
all_with_deprecated_constants,
check_if_deprecated_constant, check_if_deprecated_constant,
dir_with_deprecated_constants, dir_with_deprecated_constants,
) )
@ -468,10 +469,6 @@ _DEPRECATED_STATE_CLASS_TOTAL_INCREASING: Final = DeprecatedConstantEnum(
) )
STATE_CLASSES: Final[list[str]] = [cls.value for cls in SensorStateClass] STATE_CLASSES: Final[list[str]] = [cls.value for cls in SensorStateClass]
# Both 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=globals())
UNIT_CONVERTERS: dict[SensorDeviceClass | str | None, type[BaseUnitConverter]] = { UNIT_CONVERTERS: dict[SensorDeviceClass | str | None, type[BaseUnitConverter]] = {
SensorDeviceClass.ATMOSPHERIC_PRESSURE: PressureConverter, SensorDeviceClass.ATMOSPHERIC_PRESSURE: PressureConverter,
SensorDeviceClass.CURRENT: ElectricCurrentConverter, SensorDeviceClass.CURRENT: ElectricCurrentConverter,
@ -631,3 +628,10 @@ DEVICE_CLASS_STATE_CLASSES: dict[SensorDeviceClass, set[SensorStateClass]] = {
SensorDeviceClass.WEIGHT: {SensorStateClass.MEASUREMENT}, SensorDeviceClass.WEIGHT: {SensorStateClass.MEASUREMENT},
SensorDeviceClass.WIND_SPEED: {SensorStateClass.MEASUREMENT}, SensorDeviceClass.WIND_SPEED: {SensorStateClass.MEASUREMENT},
} }
# 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())

View file

@ -17,6 +17,7 @@ from homeassistant.helpers.config_validation import ( # noqa: F401
PLATFORM_SCHEMA_BASE, PLATFORM_SCHEMA_BASE,
) )
from homeassistant.helpers.deprecation import ( from homeassistant.helpers.deprecation import (
all_with_deprecated_constants,
check_if_deprecated_constant, check_if_deprecated_constant,
dir_with_deprecated_constants, dir_with_deprecated_constants,
) )
@ -53,12 +54,6 @@ TURN_ON_SCHEMA = {
vol.Optional(ATTR_VOLUME_LEVEL): cv.small_float, vol.Optional(ATTR_VOLUME_LEVEL): cv.small_float,
} }
# 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
# Both 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=globals())
class SirenTurnOnServiceParameters(TypedDict, total=False): class SirenTurnOnServiceParameters(TypedDict, total=False):
"""Represent possible parameters to siren.turn_on service data dict type.""" """Represent possible parameters to siren.turn_on service data dict type."""
@ -218,3 +213,13 @@ class SirenEntity(ToggleEntity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_):
self._report_deprecated_supported_features_values(new_features) self._report_deprecated_supported_features_values(new_features)
return new_features return new_features
return features return features
# 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())

View file

@ -6,6 +6,7 @@ from typing import Final
from homeassistant.helpers.deprecation import ( from homeassistant.helpers.deprecation import (
DeprecatedConstantEnum, DeprecatedConstantEnum,
all_with_deprecated_constants,
check_if_deprecated_constant, check_if_deprecated_constant,
dir_with_deprecated_constants, dir_with_deprecated_constants,
) )
@ -47,6 +48,9 @@ _DEPRECATED_SUPPORT_DURATION: Final = DeprecatedConstantEnum(
SirenEntityFeature.DURATION, "2025.1" SirenEntityFeature.DURATION, "2025.1"
) )
# Both can be removed if no deprecated constant are in this module anymore # These can be removed if no deprecated constant are in this module anymore
__getattr__ = partial(check_if_deprecated_constant, module_globals=globals()) __getattr__ = partial(check_if_deprecated_constant, module_globals=globals())
__dir__ = partial(dir_with_deprecated_constants, module_globals=globals()) __dir__ = partial(
dir_with_deprecated_constants, module_globals_keys=[*globals().keys()]
)
__all__ = all_with_deprecated_constants(globals())

View file

@ -23,6 +23,7 @@ from homeassistant.helpers.config_validation import ( # noqa: F401
) )
from homeassistant.helpers.deprecation import ( from homeassistant.helpers.deprecation import (
DeprecatedConstantEnum, DeprecatedConstantEnum,
all_with_deprecated_constants,
check_if_deprecated_constant, check_if_deprecated_constant,
dir_with_deprecated_constants, dir_with_deprecated_constants,
) )
@ -66,10 +67,6 @@ _DEPRECATED_DEVICE_CLASS_SWITCH = DeprecatedConstantEnum(
SwitchDeviceClass.SWITCH, "2025.1" SwitchDeviceClass.SWITCH, "2025.1"
) )
# Both 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=globals())
# mypy: disallow-any-generics # mypy: disallow-any-generics
@ -133,3 +130,11 @@ class SwitchEntity(ToggleEntity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_)
if hasattr(self, "entity_description"): if hasattr(self, "entity_description"):
return self.entity_description.device_class return self.entity_description.device_class
return None return None
# 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())

View file

@ -30,6 +30,7 @@ from homeassistant.helpers.config_validation import ( # noqa: F401
) )
from homeassistant.helpers.deprecation import ( from homeassistant.helpers.deprecation import (
DeprecatedConstantEnum, DeprecatedConstantEnum,
all_with_deprecated_constants,
check_if_deprecated_constant, check_if_deprecated_constant,
dir_with_deprecated_constants, dir_with_deprecated_constants,
) )
@ -86,10 +87,6 @@ _DEPRECATED_SUPPORT_AWAY_MODE = DeprecatedConstantEnum(
WaterHeaterEntityFeature.AWAY_MODE, "2025.1" WaterHeaterEntityFeature.AWAY_MODE, "2025.1"
) )
# Both can be removed if no deprecated constant are in this module anymore
__getattr__ = ft.partial(check_if_deprecated_constant, module_globals=globals())
__dir__ = ft.partial(dir_with_deprecated_constants, module_globals=globals())
ATTR_MAX_TEMP = "max_temp" ATTR_MAX_TEMP = "max_temp"
ATTR_MIN_TEMP = "min_temp" ATTR_MIN_TEMP = "min_temp"
ATTR_AWAY_MODE = "away_mode" ATTR_AWAY_MODE = "away_mode"
@ -441,3 +438,11 @@ async def async_service_temperature_set(
kwargs[value] = temp kwargs[value] = temp
await entity.async_set_temperature(**kwargs) await entity.async_set_temperature(**kwargs)
# These can be removed if no deprecated constant are in this module anymore
__getattr__ = ft.partial(check_if_deprecated_constant, module_globals=globals())
__dir__ = ft.partial(
dir_with_deprecated_constants, module_globals_keys=[*globals().keys()]
)
__all__ = all_with_deprecated_constants(globals())

View file

@ -8,6 +8,7 @@ from typing import Final
from .helpers.deprecation import ( from .helpers.deprecation import (
DeprecatedConstant, DeprecatedConstant,
DeprecatedConstantEnum, DeprecatedConstantEnum,
all_with_deprecated_constants,
check_if_deprecated_constant, check_if_deprecated_constant,
dir_with_deprecated_constants, dir_with_deprecated_constants,
) )
@ -440,12 +441,6 @@ _DEPRECATED_DEVICE_CLASS_VOLTAGE: Final = DeprecatedConstant(
"2025.1", "2025.1",
) )
# Both 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=globals())
# #### STATES #### # #### STATES ####
STATE_ON: Final = "on" STATE_ON: Final = "on"
STATE_OFF: Final = "off" STATE_OFF: Final = "off"
@ -1607,3 +1602,10 @@ SIGNAL_BOOTSTRAP_INTEGRATIONS = "bootstrap_integrations"
FORMAT_DATE: Final = "%Y-%m-%d" FORMAT_DATE: Final = "%Y-%m-%d"
FORMAT_TIME: Final = "%H:%M:%S" FORMAT_TIME: Final = "%H:%M:%S"
FORMAT_DATETIME: Final = f"{FORMAT_DATE} {FORMAT_TIME}" FORMAT_DATETIME: Final = f"{FORMAT_DATE} {FORMAT_TIME}"
# 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())

View file

@ -83,6 +83,7 @@ from .exceptions import (
) )
from .helpers.deprecation import ( from .helpers.deprecation import (
DeprecatedConstantEnum, DeprecatedConstantEnum,
all_with_deprecated_constants,
check_if_deprecated_constant, check_if_deprecated_constant,
dir_with_deprecated_constants, dir_with_deprecated_constants,
) )
@ -159,11 +160,6 @@ _DEPRECATED_SOURCE_STORAGE = DeprecatedConstantEnum(ConfigSource.STORAGE, "2025.
_DEPRECATED_SOURCE_YAML = DeprecatedConstantEnum(ConfigSource.YAML, "2025.1") _DEPRECATED_SOURCE_YAML = DeprecatedConstantEnum(ConfigSource.YAML, "2025.1")
# Both can be removed if no deprecated constant are in this module anymore
__getattr__ = functools.partial(check_if_deprecated_constant, module_globals=globals())
__dir__ = functools.partial(dir_with_deprecated_constants, module_globals=globals())
# How long to wait until things that run on startup have to finish. # How long to wait until things that run on startup have to finish.
TIMEOUT_EVENT_START = 15 TIMEOUT_EVENT_START = 15
@ -2534,3 +2530,11 @@ class Config:
if self._original_unit_system: if self._original_unit_system:
data["unit_system"] = self._original_unit_system data["unit_system"] = self._original_unit_system
return await super().async_save(data) return await super().async_save(data)
# These can be removed if no deprecated constant are in this module anymore
__getattr__ = functools.partial(check_if_deprecated_constant, module_globals=globals())
__dir__ = functools.partial(
dir_with_deprecated_constants, module_globals_keys=[*globals().keys()]
)
__all__ = all_with_deprecated_constants(globals())

View file

@ -17,6 +17,7 @@ from .core import HomeAssistant, callback
from .exceptions import HomeAssistantError from .exceptions import HomeAssistantError
from .helpers.deprecation import ( from .helpers.deprecation import (
DeprecatedConstantEnum, DeprecatedConstantEnum,
all_with_deprecated_constants,
check_if_deprecated_constant, check_if_deprecated_constant,
dir_with_deprecated_constants, dir_with_deprecated_constants,
) )
@ -59,10 +60,6 @@ _DEPRECATED_RESULT_TYPE_SHOW_PROGRESS_DONE = DeprecatedConstantEnum(
) )
_DEPRECATED_RESULT_TYPE_MENU = DeprecatedConstantEnum(FlowResultType.MENU, "2025.1") _DEPRECATED_RESULT_TYPE_MENU = DeprecatedConstantEnum(FlowResultType.MENU, "2025.1")
# Both 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=globals())
# Event that is fired when a flow is progressed via external or progress source. # Event that is fired when a flow is progressed via external or progress source.
EVENT_DATA_ENTRY_FLOW_PROGRESSED = "data_entry_flow_progressed" EVENT_DATA_ENTRY_FLOW_PROGRESSED = "data_entry_flow_progressed"
@ -700,3 +697,11 @@ def _create_abort_data(
reason=reason, reason=reason,
description_placeholders=description_placeholders, description_placeholders=description_placeholders,
) )
# 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())

View file

@ -292,10 +292,22 @@ def check_if_deprecated_constant(name: str, module_globals: dict[str, Any]) -> A
return value return value
def dir_with_deprecated_constants(module_globals: dict[str, Any]) -> list[str]: def dir_with_deprecated_constants(module_globals_keys: list[str]) -> list[str]:
"""Return dir() with deprecated constants.""" """Return dir() with deprecated constants."""
return list(module_globals) + [ return module_globals_keys + [
name.removeprefix(_PREFIX_DEPRECATED) name.removeprefix(_PREFIX_DEPRECATED)
for name in module_globals for name in module_globals_keys
if name.startswith(_PREFIX_DEPRECATED)
]
def all_with_deprecated_constants(module_globals: dict[str, Any]) -> list[str]:
"""Generate a list for __all___ with deprecated constants."""
# Iterate over a copy in case the globals dict is mutated by another thread
# while we loop over it.
module_globals_keys = list(module_globals)
return [itm for itm in module_globals_keys if not itm.startswith("_")] + [
name.removeprefix(_PREFIX_DEPRECATED)
for name in module_globals_keys
if name.startswith(_PREFIX_DEPRECATED) if name.startswith(_PREFIX_DEPRECATED)
] ]

View file

@ -24,6 +24,7 @@ from . import storage
from .debounce import Debouncer from .debounce import Debouncer
from .deprecation import ( from .deprecation import (
DeprecatedConstantEnum, DeprecatedConstantEnum,
all_with_deprecated_constants,
check_if_deprecated_constant, check_if_deprecated_constant,
dir_with_deprecated_constants, dir_with_deprecated_constants,
) )
@ -75,10 +76,6 @@ _DEPRECATED_DISABLED_INTEGRATION = DeprecatedConstantEnum(
) )
_DEPRECATED_DISABLED_USER = DeprecatedConstantEnum(DeviceEntryDisabler.USER, "2025.1") _DEPRECATED_DISABLED_USER = DeprecatedConstantEnum(DeviceEntryDisabler.USER, "2025.1")
# Both 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=globals())
class DeviceInfo(TypedDict, total=False): class DeviceInfo(TypedDict, total=False):
"""Entity device information for device registry.""" """Entity device information for device registry."""
@ -1113,3 +1110,11 @@ def _normalize_connections(connections: set[tuple[str, str]]) -> set[tuple[str,
(key, format_mac(value)) if key == CONNECTION_NETWORK_MAC else (key, value) (key, format_mac(value)) if key == CONNECTION_NETWORK_MAC else (key, value)
for key, value in connections for key, value in connections
} }
# 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())

View file

@ -176,7 +176,8 @@ disable = [
"duplicate-bases", # PLE0241 "duplicate-bases", # PLE0241
"format-needs-mapping", # F502 "format-needs-mapping", # F502
"function-redefined", # F811 "function-redefined", # F811
"invalid-all-format", # PLE0605 # Needed because ruff does not understand type of __all__ generated by a function
# "invalid-all-format", # PLE0605
"invalid-all-object", # PLE0604 "invalid-all-object", # PLE0604
"invalid-character-backspace", # PLE2510 "invalid-character-backspace", # PLE2510
"invalid-character-esc", # PLE2513 "invalid-character-esc", # PLE2513
@ -673,6 +674,9 @@ ignore = [
"COM819", "COM819",
"ISC001", "ISC001",
"ISC002", "ISC002",
# Disabled because ruff does not understand type of __all__ generated by a function
"PLE0605",
] ]
[tool.ruff.flake8-import-conventions.extend-aliases] [tool.ruff.flake8-import-conventions.extend-aliases]

View file

@ -92,7 +92,7 @@ import homeassistant.util.uuid as uuid_util
import homeassistant.util.yaml.loader as yaml_loader import homeassistant.util.yaml.loader as yaml_loader
from tests.testing_config.custom_components.test_constant_deprecation import ( from tests.testing_config.custom_components.test_constant_deprecation import (
import_deprecated_costant, import_deprecated_constant,
) )
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -1482,6 +1482,7 @@ def import_and_test_deprecated_constant_enum(
- Assert value is the same as the replacement - Assert value is the same as the replacement
- Assert a warning is logged - Assert a warning is logged
- Assert the deprecated constant is included in the modules.__dir__() - Assert the deprecated constant is included in the modules.__dir__()
- Assert the deprecated constant is included in the modules.__all__()
""" """
import_and_test_deprecated_constant( import_and_test_deprecated_constant(
caplog, caplog,
@ -1507,8 +1508,9 @@ def import_and_test_deprecated_constant(
- Assert value is the same as the replacement - Assert value is the same as the replacement
- Assert a warning is logged - Assert a warning is logged
- Assert the deprecated constant is included in the modules.__dir__() - Assert the deprecated constant is included in the modules.__dir__()
- Assert the deprecated constant is included in the modules.__all__()
""" """
value = import_deprecated_costant(module, constant_name) value = import_deprecated_constant(module, constant_name)
assert value == replacement assert value == replacement
assert ( assert (
module.__name__, module.__name__,
@ -1523,3 +1525,11 @@ def import_and_test_deprecated_constant(
# verify deprecated constant is included in dir() # verify deprecated constant is included in dir()
assert constant_name in dir(module) assert constant_name in dir(module)
assert constant_name in module.__all__
def help_test_all(module: ModuleType) -> None:
"""Test module.__all__ is correctly set."""
assert set(module.__all__) == {
itm for itm in module.__dir__() if not itm.startswith("_")
}

View file

@ -6,7 +6,16 @@ import pytest
from homeassistant.components import alarm_control_panel from homeassistant.components import alarm_control_panel
from tests.common import import_and_test_deprecated_constant_enum from tests.common import help_test_all, import_and_test_deprecated_constant_enum
@pytest.mark.parametrize(
"module",
[alarm_control_panel, alarm_control_panel.const],
)
def test_all(module: ModuleType) -> None:
"""Test module.__all__ is correctly set."""
help_test_all(module)
@pytest.mark.parametrize( @pytest.mark.parametrize(

View file

@ -59,6 +59,7 @@ from tests.common import (
async_capture_events, async_capture_events,
async_fire_time_changed, async_fire_time_changed,
async_mock_service, async_mock_service,
help_test_all,
import_and_test_deprecated_constant, import_and_test_deprecated_constant,
mock_restore_cache, mock_restore_cache,
) )
@ -2569,6 +2570,11 @@ async def test_websocket_config(
assert msg["error"]["code"] == "not_found" assert msg["error"]["code"] == "not_found"
def test_all() -> None:
"""Test module.__all__ is correctly set."""
help_test_all(automation)
@pytest.mark.parametrize( @pytest.mark.parametrize(
("constant_name", "replacement"), ("constant_name", "replacement"),
[ [

View file

@ -14,6 +14,7 @@ from tests.common import (
MockConfigEntry, MockConfigEntry,
MockModule, MockModule,
MockPlatform, MockPlatform,
help_test_all,
import_and_test_deprecated_constant_enum, import_and_test_deprecated_constant_enum,
mock_config_flow, mock_config_flow,
mock_integration, mock_integration,
@ -197,6 +198,11 @@ async def test_entity_category_config_raises_error(
) )
def test_all() -> None:
"""Test module.__all__ is correctly set."""
help_test_all(binary_sensor)
@pytest.mark.parametrize( @pytest.mark.parametrize(
"device_class", "device_class",
list(binary_sensor.BinarySensorDeviceClass), list(binary_sensor.BinarySensorDeviceClass),

View file

@ -27,7 +27,7 @@ from homeassistant.setup import async_setup_component
from .common import EMPTY_8_6_JPEG, WEBRTC_ANSWER, mock_turbo_jpeg from .common import EMPTY_8_6_JPEG, WEBRTC_ANSWER, mock_turbo_jpeg
from tests.common import import_and_test_deprecated_constant_enum from tests.common import help_test_all, import_and_test_deprecated_constant_enum
from tests.typing import ClientSessionGenerator, WebSocketGenerator from tests.typing import ClientSessionGenerator, WebSocketGenerator
STREAM_SOURCE = "rtsp://127.0.0.1/stream" STREAM_SOURCE = "rtsp://127.0.0.1/stream"
@ -962,6 +962,15 @@ async def test_use_stream_for_stills(
assert await resp.read() == b"stream_keyframe_image" assert await resp.read() == b"stream_keyframe_image"
@pytest.mark.parametrize(
"module",
[camera, camera.const],
)
def test_all(module: ModuleType) -> None:
"""Test module.__all__ is correctly set."""
help_test_all(module)
@pytest.mark.parametrize( @pytest.mark.parametrize(
"enum", "enum",
list(camera.const.StreamType), list(camera.const.StreamType),

View file

@ -36,6 +36,7 @@ from tests.common import (
MockModule, MockModule,
MockPlatform, MockPlatform,
async_mock_service, async_mock_service,
help_test_all,
import_and_test_deprecated_constant, import_and_test_deprecated_constant,
import_and_test_deprecated_constant_enum, import_and_test_deprecated_constant_enum,
mock_integration, mock_integration,
@ -157,6 +158,15 @@ def _create_tuples(enum: Enum, constant_prefix: str) -> list[tuple[Enum, str]]:
return result return result
@pytest.mark.parametrize(
"module",
[climate, climate.const],
)
def test_all(module: ModuleType) -> None:
"""Test module.__all__ is correctly set."""
help_test_all(module)
@pytest.mark.parametrize( @pytest.mark.parametrize(
("enum", "constant_prefix"), ("enum", "constant_prefix"),
_create_tuples(climate.ClimateEntityFeature, "SUPPORT_") _create_tuples(climate.ClimateEntityFeature, "SUPPORT_")

View file

@ -16,7 +16,7 @@ from homeassistant.const import (
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
from tests.common import import_and_test_deprecated_constant_enum from tests.common import help_test_all, import_and_test_deprecated_constant_enum
async def test_services(hass: HomeAssistant, enable_custom_integrations: None) -> None: async def test_services(hass: HomeAssistant, enable_custom_integrations: None) -> None:
@ -127,6 +127,11 @@ def _create_tuples(enum: Enum, constant_prefix: str) -> list[tuple[Enum, str]]:
return result return result
def test_all() -> None:
"""Test module.__all__ is correctly set."""
help_test_all(cover)
@pytest.mark.parametrize( @pytest.mark.parametrize(
("enum", "constant_prefix"), ("enum", "constant_prefix"),
_create_tuples(cover.CoverEntityFeature, "SUPPORT_") _create_tuples(cover.CoverEntityFeature, "SUPPORT_")

View file

@ -34,6 +34,7 @@ from . import common
from tests.common import ( from tests.common import (
assert_setup_component, assert_setup_component,
async_fire_time_changed, async_fire_time_changed,
help_test_all,
import_and_test_deprecated_constant_enum, import_and_test_deprecated_constant_enum,
mock_registry, mock_registry,
mock_restore_cache, mock_restore_cache,
@ -685,6 +686,15 @@ def test_see_schema_allowing_ios_calls() -> None:
) )
@pytest.mark.parametrize(
"module",
[device_tracker, device_tracker.const],
)
def test_all(module: ModuleType) -> None:
"""Test module.__all__ is correctly set."""
help_test_all(module)
@pytest.mark.parametrize(("enum"), list(SourceType)) @pytest.mark.parametrize(("enum"), list(SourceType))
@pytest.mark.parametrize( @pytest.mark.parametrize(
"module", "module",

View file

@ -15,7 +15,7 @@ from homeassistant.core import HomeAssistant
import homeassistant.helpers.entity_registry as er import homeassistant.helpers.entity_registry as er
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
from tests.common import import_and_test_deprecated_constant_enum from tests.common import help_test_all, import_and_test_deprecated_constant_enum
from tests.testing_config.custom_components.test.fan import MockFan from tests.testing_config.custom_components.test.fan import MockFan
@ -150,6 +150,11 @@ async def test_preset_mode_validation(
assert exc.value.translation_key == "not_valid_preset_mode" assert exc.value.translation_key == "not_valid_preset_mode"
def test_all() -> None:
"""Test module.__all__ is correctly set."""
help_test_all(fan)
@pytest.mark.parametrize(("enum"), list(fan.FanEntityFeature)) @pytest.mark.parametrize(("enum"), list(fan.FanEntityFeature))
def test_deprecated_constants( def test_deprecated_constants(
caplog: pytest.LogCaptureFixture, caplog: pytest.LogCaptureFixture,

View file

@ -13,7 +13,7 @@ from homeassistant.components.humidifier import (
) )
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from tests.common import import_and_test_deprecated_constant_enum from tests.common import help_test_all, import_and_test_deprecated_constant_enum
class MockHumidifierEntity(HumidifierEntity): class MockHumidifierEntity(HumidifierEntity):
@ -54,6 +54,15 @@ def _create_tuples(enum: Enum, constant_prefix: str) -> list[tuple[Enum, str]]:
return result return result
@pytest.mark.parametrize(
"module",
[humidifier, humidifier.const],
)
def test_all(module: ModuleType) -> None:
"""Test module.__all__ is correctly set."""
help_test_all(module)
@pytest.mark.parametrize( @pytest.mark.parametrize(
("enum", "constant_prefix"), ("enum", "constant_prefix"),
_create_tuples(humidifier.HumidifierEntityFeature, "SUPPORT_") _create_tuples(humidifier.HumidifierEntityFeature, "SUPPORT_")

View file

@ -28,7 +28,7 @@ from homeassistant.helpers.typing import UNDEFINED, UndefinedType
from .conftest import MockLock from .conftest import MockLock
from tests.common import import_and_test_deprecated_constant_enum from tests.common import help_test_all, import_and_test_deprecated_constant_enum
async def help_test_async_lock_service( async def help_test_async_lock_service(
@ -371,6 +371,11 @@ async def test_lock_with_illegal_default_code(
assert exc.value.translation_key == "add_default_code" assert exc.value.translation_key == "add_default_code"
def test_all() -> None:
"""Test module.__all__ is correctly set."""
help_test_all(lock)
@pytest.mark.parametrize(("enum"), list(LockEntityFeature)) @pytest.mark.parametrize(("enum"), list(LockEntityFeature))
def test_deprecated_constants( def test_deprecated_constants(
caplog: pytest.LogCaptureFixture, caplog: pytest.LogCaptureFixture,

View file

@ -4,7 +4,12 @@ import pytest
from homeassistant.components.number import const from homeassistant.components.number import const
from tests.common import import_and_test_deprecated_constant_enum from tests.common import help_test_all, import_and_test_deprecated_constant_enum
def test_all() -> None:
"""Test module.__all__ is correctly set."""
help_test_all(const)
@pytest.mark.parametrize(("enum"), list(const.NumberMode)) @pytest.mark.parametrize(("enum"), list(const.NumberMode))

View file

@ -22,7 +22,11 @@ from homeassistant.const import (
) )
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from tests.common import async_mock_service, import_and_test_deprecated_constant_enum from tests.common import (
async_mock_service,
help_test_all,
import_and_test_deprecated_constant_enum,
)
TEST_PLATFORM = {DOMAIN: {CONF_PLATFORM: "test"}} TEST_PLATFORM = {DOMAIN: {CONF_PLATFORM: "test"}}
SERVICE_SEND_COMMAND = "send_command" SERVICE_SEND_COMMAND = "send_command"
@ -143,6 +147,11 @@ async def test_delete_command(hass: HomeAssistant) -> None:
assert call.data[ATTR_ENTITY_ID] == ENTITY_ID assert call.data[ATTR_ENTITY_ID] == ENTITY_ID
def test_all() -> None:
"""Test module.__all__ is correctly set."""
help_test_all(remote)
@pytest.mark.parametrize(("enum"), list(remote.RemoteEntityFeature)) @pytest.mark.parametrize(("enum"), list(remote.RemoteEntityFeature))
def test_deprecated_constants( def test_deprecated_constants(
caplog: pytest.LogCaptureFixture, caplog: pytest.LogCaptureFixture,

View file

@ -52,6 +52,7 @@ from tests.common import (
MockModule, MockModule,
MockPlatform, MockPlatform,
async_mock_restore_state_shutdown_restart, async_mock_restore_state_shutdown_restart,
help_test_all,
import_and_test_deprecated_constant_enum, import_and_test_deprecated_constant_enum,
mock_config_flow, mock_config_flow,
mock_integration, mock_integration,
@ -2524,6 +2525,15 @@ async def test_entity_category_config_raises_error(
assert not hass.states.get("sensor.test") assert not hass.states.get("sensor.test")
@pytest.mark.parametrize(
"module",
[sensor, sensor.const],
)
def test_all(module: ModuleType) -> None:
"""Test module.__all__ is correctly set."""
help_test_all(module)
@pytest.mark.parametrize(("enum"), list(sensor.SensorStateClass)) @pytest.mark.parametrize(("enum"), list(sensor.SensorStateClass))
@pytest.mark.parametrize(("module"), [sensor, sensor.const]) @pytest.mark.parametrize(("module"), [sensor, sensor.const])
def test_deprecated_constants( def test_deprecated_constants(

View file

@ -13,7 +13,7 @@ from homeassistant.components.siren import (
from homeassistant.components.siren.const import SirenEntityFeature from homeassistant.components.siren.const import SirenEntityFeature
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from tests.common import import_and_test_deprecated_constant_enum from tests.common import help_test_all, import_and_test_deprecated_constant_enum
class MockSirenEntity(SirenEntity): class MockSirenEntity(SirenEntity):
@ -110,6 +110,15 @@ async def test_missing_tones_dict(hass: HomeAssistant) -> None:
process_turn_on_params(siren, {"tone": 3}) process_turn_on_params(siren, {"tone": 3})
@pytest.mark.parametrize(
"module",
[siren, siren.const],
)
def test_all(module: ModuleType) -> None:
"""Test module.__all__ is correctly set."""
help_test_all(module)
@pytest.mark.parametrize(("enum"), list(SirenEntityFeature)) @pytest.mark.parametrize(("enum"), list(SirenEntityFeature))
@pytest.mark.parametrize(("module"), [siren, siren.const]) @pytest.mark.parametrize(("module"), [siren, siren.const])
def test_deprecated_constants( def test_deprecated_constants(

View file

@ -9,7 +9,11 @@ from homeassistant.setup import async_setup_component
from . import common from . import common
from tests.common import MockUser, import_and_test_deprecated_constant_enum from tests.common import (
MockUser,
help_test_all,
import_and_test_deprecated_constant_enum,
)
@pytest.fixture(autouse=True) @pytest.fixture(autouse=True)
@ -82,6 +86,11 @@ async def test_switch_context(
assert state2.context.user_id == hass_admin_user.id assert state2.context.user_id == hass_admin_user.id
def test_all() -> None:
"""Test module.__all__ is correctly set."""
help_test_all(switch)
@pytest.mark.parametrize(("enum"), list(switch.SwitchDeviceClass)) @pytest.mark.parametrize(("enum"), list(switch.SwitchDeviceClass))
def test_deprecated_constants( def test_deprecated_constants(
caplog: pytest.LogCaptureFixture, caplog: pytest.LogCaptureFixture,

View file

@ -17,7 +17,11 @@ from homeassistant.components.water_heater import (
from homeassistant.const import UnitOfTemperature from homeassistant.const import UnitOfTemperature
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from tests.common import async_mock_service, import_and_test_deprecated_constant_enum from tests.common import (
async_mock_service,
help_test_all,
import_and_test_deprecated_constant_enum,
)
async def test_set_temp_schema_no_req( async def test_set_temp_schema_no_req(
@ -102,6 +106,11 @@ async def test_sync_turn_off(hass: HomeAssistant) -> None:
assert water_heater.async_turn_off.call_count == 1 assert water_heater.async_turn_off.call_count == 1
def test_all() -> None:
"""Test module.__all__ is correctly set."""
help_test_all(water_heater)
@pytest.mark.parametrize( @pytest.mark.parametrize(
("enum"), ("enum"),
[ [

View file

@ -429,7 +429,7 @@ def test_test_check_if_deprecated_constant_invalid(
@pytest.mark.parametrize( @pytest.mark.parametrize(
("module_global", "expected"), ("module_globals", "expected"),
[ [
({"CONSTANT": 1}, ["CONSTANT"]), ({"CONSTANT": 1}, ["CONSTANT"]),
({"_DEPRECATED_CONSTANT": 1}, ["_DEPRECATED_CONSTANT", "CONSTANT"]), ({"_DEPRECATED_CONSTANT": 1}, ["_DEPRECATED_CONSTANT", "CONSTANT"]),
@ -440,7 +440,7 @@ def test_test_check_if_deprecated_constant_invalid(
], ],
) )
def test_dir_with_deprecated_constants( def test_dir_with_deprecated_constants(
module_global: dict[str, Any], expected: list[str] module_globals: dict[str, Any], expected: list[str]
) -> None: ) -> None:
"""Test dir() with deprecated constants.""" """Test dir() with deprecated constants."""
assert dir_with_deprecated_constants(module_global) == expected assert dir_with_deprecated_constants([*module_globals.keys()]) == expected

View file

@ -20,6 +20,7 @@ from homeassistant.helpers import (
from tests.common import ( from tests.common import (
MockConfigEntry, MockConfigEntry,
flush_store, flush_store,
help_test_all,
import_and_test_deprecated_constant_enum, import_and_test_deprecated_constant_enum,
) )
@ -2018,6 +2019,11 @@ async def test_loading_invalid_configuration_url_from_storage(
assert entry.configuration_url == "invalid" assert entry.configuration_url == "invalid"
def test_all() -> None:
"""Test module.__all__ is correctly set."""
help_test_all(dr)
@pytest.mark.parametrize(("enum"), list(dr.DeviceEntryDisabler)) @pytest.mark.parametrize(("enum"), list(dr.DeviceEntryDisabler))
def test_deprecated_constants( def test_deprecated_constants(
caplog: pytest.LogCaptureFixture, caplog: pytest.LogCaptureFixture,

View file

@ -9,6 +9,7 @@ from homeassistant import const
from homeassistant.components import sensor from homeassistant.components import sensor
from tests.common import ( from tests.common import (
help_test_all,
import_and_test_deprecated_constant, import_and_test_deprecated_constant,
import_and_test_deprecated_constant_enum, import_and_test_deprecated_constant_enum,
) )
@ -23,6 +24,11 @@ def _create_tuples(
return result return result
def test_all() -> None:
"""Test module.__all__ is correctly set."""
help_test_all(const)
@pytest.mark.parametrize( @pytest.mark.parametrize(
("enum", "constant_prefix"), ("enum", "constant_prefix"),
_create_tuples(const.EntityCategory, "ENTITY_CATEGORY_") _create_tuples(const.EntityCategory, "ENTITY_CATEGORY_")

View file

@ -61,6 +61,7 @@ from homeassistant.util.unit_system import METRIC_SYSTEM
from .common import ( from .common import (
async_capture_events, async_capture_events,
async_mock_service, async_mock_service,
help_test_all,
import_and_test_deprecated_constant_enum, import_and_test_deprecated_constant_enum,
) )
@ -2630,6 +2631,11 @@ async def test_cancel_shutdown_job(hass: HomeAssistant) -> None:
assert not evt.is_set() assert not evt.is_set()
def test_all() -> None:
"""Test module.__all__ is correctly set."""
help_test_all(ha)
@pytest.mark.parametrize( @pytest.mark.parametrize(
("enum"), ("enum"),
[ [

View file

@ -10,7 +10,11 @@ from homeassistant import config_entries, data_entry_flow
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.util.decorator import Registry from homeassistant.util.decorator import Registry
from .common import async_capture_events, import_and_test_deprecated_constant_enum from .common import (
async_capture_events,
help_test_all,
import_and_test_deprecated_constant_enum,
)
@pytest.fixture @pytest.fixture
@ -804,6 +808,11 @@ async def test_find_flows_by_init_data_type(
assert len(manager.async_progress()) == 0 assert len(manager.async_progress()) == 0
def test_all() -> None:
"""Test module.__all__ is correctly set."""
help_test_all(data_entry_flow)
@pytest.mark.parametrize(("enum"), list(data_entry_flow.FlowResultType)) @pytest.mark.parametrize(("enum"), list(data_entry_flow.FlowResultType))
def test_deprecated_constants( def test_deprecated_constants(
caplog: pytest.LogCaptureFixture, caplog: pytest.LogCaptureFixture,

View file

@ -4,6 +4,6 @@ from types import ModuleType
from typing import Any from typing import Any
def import_deprecated_costant(module: ModuleType, constant_name: str) -> Any: def import_deprecated_constant(module: ModuleType, constant_name: str) -> Any:
"""Import and return deprecated constant.""" """Import and return deprecated constant."""
return getattr(module, constant_name) return getattr(module, constant_name)