Determine the appropriate completer based on provided arguments.
(
self,
preserve_quotes: bool = False,
choices: Iterable[Any] | None = None,
choices_provider: UnboundChoicesProvider[CmdOrSetT] | None = None,
completer: UnboundCompleter[CmdOrSetT] | None = None,
parser: Cmd2ArgumentParser | None = None,
)
| 3491 | return line.rstrip("\r\n") |
| 3492 | |
| 3493 | def _resolve_completer( |
| 3494 | self, |
| 3495 | preserve_quotes: bool = False, |
| 3496 | choices: Iterable[Any] | None = None, |
| 3497 | choices_provider: UnboundChoicesProvider[CmdOrSetT] | None = None, |
| 3498 | completer: UnboundCompleter[CmdOrSetT] | None = None, |
| 3499 | parser: Cmd2ArgumentParser | None = None, |
| 3500 | ) -> Completer: |
| 3501 | """Determine the appropriate completer based on provided arguments.""" |
| 3502 | if not any((parser, choices, choices_provider, completer)): |
| 3503 | return DummyCompleter() |
| 3504 | |
| 3505 | if parser and any((choices, choices_provider, completer)): |
| 3506 | err_msg = "None of the following parameters can be used alongside a parser:\nchoices, choices_provider, completer" |
| 3507 | raise ValueError(err_msg) |
| 3508 | |
| 3509 | if parser is None: |
| 3510 | parser = argparse_utils.DEFAULT_ARGUMENT_PARSER(add_help=False) |
| 3511 | parser.add_argument( |
| 3512 | "arg", |
| 3513 | suppress_tab_hint=True, |
| 3514 | choices=choices, |
| 3515 | choices_provider=choices_provider, |
| 3516 | completer=completer, |
| 3517 | ) |
| 3518 | |
| 3519 | settings = utils.CustomCompletionSettings(parser, preserve_quotes=preserve_quotes) |
| 3520 | return Cmd2Completer(self, custom_settings=settings) |
| 3521 | |
| 3522 | def read_input( |
| 3523 | self, |