def __call__(self, func: typing.Callable) -> typing.Callable: funcname = func.__name__ if self._argname not in inspect.signature(func).parameters: raise ValueError("{} has no argument {}!".format( funcname, self._argname)) if not hasattr(func, 'glimpse_args'): func.glimpse_args = {} # type: ignore elif func.glimpse_args is None: # type: ignore raise ValueError("@cmdutils.argument got called above (after) " "@cmdutils.register for {}!".format(funcname)) arginfo = command.ArgInfo(**self._kwargs) func.glimpse_args[self._argname] = arginfo # type: ignore return func