def __init__(self, func, name=None):

        self.name = name
        self.func = func

        arg_names, vararg_name, keyarg_name, arg_defaults = getargspec(func)

        # copy the argument spec info to instance
        self.arg_names = arg_names
        self.vararg_name = vararg_name
        self.keyarg_name = keyarg_name
        self.arg_defaults = arg_defaults or tuple()

        # additional information
        self.no_defult_args_len = len(self.arg_defaults) - len(self.arg_names)
        self.arg_name_set = set(arg_names)
        self.arg_default_map = dict(zip(
            *map(reversed, (self.arg_names, self.arg_defaults))
        ))

        # try to find metas and aliases out

        self.arg_meta_map = {}
        self.alias_arg_map = {}

        doc = inspect.getdoc(func)
        if not doc: return

        for line in doc.splitlines():

            if not self.arg_desc_re.match(line): continue

            arg_part, _, desc_part = line.strip().partition('  ')

            aliases_set = set()
            for m in self.arg_re.finditer(arg_part):
                key, meta = m.group('key', 'meta')
                key = key.replace('-', '_')
                self.arg_meta_map[key] = meta
                aliases_set.add(key)

            arg_name_set = self.arg_name_set & aliases_set
            if not arg_name_set: continue

            aliases_set -= arg_name_set
            arg_name = arg_name_set.pop()
            for alias in aliases_set:
                self.alias_arg_map[alias] = arg_name
dataset/ETHPy150Open moskytw/clime/clime/core.py/Command.__init__/swapped operands of `-`