Source code for ulaval_notify.utils
import functools
# Taken from:
# https://stackoverflow.com/q/10610824 (Wed Jan 17 15:11:46 EST 2018)
[docs]class Decorator:
def __call__(self, f):
self.f = f
return functools.wraps(f)(
lambda *args, **kwargs: self.wraps(*args, **kwargs)
)
[docs] def wraps(self, *args, **kwrags):
raise NotImplemented("Subclasses of Decorator must implement 'wrap'")
[docs]class before(Decorator):
def __init__(self, g, *args, **kwargs):
self.g = functools.partial(g, *args, **kwargs)
[docs] def wraps(self, *args, **kwargs):
self.g()
self.f(*args, **kwargs)
[docs]def dummy_wrap(f, *args, **kwargs):
f(*args, **kwargs)
[docs]def run_as_daemon(f, *args, **kwargs):
try:
import daemon
with daemon.DaemonContext():
f(*args, **kwargs)
except (ImportError):
print('You must be on a UNIX platform to use this feature and must'
'have installed `python-daemon`')