def visit_arguments(self, node): def write_possible_comma(): if _first[0]: _first[0] = False else: self._write(', ') _first = [True] def write_args(args, defaults): no_default_count = len(args) - len(defaults) for i, arg in enumerate(args): write_possible_comma() self.visit(arg) default_idx = i - no_default_count if default_idx >= 0 and defaults[default_idx] is not None: self._write('=') self.visit(defaults[i - no_default_count]) write_args(node.args, node.defaults) if getattr(node, 'vararg', None): write_possible_comma() self._write('*') if isstring(node.vararg): self._write(node.vararg) else: self.visit(node.vararg) if getattr(node, 'kwonlyargs', None): write_args(node.kwonlyargs, node.kw_defaults) if getattr(node, 'kwarg', None): write_possible_comma() self._write('**') if isstring(node.kwarg): self._write(node.kwarg) else: self.visit(node.kwarg)
def _process(self, names, node): if not IS_PYTHON2 and isinstance(node, _ast.arg): names.add(node.arg) elif isstring(node): names.add(node) elif isinstance(node, _ast.Name): names.add(node.id) elif isinstance(node, _ast.alias): names.add(node.asname or node.name) elif isinstance(node, _ast.Tuple): for elt in node.elts: self._process(names, elt)