mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 03:07:37 +00:00
Use display_precision if suggested_display_precision is None (#110270)
Co-authored-by: Richard <rikroe@users.noreply.github.com> Co-authored-by: Erik Montnemery <erik@montnemery.com>
This commit is contained in:
parent
44208a5be0
commit
474a1a3d94
@ -747,13 +747,15 @@ class SensorEntity(Entity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_):
|
|||||||
|
|
||||||
return value
|
return value
|
||||||
|
|
||||||
def _suggested_precision_or_none(self) -> int | None:
|
def _display_precision_or_none(self) -> int | None:
|
||||||
"""Return suggested display precision, or None if not set."""
|
"""Return display precision, or None if not set."""
|
||||||
assert self.registry_entry
|
assert self.registry_entry
|
||||||
if (sensor_options := self.registry_entry.options.get(DOMAIN)) and (
|
if not (sensor_options := self.registry_entry.options.get(DOMAIN)):
|
||||||
precision := sensor_options.get("suggested_display_precision")
|
return None
|
||||||
) is not None:
|
|
||||||
return cast(int, precision)
|
for option in ("display_precision", "suggested_display_precision"):
|
||||||
|
if (precision := sensor_options.get(option)) is not None:
|
||||||
|
return cast(int, precision)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def _update_suggested_precision(self) -> None:
|
def _update_suggested_precision(self) -> None:
|
||||||
@ -835,7 +837,7 @@ class SensorEntity(Entity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_):
|
|||||||
Called when the entity registry entry has been updated and before the sensor is
|
Called when the entity registry entry has been updated and before the sensor is
|
||||||
added to the state machine.
|
added to the state machine.
|
||||||
"""
|
"""
|
||||||
self._sensor_option_display_precision = self._suggested_precision_or_none()
|
self._sensor_option_display_precision = self._display_precision_or_none()
|
||||||
assert self.registry_entry
|
assert self.registry_entry
|
||||||
if (
|
if (
|
||||||
sensor_options := self.registry_entry.options.get(f"{DOMAIN}.private")
|
sensor_options := self.registry_entry.options.get(f"{DOMAIN}.private")
|
||||||
|
@ -1146,6 +1146,14 @@ async def test_unit_conversion_priority_precision(
|
|||||||
suggested_display_precision=suggested_precision,
|
suggested_display_precision=suggested_precision,
|
||||||
suggested_unit_of_measurement=suggested_unit,
|
suggested_unit_of_measurement=suggested_unit,
|
||||||
)
|
)
|
||||||
|
entity4 = MockSensor(
|
||||||
|
name="Test",
|
||||||
|
device_class=device_class,
|
||||||
|
native_unit_of_measurement=native_unit,
|
||||||
|
native_value=str(native_value),
|
||||||
|
suggested_display_precision=None,
|
||||||
|
unique_id="very_unique_4",
|
||||||
|
)
|
||||||
setup_test_component_platform(
|
setup_test_component_platform(
|
||||||
hass,
|
hass,
|
||||||
sensor.DOMAIN,
|
sensor.DOMAIN,
|
||||||
@ -1154,6 +1162,7 @@ async def test_unit_conversion_priority_precision(
|
|||||||
entity1,
|
entity1,
|
||||||
entity2,
|
entity2,
|
||||||
entity3,
|
entity3,
|
||||||
|
entity4,
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1230,6 +1239,21 @@ async def test_unit_conversion_priority_precision(
|
|||||||
round(custom_state, 4)
|
round(custom_state, 4)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Set a display_precision without having suggested_display_precision
|
||||||
|
entity_registry.async_update_entity_options(
|
||||||
|
entity4.entity_id,
|
||||||
|
"sensor",
|
||||||
|
{"display_precision": 4},
|
||||||
|
)
|
||||||
|
entry4 = entity_registry.async_get(entity4.entity_id)
|
||||||
|
assert "suggested_display_precision" not in entry4.options["sensor"]
|
||||||
|
assert entry4.options["sensor"]["display_precision"] == 4
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
state = hass.states.get(entity4.entity_id)
|
||||||
|
assert float(async_rounded_state(hass, entity4.entity_id, state)) == pytest.approx(
|
||||||
|
round(automatic_state, 4)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
(
|
(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user