Fix string parameter processing in parse_time_expression (#41468) (#41469)

This commit is contained in:
Dmitry 2020-10-09 11:48:49 +02:00 committed by GitHub
parent 9d1aa70c62
commit b106149588
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 3 deletions

View file

@ -213,9 +213,13 @@ def parse_time_expression(parameter: Any, min_value: int, max_value: int) -> Lis
"""Parse the time expression part and return a list of times to match."""
if parameter is None or parameter == MATCH_ALL:
res = list(range(min_value, max_value + 1))
elif isinstance(parameter, str) and parameter.startswith("/"):
parameter = int(parameter[1:])
res = [x for x in range(min_value, max_value + 1) if x % parameter == 0]
elif isinstance(parameter, str):
if parameter.startswith("/"):
parameter = int(parameter[1:])
res = [x for x in range(min_value, max_value + 1) if x % parameter == 0]
else:
res = [int(parameter)]
elif not hasattr(parameter, "__iter__"):
res = [int(parameter)]
else:

View file

@ -187,6 +187,7 @@ def test_parse_time_expression():
assert [x for x in range(24)] == dt_util.parse_time_expression("*", 0, 23)
assert [42] == dt_util.parse_time_expression(42, 0, 59)
assert [42] == dt_util.parse_time_expression("42", 0, 59)
with pytest.raises(ValueError):
dt_util.parse_time_expression(61, 0, 60)