def visit_Call(self, node): if type(node.func) is ast.Name and node.func.id.startswith( '__await__'): if self.params[get_await_param(node.func.id)]: # pragma: no cover if ASYNC_AWAIT: return ast.Await(value=node.args[0], lineno=node.lineno, col_offset=node.col_offset) else: return ast.YieldFrom(value=node.args[0], lineno=node.lineno, col_offset=node.col_offset) else: return node.args[0] return self.generic_visit(node)
def test_invalid_yield_from(self): self.check_invalid(ast.YieldFrom(value=None))
def test_YieldFrom(self): self.verify(ast.YieldFrom(ast.Num(42)), 'yield from 42')
def test_yield(self): self.expr(ast.Yield(ast.Name("x", ast.Store())), "must have Load") self.expr(ast.YieldFrom(ast.Name("x", ast.Store())), "must have Load")
[ast.ImportFrom("__future__", names=[ast.alias(name="lol")])]), "'lol' is not defined", ), ( ast.Assign(targets=[ast.Starred(), ast.Starred()]), "More then one starred expression", ), ( ast.Assign(targets=([ast.Name("i")] * 500 + [ast.Starred()])), "Too many expressions", ), ( ast.Assign(targets=([ast.Name("i")] * 500 + [ast.Starred()])), "Too many expressions", ), (ast.comprehension(is_async=1), "inside of a coroutine"), (ast.Yield(), "inside of a function"), ( ast.AsyncFunctionDef(body=[ast.YieldFrom()]), "can't be used in a coroutine", ), (ast.Await(), "inside of a function"), (ast.FunctionDef(body=[ast.Await()]), "inside of a coroutine"), ], ) def test_simple_ast_validator(node, message): validator = ContextualASTValidator() with pytest.raises(SyntaxError) as cm: validator.validate(ast.fix_missing_locations(node)) assert cm.match(message)
def make_yield_from(): """YieldFrom(expr value)""" return ast.YieldFrom(value=make_expression())
def visit_For(self, node: ast.For): yield_from = ast.Expr(value=ast.YieldFrom(node.iter)) return ast.fix_missing_locations(yield_from)
def visitYieldFrom(self, n, *args): return ast.YieldFrom(self.dispatch(n.value, *args))
def p_yield_expr3(self, p): ''' yield_expr : YIELD FROM testlist ''' value = ast_for_testlist(p[3]) p[0] = ast.YieldFrom(value=value, lineno=p.lineno(1))
def YieldFrom(draw, expression) -> ast.YieldFrom: return ast.YieldFrom(draw(expression))
def visit_YieldFrom(self, node: YieldFrom, *args, **kwargs) -> C.YieldFrom: value = self.visit(node.value, *args, **kwargs) return C.YieldFrom(value=value, )
def generate_yeild_from(max_depth=None): return ast.Expr(ast.YieldFrom(generate_variable()))
def yield_from(value): return ast.YieldFrom(value=value)