Fix time functions would throw errors in python scripts (#11414)

* Fix time functions would throw errors in python scripts

* Added unit test for time.strptime, change variable name to satisfy lint

* Added docstring for time attribute wrapper method to satisfy lint

* Fixed line too long lint problem
pull/11437/merge
Tom Waters 2018-01-07 00:50:55 +00:00 committed by Pascal Vizeli
parent 5c2cecde70
commit 939d1b5ff6
2 changed files with 11 additions and 1 deletions

View File

@ -202,4 +202,11 @@ class TimeWrapper:
def __getattr__(self, attr):
"""Fetch an attribute from Time module."""
return getattr(time, attr)
attribute = getattr(time, attr)
if callable(attribute):
def wrapper(*args, **kw):
"""Wrapper to return callable method if callable."""
return attribute(*args, **kw)
return wrapper
else:
return attribute

View File

@ -236,6 +236,8 @@ def test_exposed_modules(hass, caplog):
caplog.set_level(logging.ERROR)
source = """
hass.states.set('module.time', time.strftime('%Y', time.gmtime(521276400)))
hass.states.set('module.time_strptime',
time.strftime('%H:%M', time.strptime('12:34', '%H:%M')))
hass.states.set('module.datetime',
datetime.timedelta(minutes=1).total_seconds())
"""
@ -244,6 +246,7 @@ hass.states.set('module.datetime',
yield from hass.async_block_till_done()
assert hass.states.is_state('module.time', '1986')
assert hass.states.is_state('module.time_strptime', '12:34')
assert hass.states.is_state('module.datetime', '60.0')
# No errors logged = good