def positional()

in knack/arguments.py [0:0]


    def positional(self, argument_dest, arg_type=None, **kwargs):
        """ Register a positional argument for the given command scope using a knack.arguments.CLIArgumentType

        :param argument_dest: The destination argument to add this argument type to
        :type argument_dest: str
        :param arg_type: Predefined CLIArgumentType definition to register, as modified by any provided kwargs.
        :type arg_type: knack.arguments.CLIArgumentType
        :param kwargs: Possible values: `validator`, `completer`, `nargs`, `action`, `const`, `default`,
                       `type`, `choices`, `required`, `help`, `metavar`, `is_preview`, `is_experimental`,
                       `deprecate_info`. See /docs/arguments.md.
        """
        self._check_stale()
        if not self._applicable():
            return

        if self.command_scope not in self.command_loader.command_table:
            raise ValueError("command authoring error: positional argument '{}' cannot be registered to a group-level "
                             "scope '{}'. It must be registered to a specific command.".format(
                                 argument_dest, self.command_scope))

        # Before adding the new positional arg, ensure that there are no existing positional arguments
        # registered for this command.
        command_args = self.command_loader.argument_registry.arguments[self.command_scope]
        positional_args = {k: v for k, v in command_args.items() if v.settings.get('options_list') == []}
        if positional_args and argument_dest not in positional_args:
            raise CLIError("command authoring error: commands may have, at most, one positional argument. '{}' already "
                           "has positional argument: {}.".format(self.command_scope, ' '.join(positional_args.keys())))

        kwargs['options_list'] = []

        deprecate_action = self._handle_deprecations(argument_dest, **kwargs)
        if deprecate_action:
            kwargs['action'] = deprecate_action

        kwargs = self._handle_previews(argument_dest, **kwargs)
        kwargs = self._handle_experimentals(argument_dest, **kwargs)

        self.command_loader.argument_registry.register_cli_argument(self.command_scope,
                                                                    argument_dest,
                                                                    arg_type,
                                                                    **kwargs)