From 465fdc02a3c41cfe209e280c32a77c48e3a966fa Mon Sep 17 00:00:00 2001 From: Sam Denton Date: Tue, 3 May 2022 22:36:52 -0500 Subject: gh-67248: cmd: Sort miscellaneous help topics (#92254) Closes #67248 --- Lib/cmd.py | 10 +++---- Lib/test/test_cmd.py | 32 +++++++++++++++++++--- .../2022-05-03-19-06-38.gh-issue-67248.DK61Go.rst | 1 + 3 files changed, 34 insertions(+), 9 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2022-05-03-19-06-38.gh-issue-67248.DK61Go.rst diff --git a/Lib/cmd.py b/Lib/cmd.py index 859e910..88ee7d3 100644 --- a/Lib/cmd.py +++ b/Lib/cmd.py @@ -310,10 +310,10 @@ class Cmd: names = self.get_names() cmds_doc = [] cmds_undoc = [] - help = {} + topics = set() for name in names: if name[:5] == 'help_': - help[name[5:]]=1 + topics.add(name[5:]) names.sort() # There can be duplicates if routines overridden prevname = '' @@ -323,16 +323,16 @@ class Cmd: continue prevname = name cmd=name[3:] - if cmd in help: + if cmd in topics: cmds_doc.append(cmd) - del help[cmd] + topics.remove(cmd) elif getattr(self, name).__doc__: cmds_doc.append(cmd) else: cmds_undoc.append(cmd) self.stdout.write("%s\n"%str(self.doc_leader)) self.print_topics(self.doc_header, cmds_doc, 15,80) - self.print_topics(self.misc_header, list(help.keys()),15,80) + self.print_topics(self.misc_header, sorted(topics),15,80) self.print_topics(self.undoc_header, cmds_undoc, 15,80) def print_topics(self, header, cmds, cmdlen, maxcol): diff --git a/Lib/test/test_cmd.py b/Lib/test/test_cmd.py index 5e8b17c..319801c 100644 --- a/Lib/test/test_cmd.py +++ b/Lib/test/test_cmd.py @@ -70,7 +70,7 @@ class samplecmdclass(cmd.Cmd): >>> mycmd.complete_help("12") [] >>> sorted(mycmd.complete_help("")) - ['add', 'exit', 'help', 'shell'] + ['add', 'exit', 'help', 'life', 'meaning', 'shell'] Test for the function do_help(): >>> mycmd.do_help("testet") @@ -79,12 +79,20 @@ class samplecmdclass(cmd.Cmd): help text for add >>> mycmd.onecmd("help add") help text for add + >>> mycmd.onecmd("help meaning") # doctest: +NORMALIZE_WHITESPACE + Try and be nice to people, avoid eating fat, read a good book every + now and then, get some walking in, and try to live together in peace + and harmony with people of all creeds and nations. >>> mycmd.do_help("") Documented commands (type help ): ======================================== add help + Miscellaneous help topics: + ========================== + life meaning + Undocumented commands: ====================== exit shell @@ -115,17 +123,22 @@ class samplecmdclass(cmd.Cmd): This test includes the preloop(), postloop(), default(), emptyline(), parseline(), do_help() functions >>> mycmd.use_rawinput=0 - >>> mycmd.cmdqueue=["", "add", "add 4 5", "help", "help add","exit"] - >>> mycmd.cmdloop() + + >>> mycmd.cmdqueue=["add", "add 4 5", "", "help", "help add", "exit"] + >>> mycmd.cmdloop() # doctest: +REPORT_NDIFF Hello from preloop - help text for add *** invalid number of arguments 9 + 9 Documented commands (type help ): ======================================== add help + Miscellaneous help topics: + ========================== + life meaning + Undocumented commands: ====================== exit shell @@ -165,6 +178,17 @@ class samplecmdclass(cmd.Cmd): print("help text for add") return + def help_meaning(self): + print("Try and be nice to people, avoid eating fat, read a " + "good book every now and then, get some walking in, " + "and try to live together in peace and harmony with " + "people of all creeds and nations.") + return + + def help_life(self): + print("Always look on the bright side of life") + return + def do_exit(self, arg): return True diff --git a/Misc/NEWS.d/next/Library/2022-05-03-19-06-38.gh-issue-67248.DK61Go.rst b/Misc/NEWS.d/next/Library/2022-05-03-19-06-38.gh-issue-67248.DK61Go.rst new file mode 100644 index 0000000..8237934 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2022-05-03-19-06-38.gh-issue-67248.DK61Go.rst @@ -0,0 +1 @@ +Sort the miscellaneous topics in Cmd.do_help() -- cgit v0.12