golden hour
/opt/alt/python37/lib64/python3.7/idlelib
⬆️ Go Up
Upload
File/Folder
Size
Actions
CREDITS.txt
1.82 KB
Del
OK
ChangeLog
55.04 KB
Del
OK
HISTORY.txt
10.07 KB
Del
OK
Icons
-
Del
OK
NEWS.txt
47.65 KB
Del
OK
NEWS2x.txt
26.54 KB
Del
OK
README.txt
9.37 KB
Del
OK
TODO.txt
8.28 KB
Del
OK
__init__.py
396 B
Del
OK
__main__.py
159 B
Del
OK
__pycache__
-
Del
OK
autocomplete.py
8.74 KB
Del
OK
autocomplete_w.py
19.64 KB
Del
OK
autoexpand.py
3.14 KB
Del
OK
browser.py
8.12 KB
Del
OK
calltip.py
6.17 KB
Del
OK
calltip_w.py
6.99 KB
Del
OK
codecontext.py
11.06 KB
Del
OK
colorizer.py
12.69 KB
Del
OK
config-extensions.def
2.21 KB
Del
OK
config-highlight.def
2.8 KB
Del
OK
config-keys.def
10.65 KB
Del
OK
config-main.def
3.09 KB
Del
OK
config.py
37.28 KB
Del
OK
config_key.py
14.13 KB
Del
OK
configdialog.py
102.07 KB
Del
OK
debugger.py
18.66 KB
Del
OK
debugger_r.py
11.86 KB
Del
OK
debugobj.py
3.96 KB
Del
OK
debugobj_r.py
1.06 KB
Del
OK
delegator.py
1.02 KB
Del
OK
dynoption.py
1.97 KB
Del
OK
editor.py
64.08 KB
Del
OK
extend.txt
3.56 KB
Del
OK
filelist.py
3.8 KB
Del
OK
format.py
15.41 KB
Del
OK
grep.py
7.3 KB
Del
OK
help.html
60.76 KB
Del
OK
help.py
11.46 KB
Del
OK
help_about.py
8.77 KB
Del
OK
history.py
3.95 KB
Del
OK
hyperparser.py
12.58 KB
Del
OK
idle.py
454 B
Del
OK
idle.pyw
570 B
Del
OK
idle_test
-
Del
OK
iomenu.py
20.15 KB
Del
OK
macosx.py
9.44 KB
Del
OK
mainmenu.py
3.83 KB
Del
OK
multicall.py
18.21 KB
Del
OK
outwin.py
5.65 KB
Del
OK
parenmatch.py
7.04 KB
Del
OK
pathbrowser.py
3.12 KB
Del
OK
percolator.py
3.06 KB
Del
OK
pyparse.py
19.48 KB
Del
OK
pyshell.py
55.91 KB
Del
OK
query.py
14.55 KB
Del
OK
redirector.py
6.71 KB
Del
OK
replace.py
9.66 KB
Del
OK
rpc.py
20.64 KB
Del
OK
run.py
19.82 KB
Del
OK
runscript.py
8.58 KB
Del
OK
scrolledlist.py
4.36 KB
Del
OK
search.py
5.44 KB
Del
OK
searchbase.py
7.36 KB
Del
OK
searchengine.py
7.3 KB
Del
OK
sidebar.py
13.27 KB
Del
OK
squeezer.py
12.54 KB
Del
OK
stackviewer.py
4.35 KB
Del
OK
statusbar.py
1.41 KB
Del
OK
textview.py
6.65 KB
Del
OK
tooltip.py
6.41 KB
Del
OK
tree.py
15.97 KB
Del
OK
undo.py
10.79 KB
Del
OK
window.py
2.55 KB
Del
OK
zoomheight.py
4.1 KB
Del
OK
zzdummy.py
961 B
Del
OK
Edit: stackviewer.py
import linecache import os import sys import tkinter as tk from idlelib.debugobj import ObjectTreeItem, make_objecttreeitem from idlelib.tree import TreeNode, TreeItem, ScrolledCanvas def StackBrowser(root, flist=None, tb=None, top=None): global sc, item, node # For testing. if top is None: top = tk.Toplevel(root) sc = ScrolledCanvas(top, bg="white", highlightthickness=0) sc.frame.pack(expand=1, fill="both") item = StackTreeItem(flist, tb) node = TreeNode(sc.canvas, None, item) node.expand() class StackTreeItem(TreeItem): def __init__(self, flist=None, tb=None): self.flist = flist self.stack = self.get_stack(tb) self.text = self.get_exception() def get_stack(self, tb): if tb is None: tb = sys.last_traceback stack = [] if tb and tb.tb_frame is None: tb = tb.tb_next while tb is not None: stack.append((tb.tb_frame, tb.tb_lineno)) tb = tb.tb_next return stack def get_exception(self): type = sys.last_type value = sys.last_value if hasattr(type, "__name__"): type = type.__name__ s = str(type) if value is not None: s = s + ": " + str(value) return s def GetText(self): return self.text def GetSubList(self): sublist = [] for info in self.stack: item = FrameTreeItem(info, self.flist) sublist.append(item) return sublist class FrameTreeItem(TreeItem): def __init__(self, info, flist): self.info = info self.flist = flist def GetText(self): frame, lineno = self.info try: modname = frame.f_globals["__name__"] except: modname = "?" code = frame.f_code filename = code.co_filename funcname = code.co_name sourceline = linecache.getline(filename, lineno) sourceline = sourceline.strip() if funcname in ("?", "", None): item = "%s, line %d: %s" % (modname, lineno, sourceline) else: item = "%s.%s(...), line %d: %s" % (modname, funcname, lineno, sourceline) return item def GetSubList(self): frame, lineno = self.info sublist = [] if frame.f_globals is not frame.f_locals: item = VariablesTreeItem("<locals>", frame.f_locals, self.flist) sublist.append(item) item = VariablesTreeItem("<globals>", frame.f_globals, self.flist) sublist.append(item) return sublist def OnDoubleClick(self): if self.flist: frame, lineno = self.info filename = frame.f_code.co_filename if os.path.isfile(filename): self.flist.gotofileline(filename, lineno) class VariablesTreeItem(ObjectTreeItem): def GetText(self): return self.labeltext def GetLabelText(self): return None def IsExpandable(self): return len(self.object) > 0 def GetSubList(self): sublist = [] for key in self.object.keys(): try: value = self.object[key] except KeyError: continue def setfunction(value, key=key, object=self.object): object[key] = value item = make_objecttreeitem(key + " =", value, setfunction) sublist.append(item) return sublist def _stack_viewer(parent): # htest # from idlelib.pyshell import PyShellFileList top = tk.Toplevel(parent) top.title("Test StackViewer") x, y = map(int, parent.geometry().split('+')[1:]) top.geometry("+%d+%d" % (x + 50, y + 175)) flist = PyShellFileList(top) try: # to obtain a traceback object intentional_name_error except NameError: exc_type, exc_value, exc_tb = sys.exc_info() # inject stack trace to sys sys.last_type = exc_type sys.last_value = exc_value sys.last_traceback = exc_tb StackBrowser(top, flist=flist, top=top, tb=exc_tb) # restore sys to original state del sys.last_type del sys.last_value del sys.last_traceback if __name__ == '__main__': from unittest import main main('idlelib.idle_test.test_stackviewer', verbosity=2, exit=False) from idlelib.idle_test.htest import run run(_stack_viewer)
Save