[Python-checkins] r77332 - in python/trunk/Lib: cmd.py test/test_cmd.py
georg.brandl
python-checkins at python.org
Wed Jan 6 19:02:17 CET 2010
Author: georg.brandl
Date: Wed Jan 6 19:02:16 2010
New Revision: 77332
Log:
#5991: let completion for the "help" command include help topics.
This also simplifies the Cmd.get_names() method implementation; it was written
at a time where dir() didn't consider base class attributes.
Modified:
python/trunk/Lib/cmd.py
python/trunk/Lib/test/test_cmd.py
Modified: python/trunk/Lib/cmd.py
==============================================================================
--- python/trunk/Lib/cmd.py (original)
+++ python/trunk/Lib/cmd.py Wed Jan 6 19:02:16 2010
@@ -281,19 +281,15 @@
return None
def get_names(self):
- # Inheritance says we have to look in class and
- # base classes; order is not important.
- names = []
- classes = [self.__class__]
- while classes:
- aclass = classes.pop(0)
- if aclass.__bases__:
- classes = classes + list(aclass.__bases__)
- names = names + dir(aclass)
- return names
+ # This method used to pull in base class attributes
+ # at a time dir() didn't do it yet.
+ return dir(self.__class__)
def complete_help(self, *args):
- return self.completenames(*args)
+ commands = set(self.completenames(*args))
+ topics = set(a[5:] for a in self.get_names()
+ if a.startswith('help_' + args[0]))
+ return list(commands | topics)
def do_help(self, arg):
if arg:
Modified: python/trunk/Lib/test/test_cmd.py
==============================================================================
--- python/trunk/Lib/test/test_cmd.py (original)
+++ python/trunk/Lib/test/test_cmd.py Wed Jan 6 19:02:16 2010
@@ -57,15 +57,17 @@
>>> mycmd.completenames("12")
[]
>>> mycmd.completenames("help")
- ['help', 'help']
+ ['help']
Test for the function complete_help():
>>> mycmd.complete_help("a")
['add']
>>> mycmd.complete_help("he")
- ['help', 'help']
+ ['help']
>>> mycmd.complete_help("12")
[]
+ >>> sorted(mycmd.complete_help(""))
+ ['add', 'exit', 'help', 'shell']
Test for the function do_help():
>>> mycmd.do_help("testet")
More information about the Python-checkins
mailing list