Merge pull request #191 from dequis/signature-preserving-decorator

Make hooks.wrap preserve signatures, fixes hooking some pyqt5 callbacks
This commit is contained in:
Damien Elmes 2017-07-17 13:15:56 +10:00 committed by GitHub
commit 896889ad82
2 changed files with 17 additions and 1 deletions

View file

@ -13,6 +13,14 @@ If you call wrap() with pos='around', the original function will not be called
automatically but can be called with _old().
"""
import functools
try:
# optional: like functools.wraps, but signature-preserving
import decorator
except ImportError:
decorator = None
# Hooks
##############################################################################
@ -59,4 +67,11 @@ def wrap(old, new, pos="after"):
return old(*args, **kwargs)
else:
return new(_old=old, *args, **kwargs)
return repl
if decorator is None:
return functools.wraps(repl)
def decorator_wrapper(f, *args, **kwargs):
return repl(*args, **kwargs)
return decorator.decorator(decorator_wrapper)(old)

View file

@ -3,3 +3,4 @@ send2trash
httplib2
pyaudio
requests
decorator