Add significant change helper check_valid_float (#106005)

This commit is contained in:
Michael 2023-12-18 21:59:30 +01:00 committed by GitHub
parent 446f560b59
commit 29e30e796a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 0 deletions

View File

@ -147,6 +147,15 @@ def check_percentage_change(
return _check_numeric_change(old_state, new_state, change, percentage_change)
def check_valid_float(value: str | int | float) -> bool:
"""Check if given value is a valid float."""
try:
float(value)
except ValueError:
return False
return True
class SignificantlyChangedChecker:
"""Class to keep track of entities to see if they have significantly changed.

View File

@ -72,3 +72,14 @@ async def test_significant_change_extra(hass: HomeAssistant, checker) -> None:
State(ent_id, "200", attrs), extra_arg=1
)
assert checker.async_is_significant_change(State(ent_id, "200", attrs), extra_arg=2)
async def test_check_valid_float(hass: HomeAssistant) -> None:
"""Test extra significant checker works."""
assert significant_change.check_valid_float("1")
assert significant_change.check_valid_float("1.0")
assert significant_change.check_valid_float(1)
assert significant_change.check_valid_float(1.0)
assert not significant_change.check_valid_float("")
assert not significant_change.check_valid_float("invalid")
assert not significant_change.check_valid_float("1.1.1")