From f8dbcb953c8abec020da44bc1b581832405a17ba Mon Sep 17 00:00:00 2001 From: Petro31 <35082313+Petro31@users.noreply.github.com> Date: Fri, 15 Oct 2021 07:04:26 -0400 Subject: [PATCH] Swap order of int template helper kwargs (#57729) * swap order of int kwargs * Add binary and kwargless base tests --- homeassistant/helpers/template.py | 4 ++-- tests/helpers/test_template.py | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) 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