[issue8720] undo findsource regression/change

holger krekel report at bugs.python.org
Sat May 15 00:59:55 CEST 2010


New submission from holger krekel <holger.krekel at gmail.com>:

Somewhere between python 3.0.1 and 3.1.2 the behaviour of inspect.findsource changed: it does not find the source code anymore for a code object whose filename/source is in the linecache.cache because instead of the previous::

    file = getsourcefile(object) or getfile(object)

it only does now::

    file = getsourcefile(object) 

IMO it is enough if findsource() raises if it can't eventually discover the source code - i don't see the need to do this ahead.

In any case, the r312 findsource version requires an ugly work around within py.test in order for it to continue to be able to use the inspect module with dynamically compiled code.  The underlying issue is that at code-compile time no sensible (PEP302 compliantly loaded) module can be constructed because this is only known at exec-time but this is not part of the test tool API and is done somewhere in user code. 

Proposed fix: revert to r301 behaviour and add back "or getfile(object)" to the first line of inspect.findsource()

----------
components: Library (Lib)
messages: 105776
nosy: benjamin.peterson, hpk
priority: normal
severity: normal
status: open
title: undo findsource regression/change
type: behavior
versions: Python 3.1

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


More information about the Python-bugs-list mailing list