Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Fix StackTreeItem def and calls.
  • Loading branch information
terryjreedy committed Jun 8, 2023
commit 144d3fda561d8a6e4b11f00a58f471c96eb08117
7 changes: 3 additions & 4 deletions Lib/idlelib/run.py
Original file line number Diff line number Diff line change
Expand Up @@ -622,17 +622,16 @@ def get_the_completion_list(self, what, mode):

def stackviewer(self, flist_oid=None):
if self.user_exc_info:
typ, val, tb = self.user_exc_info
_, exc, tb = self.user_exc_info
else:
return None
flist = None
if flist_oid is not None:
flist = self.rpchandler.get_remote_proxy(flist_oid)
while tb and tb.tb_frame.f_globals["__name__"] in ["rpc", "run"]:
tb = tb.tb_next
sys.last_type = typ
sys.last_value = val
item = stackviewer.StackTreeItem(flist, tb)
exc.__traceback__ = tb
item = stackviewer.StackTreeItem(exc, flist)
return debugobj_r.remote_object_tree_item(item)


Expand Down
17 changes: 5 additions & 12 deletions Lib/idlelib/stackviewer.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,17 @@ def StackBrowser(root, exc, flist=None, top=None):
top = tk.Toplevel(root)
sc = ScrolledCanvas(top, bg="white", highlightthickness=0)
sc.frame.pack(expand=1, fill="both")
item = StackTreeItem(flist, exc)
item = StackTreeItem(exc, flist)
node = TreeNode(sc.canvas, None, item)
node.expand()


class StackTreeItem(TreeItem):

def __init__(self, flist=None, exc=None):
def __init__(self, exc, flist=None):
self.flist = flist
self.stack = self.get_stack(None if exc is None else exc.__traceback__)
self.text = self.get_exception(exc)
self.text = f"{type(exc).__name__}: {str(exc)}"

def get_stack(self, tb):
stack = []
Expand All @@ -33,14 +33,7 @@ def get_stack(self, tb):
tb = tb.tb_next
return stack

def get_exception(self, exc):
typ = None if exc is None else type(exc)
if hasattr(typ, "__name__"):
typ = typ.__name__
s = str(typ) + ": " + str(exc)
return s

def GetText(self):
def GetText(self): # Titlecase names are overrides.
return self.text

def GetSubList(self):
Expand Down Expand Up @@ -128,7 +121,7 @@ def _stack_viewer(parent): # htest #
try: # to obtain a traceback object
intentional_name_error
except NameError as e:
sb = StackBrowser(top, e, flist=flist, top=top)
StackBrowser(top, e, flist=flist, top=top)


if __name__ == '__main__':
Expand Down