summaryrefslogtreecommitdiff
path: root/Lib/linecache.py
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2010-05-21 21:35:44 +0000
committerBenjamin Peterson <benjamin@python.org>2010-05-21 21:35:44 +0000
commit26da187193978ba497f8380fa3b1ad3fc67e94ad (patch)
tree8a9c4b657e06b97dc96db32e987d28380c0d9b54 /Lib/linecache.py
parentb9e7c012942f0cfb827686636e4fa718aba173f5 (diff)
downloadcpython-git-26da187193978ba497f8380fa3b1ad3fc67e94ad.tar.gz
simplify and modernize updatecache()
Diffstat (limited to 'Lib/linecache.py')
-rw-r--r--Lib/linecache.py22
1 files changed, 10 insertions, 12 deletions
diff --git a/Lib/linecache.py b/Lib/linecache.py
index da62f0d175..811f27fe36 100644
--- a/Lib/linecache.py
+++ b/Lib/linecache.py
@@ -72,13 +72,13 @@ def updatecache(filename, module_globals=None):
if filename in cache:
del cache[filename]
- if not filename or filename[0] + filename[-1] == '<>':
+ if not filename or (filename.startswith('<') and filename.endswith('>')):
return []
fullname = filename
try:
stat = os.stat(fullname)
- except os.error, msg:
+ except OSError:
basename = filename
# Try for a __loader__, if available
@@ -115,20 +115,18 @@ def updatecache(filename, module_globals=None):
fullname = os.path.join(dirname, basename)
except (TypeError, AttributeError):
# Not sufficiently string-like to do anything useful with.
+ continue
+ try:
+ stat = os.stat(fullname)
+ break
+ except os.error:
pass
- else:
- try:
- stat = os.stat(fullname)
- break
- except os.error:
- pass
else:
return []
try:
- fp = open(fullname, 'rU')
- lines = fp.readlines()
- fp.close()
- except IOError, msg:
+ with open(fullname, 'rU') as fp:
+ lines = fp.readlines()
+ except IOError:
return []
if lines and not lines[-1].endswith('\n'):
lines[-1] += '\n'