From 11220fad1d7eee24f1d9809c6d5023875099cb37 Mon Sep 17 00:00:00 2001 From: "Kurt B. Kaiser" Date: Tue, 24 Dec 2002 00:57:22 +0000 Subject: 1. RPC stack levels were not pruned from traceback unless IDLE was started from its source directory. 2. Replace final traceback '?' with '-toplevel-' 3. Remove duplicated import boolcheck --- Lib/idlelib/PyShell.py | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py index ffdde4e..d89802c 100644 --- a/Lib/idlelib/PyShell.py +++ b/Lib/idlelib/PyShell.py @@ -12,8 +12,6 @@ import traceback import types import exceptions -import boolcheck - import linecache from code import InteractiveInterpreter @@ -217,7 +215,7 @@ class PyShellEditorWindow(EditorWindow): lineno += 1 return lines -# XXX 13 Dec 2020 KBK Not used currently +# XXX 13 Dec 2002 KBK Not used currently # def saved_change_hook(self): # "Extend base method - clear breaks if module is modified" # if not self.get_saved(): @@ -395,15 +393,8 @@ class ModifiedInterpreter(InteractiveInterpreter): elif how == "EXCEPTION": mod, name, args, tb = what print >>file, 'Traceback (most recent call last):' - while tb and tb[0][0] in ("run.py", "rpc.py"): - del tb[0] - while tb and tb[-1][0] in ("run.py", "rpc.py"): - del tb[-1] - for i in range(len(tb)): - fn, ln, nm, line = tb[i] - if not line and fn.startswith(">file, errmsg, what self.tkconsole.endexecuting() + def cleanup_traceback(self, tb, exclude): + "Remove excluded traces from beginning/end of tb; get cached lines" + while tb: + for rpcfile in exclude: + if tb[0][0].count(rpcfile): + break # found an exclude, break for: and delete tb[0] + else: + break # no excludes, have left RPC code, break while: + del tb[0] + while tb: + for rpcfile in exclude: + if tb[-1][0].count(rpcfile): + break + else: + break + del tb[-1] + for i in range(len(tb)): + fn, ln, nm, line = tb[i] + if nm == '?': + nm = "-toplevel-" + if not line and fn.startswith("