Пример #1
0
def get_func_doc_for_class(name):
    args = [
        AssignDoc(IdDoc("x"), rhs=None, annotation=IdDoc("int")),
        AssignDoc(IdDoc("y"), rhs=LiteralDoc(1), annotation=IdDoc("int")),
    ]
    body = [
        AssignDoc(IdDoc("y"), OperationDoc(OperationKind.Add, [IdDoc("x"), LiteralDoc(1)])),
        AssignDoc(IdDoc("y"), OperationDoc(OperationKind.Sub, [IdDoc("y"), LiteralDoc(1)])),
    ]
    return FunctionDoc(
        name=IdDoc(name),
        args=args,
        decorators=[IdDoc("wrap")],
        return_type=LiteralDoc(None),
        body=body,
    )
Пример #2
0
def test_underline_basic():
    doc = StmtBlockDoc([
        ExprStmtDoc(make_id_doc("foo")),
        ExprStmtDoc(
            OperationDoc(
                OperationKind.Add,
                [make_id_doc("bar"), make_id_doc("baz")])),
        ExprStmtDoc(make_id_doc("qux")),
    ])
    assert to_python_script(
        doc, path_to_underline=make_path("baz")) == format_script("""
        foo
        bar + baz
              ^^^
        qux
    """)
Пример #3
0
def test_underline_multiple_spans():
    doc = StmtBlockDoc([
        ExprStmtDoc(make_id_doc("foo")),
        ExprStmtDoc(make_id_doc("bar")),
        ExprStmtDoc(
            OperationDoc(
                OperationKind.Add,
                [make_id_doc("foo"), make_id_doc("foo")])),
    ])
    assert to_python_script(
        doc, path_to_underline=make_path("foo")) == format_script("""
        foo
        ^^^
        bar
        foo + foo
        ^^^   ^^^
    """)
Пример #4
0
 def if_then_else(a, b, c):
     return OperationDoc(OperationKind.IfThenElse, [a, b, c])
Пример #5
0
def test_print_binary_operation_doc(op_kind, expected_token):
    doc = OperationDoc(op_kind, [IdDoc("x"), IdDoc("y")])
    assert to_python_script(doc) == format_script(f"x {expected_token} y")
Пример #6
0
 def eq(a, b):
     return OperationDoc(OperationKind.Eq, [a, b])
Пример #7
0
 def not_eq(a, b):
     return OperationDoc(OperationKind.NotEq, [a, b])
Пример #8
0
 def bit_xor(a, b):
     return OperationDoc(OperationKind.BitXor, [a, b])
Пример #9
0
 def lt(a, b):
     return OperationDoc(OperationKind.Lt, [a, b])
Пример #10
0
 def invert(a):
     return OperationDoc(OperationKind.Invert, [a])
Пример #11
0
 def sub(a, b):
     return OperationDoc(OperationKind.Sub, [a, b])
Пример #12
0
 def pow(a, b):
     return OperationDoc(OperationKind.Pow, [a, b])
Пример #13
0
 def lshift(a, b):
     return OperationDoc(OperationKind.LShift, [a, b])
Пример #14
0
 def mod(a, b):
     return OperationDoc(OperationKind.Mod, [a, b])
Пример #15
0
 def div(a, b):
     return OperationDoc(OperationKind.Div, [a, b])
Пример #16
0
 def mult(a, b):
     return OperationDoc(OperationKind.Mult, [a, b])
Пример #17
0
def test_print_special_operation_doc(op_kind, operands, expected):
    doc = OperationDoc(op_kind, operands)
    assert to_python_script(doc) == format_script(expected)
Пример #18
0
 def negative(a):
     return OperationDoc(OperationKind.USub, [a])
Пример #19
0
 def bit_and(a, b):
     return OperationDoc(OperationKind.BitAnd, [a, b])
Пример #20
0
 def add(a, b):
     return OperationDoc(OperationKind.Add, [a, b])
Пример #21
0
 def bit_or(a, b):
     return OperationDoc(OperationKind.BitOr, [a, b])
Пример #22
0
            [],
            """
            @wrap
            def func(x: int, y: int = 1) -> None:
                pass
            """,
        ),
        (
            [
                AssignDoc(IdDoc("x"), rhs=None, annotation=IdDoc("int")),
                AssignDoc(IdDoc("y"), rhs=LiteralDoc(1), annotation=IdDoc("int")),
            ],
            [IdDoc("wrap")],
            LiteralDoc(None),
            [
                AssignDoc(IdDoc("y"), OperationDoc(OperationKind.Add, [IdDoc("x"), LiteralDoc(1)])),
                AssignDoc(IdDoc("y"), OperationDoc(OperationKind.Sub, [IdDoc("y"), LiteralDoc(1)])),
            ],
            """
            @wrap
            def func(x: int, y: int = 1) -> None:
                y = x + 1
                y = y - 1
            """,
        ),
    ],
    ids=itertools.count(),
)
def test_print_function_doc(args, decorators, body, return_type, expected):
    doc = FunctionDoc(IdDoc("func"), args, decorators, return_type, body)
    assert to_python_script(doc) == format_script(expected)  # test