[Python-checkins] python/dist/src/Lib linecache.py, 1.12, 1.13 traceback.py, 1.30, 1.31

perky at users.sourceforge.net perky at users.sourceforge.net
Tue Oct 26 11:16:44 CEST 2004


Update of /cvsroot/python/python/dist/src/Lib
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19767/Lib

Modified Files:
	linecache.py traceback.py 
Log Message:
SF #737473: Show up-to-date source code in tracebacks always.
And add an optional argument 'filename' to linecache.checkcache()
to enable checking caches per-file.


Index: linecache.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/linecache.py,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- linecache.py	29 Jun 2003 16:59:43 -0000	1.12
+++ linecache.py	26 Oct 2004 09:16:41 -0000	1.13
@@ -40,11 +40,19 @@
         return updatecache(filename)
 
 
-def checkcache():
+def checkcache(filename=None):
     """Discard cache entries that are out of date.
     (This is not checked upon each call!)"""
 
-    for filename in cache.keys():
+    if filename is None:
+        filenames = cache.keys()
+    else:
+        if filename in cache:
+            filenames = [filename]
+        else:
+            return
+
+    for filename in filenames:
         size, mtime, lines, fullname = cache[filename]
         try:
             stat = os.stat(fullname)

Index: traceback.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/traceback.py,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -d -r1.30 -r1.31
--- traceback.py	18 Jan 2004 20:29:54 -0000	1.30
+++ traceback.py	26 Oct 2004 09:16:41 -0000	1.31
@@ -65,6 +65,7 @@
         name = co.co_name
         _print(file,
                '  File "%s", line %d, in %s' % (filename,lineno,name))
+        linecache.checkcache(filename)
         line = linecache.getline(filename, lineno)
         if line: _print(file, '    ' + line.strip())
         tb = tb.tb_next
@@ -96,6 +97,7 @@
         co = f.f_code
         filename = co.co_filename
         name = co.co_name
+        linecache.checkcache(filename)
         line = linecache.getline(filename, lineno)
         if line: line = line.strip()
         else: line = None
@@ -277,6 +279,7 @@
         co = f.f_code
         filename = co.co_filename
         name = co.co_name
+        linecache.checkcache(filename)
         line = linecache.getline(filename, lineno)
         if line: line = line.strip()
         else: line = None



More information about the Python-checkins mailing list