[issue21217] inspect.getsourcelines finds wrong lines when lambda used argument to decorator

Thomas Ballinger report at bugs.python.org
Mon Apr 14 19:31:00 CEST 2014


New submission from Thomas Ballinger:

https://gist.github.com/thomasballinger/10666031

"""
inspect.getsourcelines incorrectly guesses what lines correspond
to the function foo
 
see getblock in inspect.py
once it finds a lambda, def or class it finishes it then stops
so get getsourcelines returns only the first two noop decorator
lines of bar, while normal behavior is to return all decorators
as it does for foo
"""
import inspect
from pprint import pprint
 
def noop(arg):
    def inner(func):
        return func
    return inner
 
@noop(1)
@noop(2)
def foo():
    return 1
 
@noop(1)
@noop(lambda: None)
@noop(1)
def bar():
    return 1
 
pprint(inspect.getsourcelines(foo))
pprint(inspect.getsourcelines(bar))

----------
components: Library (Lib)
messages: 216127
nosy: ballingt
priority: normal
severity: normal
status: open
title: inspect.getsourcelines finds wrong lines when lambda used argument to decorator
type: behavior
versions: Python 2.7, Python 3.1, Python 3.2, Python 3.3, Python 3.4, Python 3.5

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue21217>
_______________________________________


More information about the Python-bugs-list mailing list