diff Lib/inspect.py @ 70799:6cc4579dca02 3.2

allow "fake" filenames in findsource (closes #9284) This allows findsource() to work in doctests. A patch from Dirkjan Ochtman.
author Benjamin Peterson <benjamin@python.org>
date Sat, 11 Jun 2011 15:53:11 -0500
parents 57e99f5f5e8f
children 2ef359d7a2e9 f05affb0bb2a
line wrap: on
line diff
--- a/Lib/inspect.py	Sat Jun 11 10:34:19 2011 +0200
+++ b/Lib/inspect.py	Sat Jun 11 15:53:11 2011 -0500
@@ -518,9 +518,13 @@
     or code object.  The source code is returned as a list of all the lines
     in the file and the line number indexes a line in that list.  An IOError
     is raised if the source code cannot be retrieved."""
-    file = getsourcefile(object)
-    if not file:
+
+    file = getfile(object)
+    sourcefile = getsourcefile(object)
+    if not sourcefile and file[0] + file[-1] != '<>':
         raise IOError('source code not available')
+    file = sourcefile if sourcefile else file
+
     module = getmodule(object, file)
     if module:
         lines = linecache.getlines(file, module.__dict__)