def test_dt_invert_invalid(src): dt0 = dt.Frame(src) for engine in ["llvm", "eager"]: if engine == "llvm" and not has_llvm(): continue with pytest.raises(TypeError) as e: dt0(select=~f[0], engine=engine) assert str(e.value) == ("Operator `~` cannot be applied to a `%s` " "column" % dt0.stypes[0].name)
def test_filter_on_view3(): df0 = dt.Frame({"A": range(20)}) df1 = df0[::5, :] df2 = df1(f.A <= 10, engine="eager") df2.internal.check() assert df2.topython() == [[0, 5, 10]] if has_llvm(): df3 = df1(f.A <= 10, engine="llvm") df3.internal.check() assert df3.topython() == [[0, 5, 10]]
def test_rows_unary_minus(df1): dt1 = df1(-f.A < -3, engine="eager") dt1.internal.check() assert dt1.names == df1.names assert dt1.topython() == [[4, 5, 6, 7, 9], [4, 0, 2, None, 9]] if has_llvm(): dt2 = df1(-f.A < -3, engine="llvm") dt2.internal.check() assert dt1.names == dt2.names assert dt1.topython() == dt2.topython()
def test_rows_compare_to_scalar_lt(df1): dt1 = df1(f.A < 3, engine="eager") dt1.internal.check() assert dt1.names == df1.names assert dt1.topython() == [[0, 1, 2], [3, 2, 1]] if has_llvm(): dt2 = df1(f.A < 3, engine="llvm") dt2.internal.check() assert dt1.names == dt2.names assert dt1.topython() == dt2.topython()
def test_rows_compare_to_scalar_eq(df1): dt1 = df1(f.A == None, engine="eager") dt1.internal.check() assert dt1.names == df1.names assert dt1.topython() == [[None, None], [None, 8]] if has_llvm(): dt2 = df1(f.A == None, engine="llvm") dt2.internal.check() assert dt1.names == dt2.names assert dt1.topython() == dt2.topython()
def test_rows_less_than_or_equal(df1): dt1 = df1(f.A <= f.B, engine="eager") dt1.internal.check() assert dt1.names == df1.names assert dt1.topython() == [[0, 1, 3, 4, None, 9], [3, 2, 3, 4, None, 9]] if has_llvm(): dt2 = df1(f.A <= f.B, engine="llvm") dt2.internal.check() assert dt1.names == dt2.names assert dt1.topython() == dt2.topython()
def test_rows_compare_to_scalar_gt(df1): dt1 = df1(f.A > 3, engine="eager") dt1.internal.check() assert dt1.names == df1.names assert dt1.topython() == [[4, 5, 6, 7, 9], [4, 0, 2, None, 9]] if has_llvm(): dt2 = df1(f.A > 3, engine="llvm") dt2.internal.check() assert dt1.names == dt2.names assert dt1.topython() == dt2.topython()
def test_rows_greater_than(df1): dt1 = df1(f.A > f.B, engine="eager") dt1.internal.check() assert dt1.names == df1.names assert dt1.topython() == [[2, 5, 6], [1, 0, 2]] if has_llvm(): dt2 = df1(f.A > f.B, engine="llvm") dt2.internal.check() assert dt1.names == dt2.names assert dt1.topython() == dt2.topython()
def test_rows_less_than(df1): dt1 = df1(f.A < f.B, engine="eager") dt1.internal.check() assert dt1.names == df1.names assert dt1.topython() == [[0, 1], [3, 2]] if has_llvm(): dt2 = df1(f.A < f.B, engine="llvm") dt2.internal.check() assert dt1.names == dt2.names assert dt1.topython() == dt2.topython()
def test_dt_invert(src): dt0 = dt.Frame(src) df2 = dt0(select=~f[0], engine="eager") df2.internal.check() assert df2.stypes == dt0.stypes assert df2.to_list() == [[inv(x) for x in src]] if has_llvm(): df1 = dt0(select=~f[0], engine="llvm") df1.internal.check() assert df1.stypes == dt0.stypes assert df1.to_list() == [[inv(x) for x in src]]
def test_rows_isna(df1): from datatable import isna dt1 = df1(isna(f.A), engine="eager") dt1.internal.check() assert dt1.names == df1.names assert dt1.topython() == [[None, None], [None, 8]] if has_llvm(): dt2 = df1(isna(f.A), engine="llvm") dt2.internal.check() assert dt1.names == dt2.names assert dt1.topython() == dt2.topython()
def test_rows_greater_than_or_equal(df1): dt1 = df1(f.A >= f.B, engine="eager") dt1.internal.check() assert dt1.names == df1.names assert dt1.topython() == [[2, 3, 4, 5, 6, None, 9], [1, 3, 4, 0, 2, None, 9]] if has_llvm(): dt2 = df1(f.A >= f.B, engine="llvm") dt2.internal.check() assert dt1.names == dt2.names assert dt1.topython() == dt2.topython()
def test_rows_not_equal(df1): dt1 = df1(f.A != f.B, engine="eager") dt1.internal.check() assert dt1.names == df1.names assert dt1.topython() == [[0, 1, 2, 5, 6, 7, None], [3, 2, 1, 0, 2, None, 8]] if has_llvm(): dt2 = df1(f.A != f.B, engine="llvm") dt2.internal.check() assert dt1.names == dt2.names assert dt1.topython() == dt2.topython()
def test_dt_isna(src): dt0 = dt.Frame(src) dt1 = dt0(select=lambda f: dt.isna(f[0]), engine="eager") dt1.internal.check() assert dt1.stypes == (stype.bool8, ) pyans = [x is None for x in src] assert dt1.topython()[0] == pyans if has_llvm(): dt2 = dt0(select=lambda f: dt.isna(f[0]), engine="llvm") dt2.internal.check() assert dt2.stypes == (stype.bool8, ) assert dt2.topython()[0] == pyans
def test_dt_isna(src): from datatable import isna dt0 = dt.Frame(src) dt1 = dt0[:, isna(f[0])] dt1.internal.check() assert dt1.stypes == (stype.bool8, ) pyans = [x is None for x in src] assert dt1.to_list()[0] == pyans if has_llvm(): dt2 = dt0(select=lambda f: dt.isna(f[0]), engine="llvm") dt2.internal.check() assert dt2.stypes == (stype.bool8, ) assert dt2.to_list()[0] == pyans
def test_cols_expression2(): # In Py3.6+ we could have used a regular dictionary here... from collections import OrderedDict selector = OrderedDict([("foo", f.A), ("bar", -f.A)]) f0 = dt.Frame({"A": range(10)}) f1 = f0(select=selector, engine="eager") f1.internal.check() assert f1.names == ("foo", "bar") assert f1.stypes == f0.stypes * 2 assert f1.topython() == [list(range(10)), list(range(0, -10, -1))] if has_llvm(): f2 = f0(select=selector, engine="llvm") f2.internal.check() assert f2.stypes == f1.stypes assert f2.names == f1.names assert f2.topython() == f1.topython()