Re:Goto decorator for python
by tlb on Sunday March 11, 2012 @07:00PM
(#3691537)
Neat. I'd sometimes wondered if munging the AST in a decorator to add some new control flow was practical. The code looks a bit fragile but not excessively painful.
[ Parent
| on HN ]
Re:Goto decorator for python
by albertzeyer on Sunday March 11, 2012 @08:07PM
(#3691735)
The problem is that in the decorator, you just get the compiled function. So you can modify the bytecode but not operate on the AST anymore.
I thought about this and wrote a patch for CPython that it also stores the original AST of any compiled function in the function object.
Some discussion about this:
You can find the line number that the func was defined in and reparse the source. I do this in quite a few decorators that need source.
The other option is to wrap the thing decorated in a doc string
@fancy_source_needing_decorator
def foo(s):
"""
put some haskell or DSL stuff in here
"""
Then you don't have to reparse the source, etc etc, but it still gets packaged as a function.Would you mind linking to some examples? I'd love to read them.
Re:Goto decorator for python
by cheatercheater on Monday March 12, 2012 @08:37PM
(#3696417)
I remember this being used in a unit testing framework of some sort.. maybe twisted's?