Пример #1
0
 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)
Пример #2
0
 def test_invalid_yield_from(self):
     self.check_invalid(ast.YieldFrom(value=None))
Пример #3
0
 def test_YieldFrom(self):
     self.verify(ast.YieldFrom(ast.Num(42)), 'yield from 42')
Пример #4
0
 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")
Пример #5
0
                [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())
Пример #7
0
 def visit_For(self, node: ast.For):
     yield_from = ast.Expr(value=ast.YieldFrom(node.iter))
     return ast.fix_missing_locations(yield_from)
Пример #8
0
 def visitYieldFrom(self, n, *args):
     return ast.YieldFrom(self.dispatch(n.value, *args))
Пример #9
0
 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))
Пример #10
0
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, )
Пример #12
0
def generate_yeild_from(max_depth=None):
    return ast.Expr(ast.YieldFrom(generate_variable()))
Пример #13
0
def yield_from(value):
    return ast.YieldFrom(value=value)