diff options
author | Kevin Van Brunt <kmvanbrunt@gmail.com> | 2020-09-28 16:11:33 -0400 |
---|---|---|
committer | Kevin Van Brunt <kmvanbrunt@gmail.com> | 2020-09-28 16:11:33 -0400 |
commit | ea2fde52badce494ce73952f73f0743f18c5e890 (patch) | |
tree | 03475fd06569c63b3f5f9c97c6e09adc8581731a | |
parent | d348f09cf848a566a43b30e04aa6d3adbc4de8bc (diff) | |
download | cmd2-git-ea2fde52badce494ce73952f73f0743f18c5e890.tar.gz |
Only setting subcommand handler on attached_parser and not its parent parser
-rw-r--r-- | cmd2/cmd2.py | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/cmd2/cmd2.py b/cmd2/cmd2.py index 6e1a38ca..d1a26a2b 100644 --- a/cmd2/cmd2.py +++ b/cmd2/cmd2.py @@ -676,10 +676,6 @@ class Cmd(cmd.Cmd): raise CommandSetRegistrationError('Could not find argparser for command "{}" needed by subcommand: {}' .format(command_name, str(method))) - # Set the subcommand handler function - defaults = {constants.NS_ATTR_SUBCMD_HANDLER: method} - subcmd_parser.set_defaults(**defaults) - def find_subcommand(action: argparse.ArgumentParser, subcmd_names: List[str]) -> argparse.ArgumentParser: if not subcmd_names: return action @@ -720,6 +716,12 @@ class Cmd(cmd.Cmd): add_parser_kwargs['add_help'] = False attached_parser = action.add_parser(subcommand_name, **add_parser_kwargs) + + # Set the subcommand handler + defaults = {constants.NS_ATTR_SUBCMD_HANDLER: method} + attached_parser.set_defaults(**defaults) + + # Set what instance the handler is bound to setattr(attached_parser, constants.PARSER_ATTR_COMMANDSET, cmdset) break |