diff --git a/homeassistant/helpers/template.py b/homeassistant/helpers/template.py index b12ebca53c9..4a7676960b4 100644 --- a/homeassistant/helpers/template.py +++ b/homeassistant/helpers/template.py @@ -1463,7 +1463,7 @@ def forgiving_float_filter(value, default=_SENTINEL): return default -def forgiving_int(value, default=_SENTINEL, base=10): +def forgiving_int(value, base=10, default=_SENTINEL): """Try to convert value to an int, and warn if it fails.""" result = jinja2.filters.do_int(value, default=default, base=base) if result is _SENTINEL: @@ -1472,7 +1472,7 @@ def forgiving_int(value, default=_SENTINEL, base=10): return result -def forgiving_int_filter(value, default=_SENTINEL, base=10): +def forgiving_int_filter(value, base=10, default=_SENTINEL): """Try to convert value to an int, and warn if it fails.""" result = jinja2.filters.do_int(value, default=default, base=base) if result is _SENTINEL: diff --git a/tests/helpers/test_template.py b/tests/helpers/test_template.py index 4be9d527d31..d6a25496bbf 100644 --- a/tests/helpers/test_template.py +++ b/tests/helpers/test_template.py @@ -248,9 +248,14 @@ def test_int_filter(hass): hass.states.async_set("sensor.temperature", "0x10") assert render(hass, "{{ states.sensor.temperature.state | int(base=16) }}") == 16 + assert render(hass, "{{ states.sensor.temperature.state | int(16) }}") == 16 + + hass.states.async_set("sensor.temperature", "1111") + assert render(hass, "{{ states.sensor.temperature.state | int(base=2) }}") == 15 + assert render(hass, "{{ states.sensor.temperature.state | int(2) }}") == 15 assert render(hass, "{{ 'bad' | int }}") == 0 - assert render(hass, "{{ 'bad' | int(1) }}") == 1 + assert render(hass, "{{ 'bad' | int(10, 1) }}") == 1 assert render(hass, "{{ 'bad' | int(default=1) }}") == 1 @@ -262,9 +267,14 @@ def test_int_function(hass): hass.states.async_set("sensor.temperature", "0x10") assert render(hass, "{{ int(states.sensor.temperature.state, base=16) }}") == 16 + assert render(hass, "{{ int(states.sensor.temperature.state, 16) }}") == 16 + + hass.states.async_set("sensor.temperature", "1111") + assert render(hass, "{{ int(states.sensor.temperature.state, base=2) }}") == 15 + assert render(hass, "{{ int(states.sensor.temperature.state, 2) }}") == 15 assert render(hass, "{{ int('bad') }}") == "bad" - assert render(hass, "{{ int('bad', 1) }}") == 1 + assert render(hass, "{{ int('bad', 10, 1) }}") == 1 assert render(hass, "{{ int('bad', default=1) }}") == 1