Commit 0c445796 authored by Neil Schemenauer's avatar Neil Schemenauer

Use linecache for loading source code. Closes SF patch 490374.

parent 2c2ae458
...@@ -27,7 +27,7 @@ Here are some of the useful functions provided by this module: ...@@ -27,7 +27,7 @@ Here are some of the useful functions provided by this module:
__author__ = 'Ka-Ping Yee <ping@lfw.org>' __author__ = 'Ka-Ping Yee <ping@lfw.org>'
__date__ = '1 Jan 2001' __date__ = '1 Jan 2001'
import sys, os, types, string, re, dis, imp, tokenize import sys, os, types, string, re, dis, imp, tokenize, linecache
# ----------------------------------------------------------- type-checking # ----------------------------------------------------------- type-checking
def ismodule(object): def ismodule(object):
...@@ -381,12 +381,10 @@ def findsource(object): ...@@ -381,12 +381,10 @@ def findsource(object):
or code object. The source code is returned as a list of all the lines 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 in the file and the line number indexes a line in that list. An IOError
is raised if the source code cannot be retrieved.""" is raised if the source code cannot be retrieved."""
try: file = getsourcefile(object) or getfile(object)
file = open(getsourcefile(object)) lines = linecache.getlines(file)
except (TypeError, IOError): if not lines:
raise IOError, 'could not get source code' raise IOError, 'could not get source code'
lines = file.readlines()
file.close()
if ismodule(object): if ismodule(object):
return lines, 0 return lines, 0
...@@ -706,7 +704,7 @@ def getframeinfo(frame, context=1): ...@@ -706,7 +704,7 @@ def getframeinfo(frame, context=1):
if not isframe(frame): if not isframe(frame):
raise TypeError, 'arg is not a frame or traceback object' raise TypeError, 'arg is not a frame or traceback object'
filename = getsourcefile(frame) filename = getsourcefile(frame) or getfile(frame)
lineno = getlineno(frame) lineno = getlineno(frame)
if context > 0: if context > 0:
start = lineno - 1 - context//2 start = lineno - 1 - context//2
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment