aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Ng <pnpnpn@users.noreply.github.com>2014-10-18 16:37:23 -0400
committerPatrick Ng <pnpnpn@users.noreply.github.com>2014-10-18 16:37:23 -0400
commit7f86ec1acafebe74fcc97324d164ff46de6479d4 (patch)
tree4131f9813b25a40d2985b80bdcb36053c56893ec
parentd13b00aadb9dc2953ae42d0821787a94619f4520 (diff)
parente7dfe05682a1070c255f272d28a14bb331978cae (diff)
downloadtimeout-decorator-7f86ec1acafebe74fcc97324d164ff46de6479d4.tar.gz
Merge pull request #5 from toddsifleet/tws-fix-issue-2
Use functools.wraps in decorator
-rw-r--r--tests/test_timeout_decorator.py8
-rw-r--r--timeout_decorator/timeout_decorator.py3
2 files changed, 10 insertions, 1 deletions
diff --git a/tests/test_timeout_decorator.py b/tests/test_timeout_decorator.py
index 143dfc8..c40c82e 100644
--- a/tests/test_timeout_decorator.py
+++ b/tests/test_timeout_decorator.py
@@ -37,3 +37,11 @@ def test_timeout_ok():
def f():
time.sleep(1)
f()
+
+
+def test_function_name():
+ @timeout(seconds=2)
+ def func_name():
+ pass
+
+ assert func_name.__name__ == 'func_name'
diff --git a/timeout_decorator/timeout_decorator.py b/timeout_decorator/timeout_decorator.py
index 2b86bfb..e44f544 100644
--- a/timeout_decorator/timeout_decorator.py
+++ b/timeout_decorator/timeout_decorator.py
@@ -11,6 +11,7 @@ from __future__ import unicode_literals
from __future__ import division
import signal
+from functools import wraps
############################################################
# Timeout
@@ -32,6 +33,7 @@ def timeout(seconds=None):
def handler(signum, frame):
raise TimeoutError()
+ @wraps(f)
def new_f(*args, **kwargs):
old = signal.signal(signal.SIGALRM, handler)
@@ -46,6 +48,5 @@ def timeout(seconds=None):
signal.signal(signal.SIGALRM, old)
signal.alarm(0)
return result
- new_f.func_name = f.func_name
return new_f
return decorate