def args(self): """Overwrite the underlying args to match those of the underlying func Usually the underlying *func* is a function/method, as in: def test(self): pass This has only the *self* parameter but when we access test.__get__ we get a new object which has two parameters, *self* and *type*. """ nonlocal func positional_or_keyword_params = func.args.args.copy() positional_or_keyword_params.append( astroid.AssignName(name="type")) positional_only_params = func.args.posonlyargs.copy() arguments = astroid.Arguments(parent=func.args.parent) arguments.postinit( args=positional_or_keyword_params, posonlyargs=positional_only_params, defaults=[], kwonlyargs=[], kw_defaults=[], annotations=[], ) return arguments
def transform(self, node: ast.AssignName) -> ast.AssignName: return ast.AssignName( lineno=node.lineno, col_offset=node.col_offset, parent=node.parent, name=self.new_name, )
def transform(self, node: ast.Module) -> ast.Module: new_node = node new_assign = ast.Assign() new_assign.postinit( targets=[ast.AssignName(name=self.new_name, parent=new_assign)], value=ast.Name(name=self.old_name, parent=new_assign), ) new_node.body = [new_assign] + node.body return new_node
def transform(self, node: ast.Call) -> ast.AugAssign: new_node = ast.AugAssign(op="+=") new_value = ast.List(parent=new_node) new_arg = node.args[0] new_arg.parent = new_value new_value.postinit(elts=[new_arg]) new_node.postinit(target=ast.AssignName(name=node.func.expr.name, parent=new_node), value=new_value) return new_node