Merged revisions 81428-81429,81432-81433,81437 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r81428 | benjamin.peterson | 2010-05-21 16:16:12 -0500 (Fri, 21 May 2010) | 1 line

  use addCleanup
........
  r81429 | benjamin.peterson | 2010-05-21 16:17:22 -0500 (Fri, 21 May 2010) | 1 line

  fix name
........
  r81432 | benjamin.peterson | 2010-05-21 16:31:24 -0500 (Fri, 21 May 2010) | 1 line

  ensure the last line has a trailing newline #8782
........
  r81433 | benjamin.peterson | 2010-05-21 16:32:49 -0500 (Fri, 21 May 2010) | 1 line

  remove debugging rubish
........
  r81437 | benjamin.peterson | 2010-05-21 16:35:44 -0500 (Fri, 21 May 2010) | 1 line

  simplify and modernize updatecache()
........
This commit is contained in:
Benjamin Peterson 2010-05-21 21:45:06 +00:00
parent d25a5da9f2
commit aada7b8f78
3 changed files with 57 additions and 42 deletions

View file

@ -73,13 +73,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 as msg:
except OSError:
basename = filename
# Try for a __loader__, if available
@ -114,20 +114,23 @@ 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:
# No luck
return []
with open(fullname, 'rb') as fp:
coding, line = tokenize.detect_encoding(fp.readline)
with open(fullname, 'r', encoding=coding) as fp:
lines = fp.readlines()
try:
with open(fullname, 'rb') as fp:
coding, line = tokenize.detect_encoding(fp.readline)
with open(fullname, 'r', encoding=coding) as fp:
lines = fp.readlines()
except IOError:
pass
if lines and not lines[-1].endswith('\n'):
lines[-1] += '\n'
size, mtime = stat.st_size, stat.st_mtime
cache[filename] = size, mtime, lines, fullname
return lines