diff options
author | Kevin Van Brunt <kmvanbrunt@gmail.com> | 2019-07-29 18:02:57 -0400 |
---|---|---|
committer | Kevin Van Brunt <kmvanbrunt@gmail.com> | 2019-07-29 18:02:57 -0400 |
commit | 89ba3fac402f4c121ebfe38699348d9fd198fd9a (patch) | |
tree | 513146bc2a0f3b1746da9618c3423e0cad7e2da5 /cmd2/argparse_custom.py | |
parent | f419192b71f816952b4f160c6b97986a5b8c9fd9 (diff) | |
download | cmd2-git-89ba3fac402f4c121ebfe38699348d9fd198fd9a.tar.gz |
Raising exception when a choices or completer function is used for an argument that takes no values
Diffstat (limited to 'cmd2/argparse_custom.py')
-rw-r--r-- | cmd2/argparse_custom.py | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/cmd2/argparse_custom.py b/cmd2/argparse_custom.py index da5410d0..5432314b 100644 --- a/cmd2/argparse_custom.py +++ b/cmd2/argparse_custom.py @@ -346,13 +346,17 @@ def _add_argument_wrapper(self, *args, new_arg = orig_actions_container_add_argument(self, *args, **kwargs) # Verify consistent use of arguments - choice_params = [new_arg.choices, choices_function, choices_method, completer_function, completer_method] - num_set = len(choice_params) - choice_params.count(None) + choices_params = [new_arg.choices, choices_function, choices_method, completer_function, completer_method] + num_params_set = len(choices_params) - choices_params.count(None) - if num_set > 1: - err_msg = ("Only one of the following may be used in an argparser argument at a time:\n" + if num_params_set > 1: + err_msg = ("Only one of the following parameters may be used at a time:\n" "choices, choices_function, choices_method, completer_function, completer_method") raise (ValueError(err_msg)) + elif num_params_set > 0 and new_arg.nargs == 0: + err_msg = ("None of the following parameters can be used for this type of action:\n" + "choices, choices_function, choices_method, completer_function, completer_method") + raise (TypeError(err_msg)) # Set the custom attributes setattr(new_arg, ATTR_NARGS_RANGE, nargs_range) |