Allow timeout decorator to handle @timeout as well as @timeout()

This commit is contained in:
Toshio Kuratomi 2016-12-19 10:41:27 -08:00 committed by Brian Coca
parent b4bd6c80de
commit 226124956c

View file

@ -101,6 +101,19 @@ def timeout(seconds=None, error_message="Timer expired"):
return wrapper
# If we were called as @timeout, then the first parameter will be the
# function we are to wrap instead of the number of seconds. Detect this
# and correct it by setting seconds to our default value and return the
# inner decorator function manually wrapped around the function
if callable(seconds):
func = seconds
seconds = 10
return decorator(func)
else:
# If we were called as @timeout([...]) then python itself will take
# care of wrapping the inner decorator around the function
return decorator
return decorator
# --------------------------------------------------------------