

def analyse_action(func):
    'Analyse a function.'
    description = (inspect.getdoc(func) or 'undocumented action')
    arguments = []
    (args, varargs, kwargs, defaults) = inspect.getargspec(func)
    if (varargs or kwargs):
        raise TypeError('variable length arguments for action not allowed.')
    if (len(args) != len((defaults or ()))):
        raise TypeError('not all arguments have proper definitions')
    for (idx, (arg, definition)) in enumerate(zip(args, (defaults or ()))):
        if arg.startswith('_'):
            raise TypeError('arguments may not start with an underscore')
        if (not isinstance(definition, tuple)):
            shortcut = None
            default = definition
        else:
            (shortcut, default) = definition
        argument_type = argument_types[type(description)]
        if (isinstance(default, bool) and (default is True)):
            arg = ('no-' + arg)
        arguments.append((arg.replace('_', '-'), shortcut, default, argument_type))
    return (func, description, arguments)

dataset/ETHPy150Open Eforcers/gae-flask-todo/lib/werkzeug/script.py analyse_action/VarMisuse@176/248 `default`->`description`