diff --git a/homeassistant/helpers/template.py b/homeassistant/helpers/template.py index 1a8febf5ac2..053beab307e 100644 --- a/homeassistant/helpers/template.py +++ b/homeassistant/helpers/template.py @@ -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 - return math.log(value_float, base_float) + 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): diff --git a/tests/helpers/test_template.py b/tests/helpers/test_template.py index ddda17c20ac..a1fd3e73f59 100644 --- a/tests/helpers/test_template.py +++ b/tests/helpers/test_template.py @@ -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):