]> granicus.if.org Git - python/commitdiff
Richard Wolff's changes:
authorGuido van Rossum <guido@python.org>
Fri, 11 Sep 1998 22:33:08 +0000 (22:33 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 11 Sep 1998 22:33:08 +0000 (22:33 +0000)
cmd.py  has incorporated the changes we discussed a couple of weeks ago
(a command queue, returning line from precmd, and stop from postcmd)
and some changes to help that were occasioned because I wanted to
inherit from pdb which inherits from cmd.py and the help routine
didn't look for commands or the associated help deeply enough.

Lib/cmd.py

index 20c01aae89a04a58f45b31876c4837ac68cab507..138cdb6034c26bc34ca89e8dbfdfcc35b54c3c2a 100644 (file)
@@ -131,15 +131,30 @@ class Cmd:
                                return
                        func()
                else:
-                       names = dir(self.__class__)
+                       # Inheritance says we have to look in class and
+                       # base classes; order is not important.
+                       names = []
+                       classes = [self.__class__]
+                       while classes:
+                               aclass = classes[0]
+                               if aclass.__bases__:
+                                   classes = classes + list(aclass.__bases__)
+                               names = names + dir(aclass)
+                               del classes[0]
                        cmds_doc = []
                        cmds_undoc = []
                        help = {}
                        for name in names:
                                if name[:5] == 'help_':
                                        help[name[5:]]=1
+                       names.sort()
+                       # There can be duplicates if routines overridden
+                       prevname = ''
                        for name in names:
                                if name[:3] == 'do_':
+                                       if name == prevname:
+                                               continue
+                                       prevname = name
                                        cmd=name[3:]
                                        if help.has_key(cmd):
                                                cmds_doc.append(cmd)