From f7a8899f33fb0a1efe6cb57fc1b712fa1059d0a6 Mon Sep 17 00:00:00 2001 From: "Kurt B. Kaiser" Date: Sat, 13 Nov 2004 21:05:58 +0000 Subject: [PATCH] The change in the linecache.checkcache() signature at rev 1.13 caused IDLE to exit when an exception was raised while running w/o the subprocess. Python Bug 1063840 M NEWS.txt M PyShell.py --- Lib/idlelib/NEWS.txt | 3 +++ Lib/idlelib/PyShell.py | 14 ++++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt index 4df9fa555f7..931d67e06f7 100644 --- a/Lib/idlelib/NEWS.txt +++ b/Lib/idlelib/NEWS.txt @@ -3,6 +3,9 @@ What's New in IDLE 1.1b3/rc1? *Release date: XX-XXX-2004* +- A change to the linecache.py API caused IDLE to exit when an exception was + raised while running without the subprocess (-n switch). Python Bug 1063840. + What's New in IDLE 1.1b2? ========================= diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py index 313c95d1bab..887d63804c4 100644 --- a/Lib/idlelib/PyShell.py +++ b/Lib/idlelib/PyShell.py @@ -73,14 +73,16 @@ def idle_formatwarning(message, category, filename, lineno): return s warnings.formatwarning = idle_formatwarning -def extended_linecache_checkcache(orig_checkcache=linecache.checkcache): +def extended_linecache_checkcache(filename=None, + orig_checkcache=linecache.checkcache): """Extend linecache.checkcache to preserve the entries - Rather than repeating the linecache code, patch it to save the pyshell# - entries, call the original linecache.checkcache(), and then restore the - saved entries. Assigning the orig_checkcache keyword arg freezes its value - at definition time to the (original) method linecache.checkcache(), i.e. - makes orig_checkcache lexical. + Rather than repeating the linecache code, patch it to save the + entries, call the original linecache.checkcache() + (which destroys them), and then restore the saved entries. + + orig_checkcache is bound at definition time to the original + method, allowing it to be patched. """ cache = linecache.cache