Skip to content

Commit

Permalink
Variables can show/hide methods
Browse files Browse the repository at this point in the history
  • Loading branch information
nedbat committed May 12, 2015
1 parent 1b3ee78 commit c072d8f
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 6 deletions.
8 changes: 8 additions & 0 deletions pudb/debugger.py
Expand Up @@ -97,6 +97,7 @@ def newfunc(*fargs, **fkeywords):
h - toggle highlighting
@ - toggle repetition at top
* - toggle private members
m - toggle methods
w - toggle line wrapping
n/insert - add new watch expression
enter - edit options (also to delete)
Expand Down Expand Up @@ -766,6 +767,8 @@ def change_var_state(w, size, key):
iinfo.show_private_members = not iinfo.show_private_members
elif key == "w":
iinfo.wrap = not iinfo.wrap
elif key == "m":
iinfo.show_methods = not iinfo.show_methods

self.update_var_view()

Expand Down Expand Up @@ -817,6 +820,8 @@ def edit_inspector_detail(w, size, key):
"Repeated at top", iinfo.repeated_at_top)
show_private_checkbox = urwid.CheckBox(
"Show private members", iinfo.show_private_members)
show_methods_checkbox = urwid.CheckBox(
"Show methods", iinfo.show_methods)

lb = urwid.ListBox(urwid.SimpleListWalker(
id_segment+rb_grp+[
Expand All @@ -826,6 +831,7 @@ def edit_inspector_detail(w, size, key):
highlighted_checkbox,
repeated_at_top_checkbox,
show_private_checkbox,
show_methods_checkbox,
]))

result = self.dialog(lb, buttons, title=title)
Expand All @@ -836,6 +842,7 @@ def edit_inspector_detail(w, size, key):
iinfo.highlighted = highlighted_checkbox.get_state()
iinfo.repeated_at_top = repeated_at_top_checkbox.get_state()
iinfo.show_private_members = show_private_checkbox.get_state()
iinfo.show_methods = show_methods_checkbox.get_state()

if rb_show_type.get_state():
iinfo.display_type = "type"
Expand Down Expand Up @@ -885,6 +892,7 @@ def insert_watch(w, size, key):
self.var_list.listen("@", change_var_state)
self.var_list.listen("*", change_var_state)
self.var_list.listen("w", change_var_state)
self.var_list.listen("m", change_var_state)
self.var_list.listen("enter", edit_inspector_detail)
self.var_list.listen("n", insert_watch)
self.var_list.listen("insert", insert_watch)
Expand Down
18 changes: 12 additions & 6 deletions pudb/var_view.py
Expand Up @@ -45,6 +45,7 @@ def __init__(self):
self.highlighted = False
self.repeated_at_top = False
self.show_private_members = False
self.show_methods = False
self.wrap = CONFIG["wrap_variables"]


Expand Down Expand Up @@ -361,15 +362,18 @@ def walk_value(self, prefix, label, value, id_path=None, attr_prefix=None):
for key in ki]
keys.sort()

cnt_omitted = 0
cnt_omitted_private = cnt_omitted_methods = 0

for key in keys:
if key[0] == "_" and not iinfo.show_private_members:
cnt_omitted += 1
cnt_omitted_private += 1
continue

try:
attr_value = getattr(value, key)
if callable(attr_value) and not iinfo.show_methods:
cnt_omitted_methods += 1
continue
except:
attr_value = WatchEvalError()

Expand All @@ -378,11 +382,13 @@ def walk_value(self, prefix, label, value, id_path=None, attr_prefix=None):
"%s.%s" % (id_path, key))

if not keys:
if cnt_omitted:
self.add_item(prefix+self.PREFIX,
"<omitted private attributes>", None)
if cnt_omitted_private:
label = "<omitted private attributes>"
elif cnt_omitted_methods:
label = "<omitted methods>"
else:
self.add_item(prefix+self.PREFIX, "<empty>", None)
label = "<empty>"
self.add_item(prefix+self.PREFIX, label, None)

if not key_its:
self.add_item(prefix+self.PREFIX, "<?>", None)
Expand Down

0 comments on commit c072d8f

Please sign in to comment.