def add_argument(self, *args, **kwargs):
        # Limit some funtions of argparse.add_argument
        # make argument bind with callback on add
        if 'dest' in kwargs:
            raise ValueError('"dest" is forbidden for plugin argument')
        if 'func' in kwargs:
            func = kwargs['func']
            kwargs.pop('func')
        else:
            func = None
        for arg_str in args:
            # we dont accept positional args
            if not arg_str.startswith(self._sub_parser.prefix_chars):
                raise ValueError('supports only optional args starts with ' +
                                 self._sub_parser.prefix_chars)
            option = arg_str.lstrip(self._sub_parser.prefix_chars)
            self._arg_list[option] = {}
            self._arg_list[option]['func'] = func
            self._arg_list[option]['arg'] = arg_str
            if 'help' in kwargs:
                self._arg_list[option]['help'] = kwargs['help']
            else:
                self._arg_list[option]['help'] = ''
        self._sub_parser.add_argument(*args, **kwargs)
dataset/ETHPy150Open KavenC/Linot/linot/arg_parser.py/LinotArgParser.add_argument/original