co_firstlineno on decorated functions

Eli Bendersky eliben at gmail.com
Sun Aug 1 22:15:55 EDT 2010


Hello,

I've been tinkering with __code__.co_firstlineno for testing the trace.py
module (Python Issue 9315), and ran into an interesting problem. Consider
this code:


def dummydecorator(f):
    return f

def foo(a):
    return a

@dummydecorator
def bar(a):
    return a


if __name__ == "__main__":
    print foo.__code__.co_firstlineno
    print bar.__code__.co_firstlineno

----
The first print out correctly specifies the line "def foo" is in. However,
the second one points to the line with "@dummydecorator" instead of "def
bar". [Python 2.6]

The side-effects of this behavior can be easily seen in the output of
modules like trace and profile. Would you say it's normal, or could this be
considered a bug?

Eli
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20100802/12c7cdfe/attachment.html>


More information about the Python-list mailing list