- Don't crash in the case where a superclass is a string instead of a
pyclbr.Class object; this can happen when the superclass is
unrecognizable (to pyclbr), e.g. when module renaming is used.
- Show a watch cursor when calling pyclbr (since it may take a while
recursively parsing imported modules!).
diff --git a/Tools/idle/PathBrowser.py b/Tools/idle/PathBrowser.py
index 06c9ff7..d8f5b55 100644
--- a/Tools/idle/PathBrowser.py
+++ b/Tools/idle/PathBrowser.py
@@ -78,7 +78,12 @@
self.top.bell()
return []
try:
- dict = pyclbr.readmodule(name, [dir] + sys.path)
+ self.top.configure(cursor="watch")
+ self.top.update_idletasks()
+ try:
+ dict = pyclbr.readmodule(name, [dir] + sys.path)
+ finally:
+ self.top.configure(cursor="")
except ImportError, msg:
tkMessageBox.showerror("Import error", str(msg), parent=root)
return []
@@ -90,9 +95,12 @@
if cl.super:
supers = []
for sup in cl.super:
- sname = sup.name
- if sup.module != cl.module:
- sname = "%s.%s" % (sup.module, sname)
+ if type(sup) is type(''):
+ sname = sup
+ else:
+ sname = sup.name
+ if sup.module != cl.module:
+ sname = "%s.%s" % (sup.module, sname)
supers.append(sname)
s = s + "(%s)" % string.join(supers, ", ")
items.append((cl.lineno, s))