]> granicus.if.org Git - python/commitdiff
simplify and modernize updatecache()
authorBenjamin Peterson <benjamin@python.org>
Fri, 21 May 2010 21:35:44 +0000 (21:35 +0000)
committerBenjamin Peterson <benjamin@python.org>
Fri, 21 May 2010 21:35:44 +0000 (21:35 +0000)
Lib/linecache.py

index da62f0d1751acba817f8f5aec4512a6158963b61..811f27fe3657c776fc5795d469f24cb21615492f 100644 (file)
@@ -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'