Skip to content

Commit 41d5a5c

Browse files
authored
test: use constructor_eager for testing gather_every (#2334)
* test: use constructor_eager for testing gather_every * use constructor_eager in from_numpy tests * coverage
1 parent 78a5511 commit 41d5a5c

File tree

3 files changed

+34
-52
lines changed

3 files changed

+34
-52
lines changed

tests/conftest.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -270,10 +270,4 @@ def pytest_generate_tests(metafunc: pytest.Metafunc) -> None:
270270
"constructor_eager", eager_constructors, ids=eager_constructors_ids
271271
)
272272
elif "constructor" in metafunc.fixturenames:
273-
if (
274-
any(x in str(metafunc.module) for x in ("from_dict", "from_numpy"))
275-
and LAZY_CONSTRUCTORS["duckdb"] in constructors
276-
):
277-
constructors.remove(LAZY_CONSTRUCTORS["duckdb"])
278-
constructors_ids.remove("duckdb")
279273
metafunc.parametrize("constructor", constructors, ids=constructors_ids)

tests/frame/gather_every_test.py

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,39 @@
11
from __future__ import annotations
22

3-
from contextlib import nullcontext
4-
3+
import pandas as pd
54
import pytest
65

76
import narwhals as nw_main
87
import narwhals.stable.v1 as nw
9-
from tests.utils import Constructor
8+
from tests.utils import ConstructorEager
109
from tests.utils import assert_equal_data
1110

1211
data = {"a": list(range(10))}
1312

1413

1514
@pytest.mark.parametrize("n", [1, 2, 3])
1615
@pytest.mark.parametrize("offset", [1, 2, 3])
17-
def test_gather_every(
18-
constructor: Constructor, n: int, offset: int, request: pytest.FixtureRequest
19-
) -> None:
20-
if "pyspark" in str(constructor) or "duckdb" in str(constructor):
21-
request.applymarker(pytest.mark.xfail)
22-
df_v1 = nw.from_native(constructor(data))
16+
def test_gather_every(constructor_eager: ConstructorEager, n: int, offset: int) -> None:
17+
df_v1 = nw.from_native(constructor_eager(data))
2318
result = df_v1.gather_every(n=n, offset=offset)
2419
expected = {"a": data["a"][offset::n]}
2520
assert_equal_data(result, expected)
2621

2722
# Test deprecation for LazyFrame in main namespace
28-
df_main = nw_main.from_native(constructor(data))
29-
30-
context = (
31-
pytest.deprecated_call(
32-
match="is deprecated and will be removed in a future version"
33-
)
34-
if isinstance(df_main, nw_main.LazyFrame)
35-
else nullcontext()
36-
)
37-
38-
with context:
39-
df_main.gather_every(n=n, offset=offset)
23+
lf = nw_main.from_native(constructor_eager(data)).lazy()
24+
with pytest.deprecated_call(
25+
match="is deprecated and will be removed in a future version"
26+
):
27+
lf.gather_every(n=n, offset=offset)
28+
29+
30+
@pytest.mark.parametrize("n", [1, 2, 3])
31+
@pytest.mark.parametrize("offset", [1, 2, 3])
32+
def test_gather_every_dask_v1(n: int, offset: int) -> None:
33+
pytest.importorskip("dask")
34+
import dask.dataframe as dd
35+
36+
df_v1 = nw.from_native(dd.from_pandas(pd.DataFrame(data)))
37+
result = df_v1.gather_every(n=n, offset=offset)
38+
expected = {"a": data["a"][offset::n]}
39+
assert_equal_data(result, expected)

tests/from_numpy_test.py

Lines changed: 13 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
import narwhals as nw
1010
import narwhals.stable.v1 as nw_v1
11-
from tests.utils import Constructor
11+
from tests.utils import ConstructorEager
1212
from tests.utils import assert_equal_data
1313

1414
if TYPE_CHECKING:
@@ -24,64 +24,52 @@
2424
}
2525

2626

