from decorator import decorator from functools import partial def decoflex(decfac, *args, **kw): def wrapped(df, param=None, *args, **kw): return partial(df, param, *args, **kw) return partial(wrapped, decfac, *args, **kw) @decoflex def monkeypatch(cls, f, *args, **kwargs): if not hasattr(f, "__name__") and kwargs.get('fname', False): setattr(cls, fname, f) del kwargs['fname'] else: setattr(cls, f.__name__, f) return f @decorator def trace(f, *args, **kwargs): print "%s :: %s, %s" % (f.__name__, args, kwargs) return f(*args, **kwargs)