Remove deprecated conductivity constants (#153942)

This commit is contained in:
Dave T
2025-10-07 23:20:36 +01:00
committed by GitHub
parent de6c61a4ab
commit 1a0abe296c
5 changed files with 14 additions and 155 deletions

View File

@@ -9,7 +9,6 @@ from typing import TYPE_CHECKING, Final
from .generated.entity_platforms import EntityPlatforms from .generated.entity_platforms import EntityPlatforms
from .helpers.deprecation import ( from .helpers.deprecation import (
DeprecatedConstantEnum, DeprecatedConstantEnum,
EnumWithDeprecatedMembers,
all_with_deprecated_constants, all_with_deprecated_constants,
check_if_deprecated_constant, check_if_deprecated_constant,
dir_with_deprecated_constants, dir_with_deprecated_constants,
@@ -704,35 +703,13 @@ class UnitOfMass(StrEnum):
STONES = "st" STONES = "st"
class UnitOfConductivity( class UnitOfConductivity(StrEnum):
StrEnum,
metaclass=EnumWithDeprecatedMembers,
deprecated={
"SIEMENS": ("UnitOfConductivity.SIEMENS_PER_CM", "2025.11.0"),
"MICROSIEMENS": ("UnitOfConductivity.MICROSIEMENS_PER_CM", "2025.11.0"),
"MILLISIEMENS": ("UnitOfConductivity.MILLISIEMENS_PER_CM", "2025.11.0"),
},
):
"""Conductivity units.""" """Conductivity units."""
SIEMENS_PER_CM = "S/cm" SIEMENS_PER_CM = "S/cm"
MICROSIEMENS_PER_CM = "μS/cm" MICROSIEMENS_PER_CM = "μS/cm"
MILLISIEMENS_PER_CM = "mS/cm" MILLISIEMENS_PER_CM = "mS/cm"
# Deprecated aliases
SIEMENS = "S/cm"
"""Deprecated: Please use UnitOfConductivity.SIEMENS_PER_CM"""
MICROSIEMENS = "μS/cm"
"""Deprecated: Please use UnitOfConductivity.MICROSIEMENS_PER_CM"""
MILLISIEMENS = "mS/cm"
"""Deprecated: Please use UnitOfConductivity.MILLISIEMENS_PER_CM"""
_DEPRECATED_CONDUCTIVITY: Final = DeprecatedConstantEnum(
UnitOfConductivity.MICROSIEMENS_PER_CM,
"2025.11",
)
"""Deprecated: please use UnitOfConductivity.MICROSIEMENS_PER_CM"""
# Light units # Light units
LIGHT_LUX: Final = "lx" LIGHT_LUX: Final = "lx"

View File

@@ -80,7 +80,9 @@ async def test_low_battery(hass: HomeAssistant) -> None:
async def test_initial_states(hass: HomeAssistant) -> None: async def test_initial_states(hass: HomeAssistant) -> None:
"""Test plant initialises attributes if sensor already exists.""" """Test plant initialises attributes if sensor already exists."""
hass.states.async_set( hass.states.async_set(
MOISTURE_ENTITY, 5, {ATTR_UNIT_OF_MEASUREMENT: UnitOfConductivity.MICROSIEMENS} MOISTURE_ENTITY,
5,
{ATTR_UNIT_OF_MEASUREMENT: UnitOfConductivity.MICROSIEMENS_PER_CM},
) )
plant_name = "some_plant" plant_name = "some_plant"
assert await async_setup_component( assert await async_setup_component(
@@ -101,7 +103,9 @@ async def test_update_states(hass: HomeAssistant) -> None:
hass, plant.DOMAIN, {plant.DOMAIN: {plant_name: GOOD_CONFIG}} hass, plant.DOMAIN, {plant.DOMAIN: {plant_name: GOOD_CONFIG}}
) )
hass.states.async_set( hass.states.async_set(
MOISTURE_ENTITY, 5, {ATTR_UNIT_OF_MEASUREMENT: UnitOfConductivity.MICROSIEMENS} MOISTURE_ENTITY,
5,
{ATTR_UNIT_OF_MEASUREMENT: UnitOfConductivity.MICROSIEMENS_PER_CM},
) )
await hass.async_block_till_done() await hass.async_block_till_done()
state = hass.states.get(f"plant.{plant_name}") state = hass.states.get(f"plant.{plant_name}")
@@ -121,7 +125,7 @@ async def test_unavailable_state(hass: HomeAssistant) -> None:
hass.states.async_set( hass.states.async_set(
MOISTURE_ENTITY, MOISTURE_ENTITY,
STATE_UNAVAILABLE, STATE_UNAVAILABLE,
{ATTR_UNIT_OF_MEASUREMENT: UnitOfConductivity.MICROSIEMENS}, {ATTR_UNIT_OF_MEASUREMENT: UnitOfConductivity.MICROSIEMENS_PER_CM},
) )
await hass.async_block_till_done() await hass.async_block_till_done()
state = hass.states.get(f"plant.{plant_name}") state = hass.states.get(f"plant.{plant_name}")
@@ -139,7 +143,9 @@ async def test_state_problem_if_unavailable(hass: HomeAssistant) -> None:
hass, plant.DOMAIN, {plant.DOMAIN: {plant_name: GOOD_CONFIG}} hass, plant.DOMAIN, {plant.DOMAIN: {plant_name: GOOD_CONFIG}}
) )
hass.states.async_set( hass.states.async_set(
MOISTURE_ENTITY, 42, {ATTR_UNIT_OF_MEASUREMENT: UnitOfConductivity.MICROSIEMENS} MOISTURE_ENTITY,
42,
{ATTR_UNIT_OF_MEASUREMENT: UnitOfConductivity.MICROSIEMENS_PER_CM},
) )
await hass.async_block_till_done() await hass.async_block_till_done()
state = hass.states.get(f"plant.{plant_name}") state = hass.states.get(f"plant.{plant_name}")
@@ -148,7 +154,7 @@ async def test_state_problem_if_unavailable(hass: HomeAssistant) -> None:
hass.states.async_set( hass.states.async_set(
MOISTURE_ENTITY, MOISTURE_ENTITY,
STATE_UNAVAILABLE, STATE_UNAVAILABLE,
{ATTR_UNIT_OF_MEASUREMENT: UnitOfConductivity.MICROSIEMENS}, {ATTR_UNIT_OF_MEASUREMENT: UnitOfConductivity.MICROSIEMENS_PER_CM},
) )
await hass.async_block_till_done() await hass.async_block_till_done()
state = hass.states.get(f"plant.{plant_name}") state = hass.states.get(f"plant.{plant_name}")

View File

@@ -1785,7 +1785,7 @@ async def test_unit_conversion_priority_suggested_unit_change_2(
UnitOfBloodGlucoseConcentration.MILLIGRAMS_PER_DECILITER, UnitOfBloodGlucoseConcentration.MILLIGRAMS_PER_DECILITER,
0, 0,
), ),
(SensorDeviceClass.CONDUCTIVITY, UnitOfConductivity.MICROSIEMENS, 1), (SensorDeviceClass.CONDUCTIVITY, UnitOfConductivity.MICROSIEMENS_PER_CM, 1),
(SensorDeviceClass.CURRENT, UnitOfElectricCurrent.MILLIAMPERE, 0), (SensorDeviceClass.CURRENT, UnitOfElectricCurrent.MILLIAMPERE, 0),
(SensorDeviceClass.DATA_RATE, UnitOfDataRate.KILOBITS_PER_SECOND, 0), (SensorDeviceClass.DATA_RATE, UnitOfDataRate.KILOBITS_PER_SECOND, 0),
(SensorDeviceClass.DATA_SIZE, UnitOfInformation.KILOBITS, 0), (SensorDeviceClass.DATA_SIZE, UnitOfInformation.KILOBITS, 0),

