diff --git a/CONTRIBUTING.asciidoc b/CONTRIBUTING.asciidoc index 05a77cf50..cf185c3fe 100644 --- a/CONTRIBUTING.asciidoc +++ b/CONTRIBUTING.asciidoc @@ -397,10 +397,12 @@ then automatically checked. Possible values: e.g. `('foo', 'bar')` or `(int, 'foo')`. * `flag`: The flag to be used, as 1-char string (default: First char of the long name). -* `name`: The long name to be used, as string (default: Name of the parameter). * `nargs`: Gets passed to argparse, see https://docs.python.org/dev/library/argparse.html#nargs[its documentation]. +The name of an argument will always be the parameter name, with any trailing +underscores stripped. + [[handling-urls]] Handling URLs ~~~~~~~~~~~~~ diff --git a/qutebrowser/browser/downloads.py b/qutebrowser/browser/downloads.py index 8238050bf..6d12761f6 100644 --- a/qutebrowser/browser/downloads.py +++ b/qutebrowser/browser/downloads.py @@ -918,7 +918,7 @@ class DownloadManager(QAbstractListModel): @cmdutils.register(instance='download-manager', scope='window', count='count') - def download_remove(self, all_: {'name': 'all'}=False, count=0): + def download_remove(self, all_=False, count=0): """Remove the last/[count]th download from the list. Args: diff --git a/qutebrowser/commands/command.py b/qutebrowser/commands/command.py index fae1cb997..88b5e9cab 100644 --- a/qutebrowser/commands/command.py +++ b/qutebrowser/commands/command.py @@ -49,7 +49,6 @@ class Command: flags_with_args: A list of flags which take an argument. no_cmd_split: If true, ';;' to split sub-commands is ignored. _type_conv: A mapping of conversion functions for arguments. - _name_conv: A mapping of argument names to parameter names. _needs_js: Whether the command needs javascript enabled _modes: The modes the command can be executed in. _not_modes: The modes the command can not be executed in. @@ -62,7 +61,7 @@ class Command: """ AnnotationInfo = collections.namedtuple('AnnotationInfo', - ['kwargs', 'type', 'name', 'flag']) + ['kwargs', 'type', 'flag']) def __init__(self, *, handler, name, instance=None, maxsplit=None, hide=False, completion=None, modes=None, not_modes=None, @@ -115,7 +114,6 @@ class Command: self.desc = None self.flags_with_args = [] self._type_conv = {} - self._name_conv = {} count = self._inspect_func() if self.completion is not None and len(self.completion) > count: raise ValueError("Got {} completions, but only {} " @@ -177,18 +175,6 @@ class Command: type_conv[param.name] = argparser.multitype_conv(typ) return type_conv - def _get_nameconv(self, param, annotation_info): - """Get a dict with a name conversion for the parameter. - - Args: - param: The inspect.Parameter to handle. - annotation_info: The AnnotationInfo tuple for the parameter. - """ - d = {} - if annotation_info.name is not None: - d[param.name] = annotation_info.name - return d - def _inspect_special_param(self, param): """Check if the given parameter is a special one. @@ -244,8 +230,6 @@ class Command: kwargs = self._param_to_argparse_kwargs(param, annotation_info) args = self._param_to_argparse_args(param, annotation_info) self._type_conv.update(self._get_typeconv(param, typ)) - self._name_conv.update( - self._get_nameconv(param, annotation_info)) callsig = debug_utils.format_call( self.parser.add_argument, args, kwargs, full=False) @@ -303,8 +287,8 @@ class Command: A list of args. """ args = [] - name = annotation_info.name or param.name - shortname = annotation_info.flag or param.name[0] + name = param.name.rstrip('_') + shortname = annotation_info.flag or name[0] if len(shortname) != 1: raise ValueError("Flag '{}' of parameter {} (command {}) must be " "exactly 1 char!".format(shortname, name, @@ -337,7 +321,7 @@ class Command: flag: The short name/flag if overridden. name: The long name if overridden. """ - info = {'kwargs': {}, 'type': None, 'flag': None, 'name': None} + info = {'kwargs': {}, 'type': None, 'flag': None} if param.annotation is not inspect.Parameter.empty: log.commands.vdebug("Parsing annotation {}".format( param.annotation)) @@ -423,7 +407,7 @@ class Command: def _get_param_name_and_value(self, param): """Get the converted name and value for an inspect.Parameter.""" - name = self._name_conv.get(param.name, param.name) + name = param.name.rstrip('_') value = getattr(self.namespace, name) if param.name in self._type_conv: # We convert enum types after getting the values from diff --git a/qutebrowser/config/config.py b/qutebrowser/config/config.py index 6a4c3b0b1..15872004b 100644 --- a/qutebrowser/config/config.py +++ b/qutebrowser/config/config.py @@ -582,9 +582,8 @@ class ConfigManager(QObject): @cmdutils.register(name='set', instance='config', win_id='win_id', completion=[Completion.section, Completion.option, Completion.value]) - def set_command(self, win_id, sectname: {'name': 'section'}=None, - optname: {'name': 'option'}=None, value=None, temp=False, - print_val: {'name': 'print'}=False): + def set_command(self, win_id, section_=None, option=None, value=None, + temp=False, print_=False): """Set an option. If the option name ends with '?', the value of the option is shown @@ -597,38 +596,38 @@ class ConfigManager(QObject): Wrapper for self.set() to output exceptions in the status bar. Args: - sectname: The section where the option is in. - optname: The name of the option. + section_: The section where the option is in. + option: The name of the option. value: The value to set. temp: Set value temporarily. - print_val: Print the value after setting. + print_: Print the value after setting. """ - if sectname is not None and optname is None: + if section_ is not None and option is None: raise cmdexc.CommandError( "set: Either both section and option have to be given, or " "neither!") - if sectname is None and optname is None: + if section_ is None and option is None: tabbed_browser = objreg.get('tabbed-browser', scope='window', window=win_id) tabbed_browser.openurl(QUrl('qute:settings'), newtab=False) return - if optname.endswith('?'): - optname = optname[:-1] - print_val = True + if option.endswith('?'): + option = option[:-1] + print_ = True else: try: - if optname.endswith('!') and value is None: - val = self.get(sectname, optname[:-1]) + if option.endswith('!') and value is None: + val = self.get(section_, option[:-1]) layer = 'temp' if temp else 'conf' if isinstance(val, bool): - self.set(layer, sectname, optname[:-1], str(not val)) + self.set(layer, section_, option[:-1], str(not val)) else: raise cmdexc.CommandError( "set: Attempted inversion of non-boolean value.") elif value is not None: layer = 'temp' if temp else 'conf' - self.set(layer, sectname, optname, value) + self.set(layer, section_, option, value) else: raise cmdexc.CommandError("set: The following arguments " "are required: value") @@ -636,10 +635,10 @@ class ConfigManager(QObject): raise cmdexc.CommandError("set: {} - {}".format( e.__class__.__name__, e)) - if print_val: - val = self.get(sectname, optname, transformed=False) + if print_: + val = self.get(section_, option, transformed=False) message.info(win_id, "{} {} = {}".format( - sectname, optname, val), immediately=True) + section_, option, val), immediately=True) def set(self, layer, sectname, optname, value, validate=True): """Set an option.