MCPcopy Index your code
hub / github.com/python-cmd2/cmd2 / _complete_arg

Method _complete_arg

cmd2/argparse_completer.py:750–799  ·  view source on GitHub ↗

Completion routine for an argparse argument. :return: a Completions object :raises CompletionError: if the completer or choices function this calls raises one

(
        self,
        text: str,
        line: str,
        begidx: int,
        endidx: int,
        arg_state: _ArgumentState,
        consumed_arg_values: dict[str, list[str]],
        *,
        cmd_set: CommandSet[Any] | None = None,
    )

Source from the content-addressed store, hash-verified

748 return args, kwargs
749
750 def _complete_arg(
751 self,
752 text: str,
753 line: str,
754 begidx: int,
755 endidx: int,
756 arg_state: _ArgumentState,
757 consumed_arg_values: dict[str, list[str]],
758 *,
759 cmd_set: CommandSet[Any] | None = None,
760 ) -> Completions:
761 """Completion routine for an argparse argument.
762
763 :return: a Completions object
764 :raises CompletionError: if the completer or choices function this calls raises one
765 """
766 # Check if the argument uses a completer
767 completer = arg_state.action.get_completer() # type: ignore[attr-defined]
768 if completer is not None:
769 args, kwargs = self._prepare_callable_params(
770 completer,
771 arg_state,
772 text,
773 consumed_arg_values,
774 cmd_set,
775 )
776 args.extend([text, line, begidx, endidx])
777 completions: Completions = completer(*args, **kwargs)
778
779 # Otherwise it uses a choices provider or choices list
780 else:
781 choices_provider = arg_state.action.get_choices_provider() # type: ignore[attr-defined]
782 if choices_provider is not None:
783 args, kwargs = self._prepare_callable_params(
784 choices_provider,
785 arg_state,
786 text,
787 consumed_arg_values,
788 cmd_set,
789 )
790 all_choices = list(choices_provider(*args, **kwargs))
791 else:
792 all_choices = self._choices_to_items(arg_state)
793
794 # Filter used values and run basic completion
795 used_values = consumed_arg_values.get(arg_state.action.dest, [])
796 filtered = [choice for choice in all_choices if choice.text not in used_values]
797 completions = self._cmd2_app.basic_complete(text, line, begidx, endidx, filtered)
798
799 return self._build_completion_table(arg_state, completions)
800
801
802# The default ArgparseCompleter class for a cmd2 app

Callers 1

_handle_last_tokenMethod · 0.95

Calls 5

_choices_to_itemsMethod · 0.95
basic_completeMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected