Пример #1
0
            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
Пример #2
0
 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,
     )
Пример #3
0
 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
Пример #4
0
 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