Allow log template function to return specified default on math domain error (#72960)

Fix regression for logarithm template
This commit is contained in:
Raphaël Beamonte 2022-06-03 09:27:10 -04:00 committed by GitHub
parent 52149c442e
commit 88129dbe91
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 7 deletions

View File

@ -1369,19 +1369,19 @@ def multiply(value, amount, default=_SENTINEL):
def logarithm(value, base=math.e, default=_SENTINEL):
"""Filter and function to get logarithm of the value with a specific base."""
try:
value_float = float(value)
except (ValueError, TypeError):
if default is _SENTINEL:
raise_no_default("log", value)
return default
try:
base_float = float(base)
except (ValueError, TypeError):
if default is _SENTINEL:
raise_no_default("log", base)
return default
try:
value_float = float(value)
return math.log(value_float, base_float)
except (ValueError, TypeError):
if default is _SENTINEL:
raise_no_default("log", value)
return default
def sine(value, default=_SENTINEL):

View File

@ -447,6 +447,8 @@ def test_logarithm(hass):
assert render(hass, "{{ 'no_number' | log(10, default=1) }}") == 1
assert render(hass, "{{ log('no_number', 10, 1) }}") == 1
assert render(hass, "{{ log('no_number', 10, default=1) }}") == 1
assert render(hass, "{{ log(0, 10, 1) }}") == 1
assert render(hass, "{{ log(0, 10, default=1) }}") == 1
def test_sine(hass):