Ejemplo n.º 1
0
def test_accepts_complex_arg_annotations():
    assert parse_function_definition(
        'def Foo(arg: Tuple[str, int]) -> None: ...'
    ) == FunctionDefinition(
        name='Foo',
        args=[
            ArgumentDefinition(name='arg'),
        ]
    )
Ejemplo n.º 2
0
def func_def():
    func_code = """def foo(a: str,
                b: int,
                c: str="c",
                d: int=4,
                e: str="e",
                f: int=6) -> None: ...
    """

    return parse_function_definition(func_code)
Ejemplo n.º 3
0
def test_accepts_complex_return_annotations():
    assert parse_function_definition(
        'def Foo() -> Single[Value[bool]]: ...'
    ) == FunctionDefinition(
        name='Foo',
        returns=ReturnValueDefinition(
            outer_format=ReturnValueOuterFormat.SINGLE,
            inner_format=ReturnValueInnerFormat.VALUE
        )
    )
    assert parse_function_definition(
        'def Foo() -> Single[Value[Optional[str]]]: ...'
    ) == FunctionDefinition(
        name='Foo',
        returns=ReturnValueDefinition(
            outer_format=ReturnValueOuterFormat.SINGLE,
            inner_format=ReturnValueInnerFormat.VALUE
        )
    )
Ejemplo n.º 4
0
def test_returns_inner_dict():
    assert parse_function_definition(
        'def Foo() -> Single[Dict]: ...'
    ) == FunctionDefinition(
        name='Foo',
        returns=ReturnValueDefinition(
            outer_format=ReturnValueOuterFormat.SINGLE,
            inner_format=ReturnValueInnerFormat.DICT
        )
    )
Ejemplo n.º 5
0
def test_returns_outer_iterator():
    assert parse_function_definition(
        'def Foo() -> Iterator[Tuple]: ...'
    ) == FunctionDefinition(
        name='Foo',
        returns=ReturnValueDefinition(
            outer_format=ReturnValueOuterFormat.ITERATOR,
            inner_format=ReturnValueInnerFormat.TUPLE
        )
    )
Ejemplo n.º 6
0
def test_returns_outer_single():
    assert parse_function_definition(
        'def Foo() -> Single[Tuple]: ...'
    ) == FunctionDefinition(
        name='Foo',
        returns=ReturnValueDefinition(
            outer_format=ReturnValueOuterFormat.SINGLE,
            inner_format=ReturnValueInnerFormat.TUPLE
        )
    )
Ejemplo n.º 7
0
def test_returns_outer_list():
    assert parse_function_definition(
        'def Foo() -> List[Tuple]: ...'
    ) == FunctionDefinition(
        name='Foo',
        returns=ReturnValueDefinition(
            outer_format=ReturnValueOuterFormat.LIST,
            inner_format=ReturnValueInnerFormat.TUPLE
        )
    )
Ejemplo n.º 8
0
def test_args():
    assert parse_function_definition(
        'def Foo(a: int, b: str, c: float) -> None: ...'
    ) == FunctionDefinition(
        name='Foo',
        args=[
            ArgumentDefinition(name='a'),
            ArgumentDefinition(name='b'),
            ArgumentDefinition(name='c'),
        ]
    )
Ejemplo n.º 9
0
def test_args_unannotated():
    assert parse_function_definition(
        'def Foo(a, b, c) -> None: ...'
    ) == FunctionDefinition(
        name='Foo',
        args=[
            ArgumentDefinition(name='a'),
            ArgumentDefinition(name='b'),
            ArgumentDefinition(name='c'),
        ]
    )
Ejemplo n.º 10
0
def test_default_args():
    assert parse_function_definition(
        'def Foo(a: int, b: int=2, c: int=3) -> None: ...'
    ) == FunctionDefinition(
        name='Foo',
        args=[
            ArgumentDefinition(name='a'),
            ArgumentDefinition(name='b', has_default=True, default=2),
            ArgumentDefinition(name='c', has_default=True, default=3),
        ]
    )
Ejemplo n.º 11
0
def test_returns_outer_dict():
    assert parse_function_definition(
        'def Foo() -> Dict[0, Tuple]: ...'
    ) == FunctionDefinition(
        name='Foo',
        returns=ReturnValueDefinition(
            outer_format=ReturnValueOuterFormat.DICT,
            inner_format=ReturnValueInnerFormat.TUPLE,
            outer_dict_by=0
        )
    )

    assert parse_function_definition(
        'def Foo() -> Dict["colname", Tuple]: ...'
    ) == FunctionDefinition(
        name='Foo',
        returns=ReturnValueDefinition(
            outer_format=ReturnValueOuterFormat.DICT,
            inner_format=ReturnValueInnerFormat.TUPLE,
            outer_dict_by='colname'
        )
    )
Ejemplo n.º 12
0
def test_incorrect_default_arguments():
    with pytest.raises(SyntaxError):
        parse_function_definition('def foo(a=1,b): ...')
Ejemplo n.º 13
0
def test_syntax_requires_body_ellipsis():
    with pytest.raises(SyntaxError):
        parse_function_definition('def A() -> None: 1')

    with pytest.raises(SyntaxError):
        parse_function_definition('def A() -> None:\n    ...\n    ...')
Ejemplo n.º 14
0
def test_syntax_requires_single_statement():
    with pytest.raises(SyntaxError):
        parse_function_definition('def A() -> None: ...\ndef B() -> None: ...')
Ejemplo n.º 15
0
def test_simple():
    assert parse_function_definition(
        'def Foo() -> None: ...'
    ) == FunctionDefinition(
        name='Foo'
    )
Ejemplo n.º 16
0
def test_syntax_requires_returns_dict_nargs():
    with pytest.raises(SyntaxError):
        parse_function_definition('def A() -> Dict[1, 2, Value]: ...')

    with pytest.raises(SyntaxError):
        parse_function_definition('def A() -> Dict[Value]: ...')
Ejemplo n.º 17
0
def test_syntax_requires_returns_dict_colref_modifier():
    with pytest.raises(SyntaxError):
        parse_function_definition('def A() -> Dict[+1, Value]: ...')
Ejemplo n.º 18
0
def test_syntax_requires_returns_row_corrent():
    with pytest.raises(TypeError):
        parse_function_definition('def A() -> List[BadType]: ...')
Ejemplo n.º 19
0
def test_syntax_requires_returns_row_subscript_name():
    with pytest.raises(SyntaxError):
        parse_function_definition('def A() -> Single[1[1]]: ...')
Ejemplo n.º 20
0
def test_syntax_requires_returns_rows_corrent():
    with pytest.raises(TypeError):
        parse_function_definition('def Foo() -> BadType[List]: ...')
Ejemplo n.º 21
0
def test_syntax_requires_function_definition():
    with pytest.raises(SyntaxError):
        parse_function_definition('foo = 1')
Ejemplo n.º 22
0
def test_syntax_requires_constant_default_arg():
    with pytest.raises(SyntaxError):
        parse_function_definition('def A(foo=1+1) -> None: ...')
Ejemplo n.º 23
0
def test_syntax_requires_returns():
    with pytest.raises(SyntaxError):
        parse_function_definition('def A(): ...')
Ejemplo n.º 24
0
 def flush() -> None:
     nonlocal current_annotation, current_text, res
     if current_annotation and current_text:
         res.append(Query(parse_function_definition(current_annotation), current_text))