Search through the module search path.

Add a warning to the top that this is the case.
This commit is contained in:
Guido van Rossum 1992-03-27 15:12:43 +00:00
parent b5a40dcade
commit c341c62e81
1 changed files with 31 additions and 12 deletions

View File

@ -1,5 +1,9 @@
# Cache lines from files. # Cache lines from files.
# This is intended to read lines from modules imported -- hence if a filename
# is not found, it will look down the module search path for a file by
# that name.
import sys
import os import os
from stat import * from stat import *
@ -34,12 +38,13 @@ def getlines(filename):
# Discard cache entries that are out of date. # Discard cache entries that are out of date.
# (This is not checked upon each call # (This is not checked upon each call!)
def checkcache(): def checkcache():
for filename in cache.keys(): for filename in cache.keys():
size, mtime, lines = cache[filename] size, mtime, lines, fullname = cache[filename]
try: stat = os.stat(filename) try:
stat = os.stat(fullname)
except os.error: except os.error:
del cache[filename] del cache[filename]
continue continue
@ -52,20 +57,34 @@ def checkcache():
# and return an empty list. # and return an empty list.
def updatecache(filename): def updatecache(filename):
try: del cache[filename] if cache.has_key(filename):
except KeyError: pass del cache[filename]
try: stat = os.stat(filename) if filename[0] + filename[-1] == '<>':
return []
fullname = filename
try:
stat = os.stat(fullname)
except os.error, msg: except os.error, msg:
if filename[0] + filename[-1] <> '<>': # Try looking through the module search path
basename = os.path.split(filename)[1]
for dirname in sys.path:
fullname = os.path.join(dirname, basename)
try:
stat = os.stat(fullname)
break
except os.error:
pass
else:
# No luck
print '*** Cannot stat', filename, ':', msg print '*** Cannot stat', filename, ':', msg
return [] return []
try: try:
fp = open(filename, 'r') fp = open(fullname, 'r')
lines = fp.readlines() lines = fp.readlines()
fp.close() fp.close()
except IOError, msg: except IOError, msg:
print '*** Cannot open', filename, ':', msg print '*** Cannot open', fullname, ':', msg
return [] return []
size, mtime = stat[ST_SIZE], stat[ST_MTIME] size, mtime = stat[ST_SIZE], stat[ST_MTIME]
cache[filename] = size, mtime, lines cache[filename] = size, mtime, lines, fullname
return lines return lines