Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #56663
| From | Terry Reedy <tjreedy@udel.edu> |
|---|---|
| Subject | Re: Skipping decorators in unit tests |
| Date | 2013-10-11 04:32 -0400 |
| References | <525768a5$0$29984$c3e8da3$5496439d@news.astraweb.com> <20131011031319.GA30742@cskk.homeip.net> <l38c6t$g26$1@ger.gmane.org> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.995.1381480506.18130.python-list@python.org> (permalink) |
On 10/11/2013 4:17 AM, Terry Reedy wrote: > On 10/10/2013 11:13 PM, Cameron Simpson wrote: >> On 11Oct2013 02:55, Steven D'Aprano >> <steve+comp.lang.python@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. Another standard decorator method is to write a class with a .__call__ method and attach the original function to instances as an attribute. (Indeed, decorators were borrowed from class-happy Java ;-). But there is no standard as to what the function attribute of instances is called. The OP's request for accessing the function without modifying the tested code cannot be met in general. One must have access to the tested code. -- Terry Jan Reedy
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Skipping decorators in unit tests Gilles Lenfant <gilles.lenfant@gmail.com> - 2013-10-10 07:00 -0700
Re: Skipping decorators in unit tests Cameron Simpson <cs@zip.com.au> - 2013-10-11 09:12 +1100
Re: Skipping decorators in unit tests Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-10-11 02:55 +0000
Re: Skipping decorators in unit tests Cameron Simpson <cs@zip.com.au> - 2013-10-11 14:13 +1100
Re: Skipping decorators in unit tests Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-10-11 04:36 +0000
Re: Skipping decorators in unit tests Terry Reedy <tjreedy@udel.edu> - 2013-10-11 04:23 -0400
Re: Skipping decorators in unit tests Ben Finney <ben+python@benfinney.id.au> - 2013-10-11 14:42 +1100
Re: Skipping decorators in unit tests Terry Reedy <tjreedy@udel.edu> - 2013-10-11 04:17 -0400
Re: Skipping decorators in unit tests Terry Reedy <tjreedy@udel.edu> - 2013-10-11 04:25 -0400
Re: Skipping decorators in unit tests Terry Reedy <tjreedy@udel.edu> - 2013-10-11 04:32 -0400
Re: Skipping decorators in unit tests Ethan Furman <ethan@stoneleaf.us> - 2013-10-11 10:51 -0700
Re: Skipping decorators in unit tests Ned Batchelder <ned@nedbatchelder.com> - 2013-10-10 19:44 -0400
Re: Skipping decorators in unit tests Terry Reedy <tjreedy@udel.edu> - 2013-10-10 21:12 -0400
Re: Skipping decorators in unit tests Gilles Lenfant <gilles.lenfant@gmail.com> - 2013-10-11 02:37 -0700
Re: Skipping decorators in unit tests Cameron Simpson <cs@zip.com.au> - 2013-10-12 08:38 +1100
csiph-web