View File

@@ -1,19 +1,12 @@
"""Test const module.""" """Test const module."""
from enum import Enum from enum import Enum
import logging
import sys
from unittest.mock import Mock, patch
import pytest import pytest
from homeassistant import const from homeassistant import const
from .common import ( from .common import help_test_all, import_and_test_deprecated_constant
extract_stack_to_frame,
help_test_all,
import_and_test_deprecated_constant,
)
def _create_tuples( def _create_tuples(
@@ -48,78 +41,3 @@ def test_deprecated_constant_name_changes(
replacement, replacement,
breaks_in_version, breaks_in_version,
) )
def test_deprecated_unit_of_conductivity_alias() -> None:
"""Test UnitOfConductivity deprecation."""
# Test the deprecated members are aliases
assert set(const.UnitOfConductivity) == {"S/cm", "μS/cm", "mS/cm"}
def test_deprecated_unit_of_conductivity_members(
caplog: pytest.LogCaptureFixture,
) -> None:
"""Test UnitOfConductivity deprecation."""
module_name = "config.custom_components.hue.light"
filename = f"/home/paulus/{module_name.replace('.', '/')}.py"
with (
patch.dict(sys.modules, {module_name: Mock(__file__=filename)}),
patch(
"homeassistant.helpers.frame.linecache.getline",
return_value="await session.close()",
),
patch(
"homeassistant.helpers.frame.get_current_frame",
return_value=extract_stack_to_frame(
[
Mock(
filename="/home/paulus/homeassistant/core.py",
lineno="23",
line="do_something()",
),
Mock(
filename=filename,
lineno="23",
line="await session.close()",
),
Mock(
filename="/home/paulus/aiohue/lights.py",
lineno="2",
line="something()",
),
]
),
),
):
const.UnitOfConductivity.SIEMENS # noqa: B018
const.UnitOfConductivity.MICROSIEMENS # noqa: B018
const.UnitOfConductivity.MILLISIEMENS # noqa: B018
assert len(caplog.record_tuples) == 3
def deprecation_message(member: str, replacement: str) -> str:
return (
f"The deprecated enum member UnitOfConductivity.{member} was used from hue. "
"It will be removed in HA Core 2025.11.0. Use UnitOfConductivity."
f"{replacement} instead, please report it to the author of the 'hue' custom"
" integration"
)
assert (
const.__name__,
logging.WARNING,
deprecation_message("SIEMENS", "SIEMENS_PER_CM"),
) in caplog.record_tuples
assert (
const.__name__,
logging.WARNING,
deprecation_message("MICROSIEMENS", "MICROSIEMENS_PER_CM"),
) in caplog.record_tuples
assert (
const.__name__,
logging.WARNING,
deprecation_message("MILLISIEMENS", "MILLISIEMENS_PER_CM"),
) in caplog.record_tuples

View File

@@ -281,48 +281,6 @@ _CONVERTED_VALUE: dict[
), ),
], ],
ConductivityConverter: [ ConductivityConverter: [
# Deprecated to deprecated
(5, UnitOfConductivity.SIEMENS, 5e3, UnitOfConductivity.MILLISIEMENS),
(5, UnitOfConductivity.SIEMENS, 5e6, UnitOfConductivity.MICROSIEMENS),
(5, UnitOfConductivity.MILLISIEMENS, 5e3, UnitOfConductivity.MICROSIEMENS),
(5, UnitOfConductivity.MILLISIEMENS, 5e-3, UnitOfConductivity.SIEMENS),
(5e6, UnitOfConductivity.MICROSIEMENS, 5e3, UnitOfConductivity.MILLISIEMENS),
(5e6, UnitOfConductivity.MICROSIEMENS, 5, UnitOfConductivity.SIEMENS),
# Deprecated to new
(5, UnitOfConductivity.SIEMENS, 5e3, UnitOfConductivity.MILLISIEMENS_PER_CM),
(5, UnitOfConductivity.SIEMENS, 5e6, UnitOfConductivity.MICROSIEMENS_PER_CM),
(
5,
UnitOfConductivity.MILLISIEMENS,
5e3,
UnitOfConductivity.MICROSIEMENS_PER_CM,
),
(5, UnitOfConductivity.MILLISIEMENS, 5e-3, UnitOfConductivity.SIEMENS_PER_CM),
(
5e6,
UnitOfConductivity.MICROSIEMENS,
5e3,
UnitOfConductivity.MILLISIEMENS_PER_CM,
),
(5e6, UnitOfConductivity.MICROSIEMENS, 5, UnitOfConductivity.SIEMENS_PER_CM),
# New to deprecated
(5, UnitOfConductivity.SIEMENS_PER_CM, 5e3, UnitOfConductivity.MILLISIEMENS),
(5, UnitOfConductivity.SIEMENS_PER_CM, 5e6, UnitOfConductivity.MICROSIEMENS),
(
5,
UnitOfConductivity.MILLISIEMENS_PER_CM,
5e3,
UnitOfConductivity.MICROSIEMENS,
),
(5, UnitOfConductivity.MILLISIEMENS_PER_CM, 5e-3, UnitOfConductivity.SIEMENS),
(
5e6,
UnitOfConductivity.MICROSIEMENS_PER_CM,
5e3,
UnitOfConductivity.MILLISIEMENS,
),
(5e6, UnitOfConductivity.MICROSIEMENS_PER_CM, 5, UnitOfConductivity.SIEMENS),
# New to new
( (
5, 5,
UnitOfConductivity.SIEMENS_PER_CM, UnitOfConductivity.SIEMENS_PER_CM,