def test_bogus_function_call():
    df1 = DataFrame(expr=ast.Call(func=ast.BinOp()))

    with pytest.raises(Exception) as e:
        dumps(df1)

    assert "BinOp" in str(e.value)
def test_nested_dataframe():
    df1 = DataFrame()
    df2 = DataFrame(expr=ast_DataFrame(df1))

    r = dumps(df1 + df2)

    assert '\n'.join(r) == '''df_1 = DataFrame()
def test_python_builtin_function():
    df = DataFrame()
    df1 = abs(df.x)

    r = dumps(df1)

    assert '\n'.join(r) == '''df_1 = DataFrame()
def test_callback():
    df = DataFrame()
    df1 = df.map(lambda e: e.x)

    r = dumps(df1)

    assert '\n'.join(r) == '''df_1 = DataFrame()
def test_filter():
    df = DataFrame()
    df1 = df[df.x > 0]

    r = dumps(df1)

    assert '\n'.join(r) == '''df_1 = DataFrame()
def test_binary_logic_operator(operator_text, op):
    df = DataFrame()
    df1 = op(df.x > 1, df.y < 1)

    r = dumps(df1)

    assert '\n'.join(r) == f'''df_1 = DataFrame()
def test_python_kw_args():
    import numpy
    df = DataFrame()
    df1 = numpy.histogram(df.x, bins=50)

    r = dumps(df1)  # type: ignore

    assert '\n'.join(r) == '''df_1 = DataFrame()
def test_python_np_function():
    import numpy
    df = DataFrame()
    df1 = numpy.histogram(df.x)

    r = dumps(df1)  # type: ignore

    assert '\n'.join(r) == '''df_1 = DataFrame()
def test_python_other_function():
    @user_func
    def doit(i: float):
        assert 'do not call this'

    df = DataFrame()
    df1 = doit(df.x)

    r = dumps(df1)

    assert '\n'.join(r) == '''df_1 = DataFrame()