@@ -1213,7 +1213,7 @@ def get_root_parser_and_subcmd_path(self, command: str) -> tuple[Cmd2ArgumentPar
12131213 root_command = tokens [0 ]
12141214 subcommand_path = tokens [1 :]
12151215
1216- # Search for the base command function and verify it has an argparser defined
1216+ # Search for the base command function and verify it has a parser defined
12171217 command_func = self .get_command_func (root_command )
12181218 if command_func is None :
12191219 raise ValueError (f"Root command '{ root_command } ' does not exist" )
@@ -2449,18 +2449,6 @@ def _redirect_complete(self, text: str, line: str, begidx: int, endidx: int, com
24492449 # Call the command's completer function
24502450 return compfunc (text , line , begidx , endidx )
24512451
2452- @staticmethod
2453- def _determine_ap_completer_type (parser : Cmd2ArgumentParser ) -> type [argparse_completer .ArgparseCompleter ]:
2454- """Determine what type of ArgparseCompleter to use on a given parser.
2455-
2456- If the parser does not have one set, then use argparse_completer.DEFAULT_AP_COMPLETER.
2457- :param parser: the parser to examine
2458- :return: type of ArgparseCompleter
2459- """
2460- if parser .ap_completer_type is None :
2461- return argparse_completer .DEFAULT_AP_COMPLETER
2462- return parser .ap_completer_type
2463-
24642452 def _perform_completion (
24652453 self , text : str , line : str , begidx : int , endidx : int , custom_settings : utils .CustomCompletionSettings | None = None
24662454 ) -> Completions :
@@ -2526,16 +2514,15 @@ def _perform_completion(
25262514 else :
25272515 # There's no completer function, next see if the command uses argparse
25282516 command_func = self .get_command_func (command )
2529- argparser = None if command_func is None else self .command_parsers .get (command_func )
2517+ parser = None if command_func is None else self .command_parsers .get (command_func )
25302518
2531- if command_func is not None and argparser is not None :
2519+ if command_func is not None and parser is not None :
25322520 # Get arguments for complete()
25332521 spec : ArgparseCommandSpec = getattr (command_func , constants .ARGPARSE_COMMAND_ATTR_SPEC )
25342522 cmd_set = self .find_commandset_for_command (command )
25352523
25362524 # Create the argparse completer
2537- completer_type = self ._determine_ap_completer_type (argparser )
2538- completer = completer_type (argparser , self )
2525+ completer = parser .completer_class (parser , self )
25392526
25402527 completer_func = functools .partial (
25412528 completer .complete , tokens = raw_tokens [1 :] if spec .preserve_quotes else tokens [1 :], cmd_set = cmd_set
@@ -2550,8 +2537,7 @@ def _perform_completion(
25502537 # Otherwise we are completing the command token or performing custom completion
25512538 else :
25522539 # Create the argparse completer
2553- completer_type = self ._determine_ap_completer_type (custom_settings .parser )
2554- completer = completer_type (custom_settings .parser , self )
2540+ completer = custom_settings .parser .completer_class (custom_settings .parser , self )
25552541
25562542 completer_func = functools .partial (
25572543 completer .complete , tokens = raw_tokens if custom_settings .preserve_quotes else tokens , cmd_set = None
@@ -4274,11 +4260,11 @@ def complete_help_subcommands(
42744260
42754261 # Check if this command uses argparse
42764262 if (command_func := self .get_command_func (command )) is None or (
4277- argparser := self .command_parsers .get (command_func )
4263+ parser := self .command_parsers .get (command_func )
42784264 ) is None :
42794265 return Completions ()
42804266
4281- completer = argparse_completer . DEFAULT_AP_COMPLETER ( argparser , self )
4267+ completer = parser . completer_class ( parser , self )
42824268 return completer .complete_subcommand_help (text , line , begidx , endidx , arg_tokens ["subcommands" ])
42834269
42844270 def _build_command_info (self ) -> tuple [dict [str , list [str ]], list [str ]]:
@@ -4382,11 +4368,11 @@ def do_help(self, args: argparse.Namespace) -> None:
43824368 return
43834369
43844370 command_func = self .get_command_func (args .command )
4385- argparser = None if command_func is None else self .command_parsers .get (command_func )
4371+ parser = None if command_func is None else self .command_parsers .get (command_func )
43864372
43874373 # If the command function uses argparse, then use argparse's help
4388- if command_func is not None and argparser is not None :
4389- completer = argparse_completer . DEFAULT_AP_COMPLETER ( argparser , self )
4374+ if command_func is not None and parser is not None :
4375+ completer = parser . completer_class ( parser , self )
43904376 completer .print_help (args .subcommands , self .stdout )
43914377
43924378 # If the command has a custom help function, then call it
@@ -4700,7 +4686,7 @@ def complete_set_value(
47004686 completer = settable .completer ,
47014687 )
47024688
4703- completer = argparse_completer . DEFAULT_AP_COMPLETER (settable_parser , self )
4689+ completer = settable_parser . completer_class (settable_parser , self )
47044690
47054691 # Use raw_tokens since quotes have been preserved
47064692 _ , raw_tokens = self .tokens_for_completion (line , begidx , endidx )
0 commit comments