Skipping decorators in unit tests
Terry Reedy
tjreedy at udel.edu
Fri Oct 11 04:17:39 EDT 2013
On 10/10/2013 11:13 PM, Cameron Simpson wrote:
> On 11Oct2013 02:55, Steven D'Aprano <steve+comp.lang.python at pearwood.info> wrote:
>> def undecorate(f):
>> """Return the undecorated inner function from function f."""
>> return f.func_closure[0].cell_contents
>
> Whereas this feels like black magic. Is this portable to any decorated
> function? If so, I'd have hoped it was in the stdlib. If not: black magic.
>
>> And in use:
>>
>> py> f(100)
>> 201
>> py> undecorate(f)(100)
>> 200
>
> All lovely, provided you can convince me that undecorate() is robust.
> (And if you can, I'll certainly be filing it away in my funcutils
> module for later use.)
It only works if the decorator returns a closure with the original
function as the first member (of func_closure). Often true, but not at
all a requirement.
--
Terry Jan Reedy
More information about the Python-list
mailing list