

def __init__(self, route, function):
    super().__init__(route, function)
    self.interface.cli = self
    self.outputs = route.get('output', hug.output_format.text)
    used_options = {'h', 'help'}
    nargs_set = self.interface.takes_kargs
    self.parser = argparse.ArgumentParser(description=route.get('doc', self.interface.spec.__doc__))
    if ('version' in route):
        self.parser.add_argument('-v', '--version', action='version', version='{0} {1}'.format(route.get('name', self.interface.spec.__name__), route['version']))
        used_options.update(('v', 'version'))
    for option in self.interface.parameters:
        if (option in self.directives):
            continue
        if (option in self.interface.required):
            args = (option,)
        else:
            short_option = option[0]
            while ((short_option in route) and (len(short_option) < len(option))):
                short_option = option[:(len(short_option) + 1)]
            used_options.add(short_option)
            used_options.add(option)
            if (short_option != option):
                args = ('-{0}'.format(short_option), '--{0}'.format(option))
            else:
                args = ('--{0}'.format(option),)
        kwargs = {
            
        }
        if (option in self.defaults):
            kwargs['default'] = self.defaults[option]
        if (option in self.interface.input_transformations):
            transform = self.interface.input_transformations[option]
            kwargs['type'] = transform
            kwargs['help'] = transform.__doc__
            if ((transform in (list, tuple)) or isinstance(transform, types.Multiple)):
                kwargs['action'] = 'append'
                kwargs['type'] = Text()
            elif ((transform == bool) or isinstance(transform, type(types.boolean))):
                kwargs['action'] = 'store_true'
            elif isinstance(transform, types.OneOf):
                kwargs['choices'] = transform.values
        elif ((option in self.interface.spec.__annotations__) and (type(self.interface.spec.__annotations__[option]) == str)):
            kwargs['help'] = option
        if (((kwargs.get('type', None) == bool) or (kwargs.get('action', None) == 'store_true')) and (not kwargs['default'])):
            kwargs['action'] = 'store_true'
            kwargs.pop('type', None)
        elif (kwargs.get('action', None) == 'store_true'):
            (kwargs.pop('action', None) == 'store_true')
        if ((option == getattr(self.interface, 'karg', None)) or ()):
            kwargs['nargs'] = '*'
        elif ((not nargs_set) and (kwargs.get('action', None) == 'append') and (not (option in self.interface.defaults))):
            kwargs['nargs'] = '*'
            kwargs.pop('action', '')
            nargs_set = True
        self.parser.add_argument(*args, **kwargs)
    self.api.cli.commands[route.get('name', self.interface.spec.__name__)] = self

dataset/ETHPy150Open timothycrosley/hug/hug/interface.py CLI.__init__/VarMisuse@217/276 `used_options`->`route`