27-
def test_from_numpy(constructor: Constructor, request: pytest.FixtureRequest) -> None:
28-
if "dask" in str(constructor) or "pyspark" in str(constructor):
29-
request.applymarker(pytest.mark.xfail)
30-
df = nw.from_native(constructor(data))
27+
def test_from_numpy(constructor_eager: ConstructorEager) -> None:
28+
df = nw.from_native(constructor_eager(data))
3129
backend = nw.get_native_namespace(df)
3230
result = nw.from_numpy(arr, backend=backend)
3331
assert_equal_data(result, expected)
3432
assert isinstance(result, nw.DataFrame)
3533

3634

37-
def test_from_numpy_schema_dict(
38-
constructor: Constructor, request: pytest.FixtureRequest
39-
) -> None:
40-
if "dask" in str(constructor) or "pyspark" in str(constructor):
41-
request.applymarker(pytest.mark.xfail)
35+
def test_from_numpy_schema_dict(constructor_eager: ConstructorEager) -> None:
4236
schema = {
4337
"c": nw_v1.Int16(),
4438
"d": nw_v1.Float32(),
4539
"e": nw_v1.Int16(),
4640
"f": nw_v1.Float64(),
4741
}
48-
df = nw_v1.from_native(constructor(data))
42+
df = nw_v1.from_native(constructor_eager(data))
4943
backend = nw_v1.get_native_namespace(df)
5044
result = nw_v1.from_numpy(arr, backend=backend, schema=schema)
5145
assert result.collect_schema() == schema
5246

5347

54-
def test_from_numpy_schema_list(
55-
constructor: Constructor, request: pytest.FixtureRequest
56-
) -> None:
57-
if "dask" in str(constructor) or "pyspark" in str(constructor):
58-
request.applymarker(pytest.mark.xfail)
48+
def test_from_numpy_schema_list(constructor_eager: ConstructorEager) -> None:
5949
schema = ["c", "d", "e", "f"]
60-
df = nw_v1.from_native(constructor(data))
50+
df = nw_v1.from_native(constructor_eager(data))
6151
backend = nw_v1.get_native_namespace(df)
6252
result = nw_v1.from_numpy(arr, backend=backend, schema=schema)
6353
assert result.columns == schema
6454

6555

66-
def test_from_numpy_schema_notvalid(constructor: Constructor) -> None:
67-
df = nw.from_native(constructor(data))
56+
def test_from_numpy_schema_notvalid(constructor_eager: ConstructorEager) -> None:
57+
df = nw.from_native(constructor_eager(data))
6858
backend = nw_v1.get_native_namespace(df)
6959
with pytest.raises(TypeError, match=r"`schema.*expected.*types"):
7060
nw.from_numpy(arr, schema=5, backend=backend) # type: ignore[arg-type]
7161

7262

73-
def test_from_numpy_v1(constructor: Constructor, request: pytest.FixtureRequest) -> None:
74-
if "dask" in str(constructor) or "pyspark" in str(constructor):
75-
request.applymarker(pytest.mark.xfail)
76-
df = nw_v1.from_native(constructor(data))
63+
def test_from_numpy_v1(constructor_eager: ConstructorEager) -> None:
64+
df = nw_v1.from_native(constructor_eager(data))
7765
backend = nw_v1.get_native_namespace(df)
7866
result = nw_v1.from_numpy(arr, backend=backend)
7967
assert_equal_data(result, expected)
8068
assert isinstance(result, nw_v1.DataFrame)
8169

8270

83-
def test_from_numpy_not2d(constructor: Constructor) -> None:
84-
df = nw.from_native(constructor(data))
71+
def test_from_numpy_not2d(constructor_eager: ConstructorEager) -> None:
72+
df = nw.from_native(constructor_eager(data))
8573
backend = nw_v1.get_native_namespace(df)
8674
with pytest.raises(ValueError, match="`from_numpy` only accepts 2D numpy arrays"):
8775
nw.from_numpy(np.array([0]), backend=backend) # pyright: ignore[reportArgumentType]

0 commit comments

Comments
 (0)