Esempio 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'),
        ]
    )
Esempio 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)
Esempio 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
        )
    )
Esempio 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
        )
    )
Esempio 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
        )
    )
Esempio 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
        )
    )
Esempio 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
        )
    )
Esempio 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'),
        ]
    )
Esempio 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'),
        ]
    )
Esempio 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),
        ]
    )
Esempio 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'
        )
    )
Esempio n. 12
0
def test_incorrect_default_arguments():
    with pytest.raises(SyntaxError):
        parse_function_definition('def foo(a=1,b): ...')
Esempio 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    ...')
Esempio n. 14
0
def test_syntax_requires_single_statement():
    with pytest.raises(SyntaxError):
        parse_function_definition('def A() -> None: ...\ndef B() -> None: ...')
Esempio n. 15
0
def test_simple():
    assert parse_function_definition(
        'def Foo() -> None: ...'
    ) == FunctionDefinition(
        name='Foo'
    )
Esempio 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]: ...')
Esempio n. 17
0
def test_syntax_requires_returns_dict_colref_modifier():
    with pytest.raises(SyntaxError):
        parse_function_definition('def A() -> Dict[+1, Value]: ...')
Esempio n. 18
0
def test_syntax_requires_returns_row_corrent():
    with pytest.raises(TypeError):
        parse_function_definition('def A() -> List[BadType]: ...')
Esempio n. 19
0
def test_syntax_requires_returns_row_subscript_name():
    with pytest.raises(SyntaxError):
        parse_function_definition('def A() -> Single[1[1]]: ...')
Esempio n. 20
0
def test_syntax_requires_returns_rows_corrent():
    with pytest.raises(TypeError):
        parse_function_definition('def Foo() -> BadType[List]: ...')
Esempio n. 21
0
def test_syntax_requires_function_definition():
    with pytest.raises(SyntaxError):
        parse_function_definition('foo = 1')
Esempio n. 22
0
def test_syntax_requires_constant_default_arg():
    with pytest.raises(SyntaxError):
        parse_function_definition('def A(foo=1+1) -> None: ...')
Esempio n. 23
0
def test_syntax_requires_returns():
    with pytest.raises(SyntaxError):
        parse_function_definition('def A(): ...')
Esempio 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))