Apologies, but the answer might be unsatisfactory. The syntactic use of decorators is confusing the situation. Let's simplify. Your question is equivalent to the following scenario:
################################ def logged(g): def wrapped(x): print "call" return g(x) return wrapped square = logged(lambda x: x * x) ################################# where we can only interact with the resulting environment afterwards. The function that you want to mock out has *already* been called by the time you have control. Monkey patching as a technique works only under late binding, when there's a name that you can use to swap out an original binding with a new one. But in the situation above, that's not applicable at all. The function value is not being referred to by some name that's externally accessible, so there's no handle to monkey-patch. Can you do something else instead besides trying to monkey-patch? Even if it were possible to do, if you can correct the original code, that might be preferable and use less magic. _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor