From a439e087e1e97aa584d0d3b015900d60542d3cbb Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Sat, 22 Jun 2019 13:39:33 +0200 Subject: [PATCH] Fix time expression parsing (#24696) --- homeassistant/util/dt.py | 4 ++-- tests/util/test_dt.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/util/dt.py b/homeassistant/util/dt.py index b3f7cdd434c..b0c80399064 100644 --- a/homeassistant/util/dt.py +++ b/homeassistant/util/dt.py @@ -221,7 +221,7 @@ def parse_time_expression(parameter: Any, min_value: int, max_value: int) \ if parameter is None or parameter == MATCH_ALL: res = [x for x in range(min_value, max_value + 1)] elif isinstance(parameter, str) and parameter.startswith('/'): - parameter = float(parameter[1:]) + parameter = int(parameter[1:]) res = [x for x in range(min_value, max_value + 1) if x % parameter == 0] elif not hasattr(parameter, '__iter__'): @@ -302,7 +302,7 @@ def find_next_time_expression_time(now: dt.datetime, next_hour = _lower_bound(hours, result.hour) if next_hour != result.hour: # We're in the next hour. Seconds+minutes needs to be reset. - result.replace(second=seconds[0], minute=minutes[0]) + result = result.replace(second=seconds[0], minute=minutes[0]) if next_hour is None: # No minute to match in this day. Roll-over to next day. diff --git a/tests/util/test_dt.py b/tests/util/test_dt.py index 61f10ab1bf6..19d96227a44 100644 --- a/tests/util/test_dt.py +++ b/tests/util/test_dt.py @@ -213,7 +213,7 @@ def test_find_next_time_expression_time_basic(): assert datetime(2018, 10, 7, 10, 30, 0) == \ find(datetime(2018, 10, 7, 10, 30, 0), '*', '/30', 0) - assert datetime(2018, 10, 7, 12, 30, 30) == \ + assert datetime(2018, 10, 7, 12, 0, 30) == \ find(datetime(2018, 10, 7, 10, 30, 0), '/3', '/30', [30, 45]) assert datetime(2018, 10, 8, 5, 0, 0) == \