cmdln
cmdln copied to clipboard
do_* docstring can cause exn in global -h response [moved]
This is Issue 22 moved from a Google Code project. Added by 2010-01-27T19:19:17.000Z by [email protected]. Please review that bug for more context and additional comments, but update this bug.
Original labels: Type-Defect, Priority-Medium
Original description
Given:
def do_foo(self, subcmd, opts):
"""${cmd_usage}
${cmd_option_list}
"""
[...]
"command help foo" works as expected, but "command -h" gives a traceback
similar to the following:
Traceback (most recent call last):
File ".\maintain-nightlies.py", line 27, in <module>
sys.exit(mn.main())
File "C:\Users\kjw\AppData\Roaming\Python\Python26\site-packages
\cmdln.py", line 238, in main
self.options, args = self.optparser.parse_args(argv[1:])
File "C:\Python26\lib\optparse.py", line 1394, in parse_args
stop = self._process_args(largs, rargs, values)
File "C:\Python26\lib\optparse.py", line 1438, in _process_args
self._process_short_opts(rargs, values)
File "C:\Python26\lib\optparse.py", line 1545, in _process_short_opts
option.process(opt, value, values, self)
File "C:\Python26\lib\optparse.py", line 788, in process
self.action, self.dest, opt, value, values, parser)
File "C:\Python26\lib\optparse.py", line 810, in take_action
parser.print_help()
File "C:\Users\kjw\AppData\Roaming\Python\Python26\site-packages
\cmdln.py", line 975, in print_help
self.cmdln.onecmd(["help"])
File "C:\Users\kjw\AppData\Roaming\Python\Python26\site-packages
\cmdln.py", line 412, in onecmd
return self._dispatch_cmd(handler, argv)
File "C:\Users\kjw\AppData\Roaming\Python\Python26\site-packages
\cmdln.py", line 1084, in _dispatch_cmd
return handler(argv)
File "C:\Users\kjw\AppData\Roaming\Python\Python26\site-packages
\cmdln.py", line 517, in do_help
doc = self._help_preprocess(doc, cmdname)
File "C:\Users\kjw\AppData\Roaming\Python\Python26\site-packages
\cmdln.py", line 598, in _help_preprocess
help = preprocessor(help, cmdname)
File "C:\Users\kjw\AppData\Roaming\Python\Python26\site-packages
\cmdln.py", line 739, in _help_preprocess_cmd_usage
handler = self._get_cmd_handler(cmdname)
File "C:\Users\kjw\AppData\Roaming\Python\Python26\site-packages
\cmdln.py", line 865, in _get_cmd_handler
handler = getattr(self, 'do_' + cmdname)
TypeError: cannot concatenate 'str' and 'NoneType' objects