4
4
from typing import Any
5
5
6
6
import pandas as pd
7
- import polars as pl
8
- import pyarrow as pa
9
7
import pytest
10
8
11
9
import narwhals .stable .v1 as nw
12
- from narwhals .utils import parse_version
13
10
14
11
if TYPE_CHECKING :
15
12
from tests .utils import ConstructorEager
16
13
17
- df_pandas = pd .DataFrame ({"a" : [1 , 3 , 2 ], "b" : [4 , 4 , 6 ], "z" : [7.0 , 8 , 9 ]})
18
- df_pa = pa .table ({"a" : [1 , 3 , 2 ], "b" : [4 , 4 , 6 ], "z" : [7.0 , 8 , 9 ]})
19
- if parse_version (pd .__version__ ) >= parse_version ("1.5.0" ):
20
- df_pandas_pyarrow = pd .DataFrame (
21
- {"a" : [1 , 3 , 2 ], "b" : [4 , 4 , 6 ], "z" : [7.0 , 8 , 9 ]}
22
- ).astype (
23
- {
24
- "a" : "Int64[pyarrow]" ,
25
- "b" : "Int64[pyarrow]" ,
26
- "z" : "Float64[pyarrow]" ,
27
- }
28
- )
29
- df_pandas_nullable = pd .DataFrame (
30
- {"a" : [1 , 3 , 2 ], "b" : [4 , 4 , 6 ], "z" : [7.0 , 8 , 9 ]}
31
- ).astype (
32
- {
33
- "a" : "Int64" ,
34
- "b" : "Int64" ,
35
- "z" : "Float64" ,
36
- }
37
- )
38
- else : # pragma: no cover
39
- df_pandas_pyarrow = df_pandas
40
- df_pandas_nullable = df_pandas
41
- df_polars = pl .DataFrame ({"a" : [1 , 3 , 2 ], "b" : [4 , 4 , 6 ], "z" : [7.0 , 8 , 9 ]})
42
-
43
- df_pandas_na = pd .DataFrame ({"a" : [None , 3 , 2 ], "b" : [4 , 4 , 6 ], "z" : [7.0 , None , 9 ]})
44
- df_polars_na = pl .DataFrame ({"a" : [None , 3 , 2 ], "b" : [4 , 4 , 6 ], "z" : [7.0 , None , 9 ]})
14
+ data = {"a" : [1 , 3 , 2 ], "b" : [4 , 4 , 6 ], "z" : [7.0 , 8 , 9 ]}
15
+ data_na = {"a" : [None , 3 , 2 ], "b" : [4 , 4 , 6 ], "z" : [7.0 , None , 9 ]}
45
16
46
17
47
18
@pytest .mark .parametrize (
@@ -73,9 +44,6 @@ def test_iter_rows(
73
44
assert result == expected
74
45
75
46
76
- @pytest .mark .parametrize (
77
- "df_raw" , [df_pandas , df_pandas_nullable , df_pandas_pyarrow , df_polars , df_pa ]
78
- )
79
47
@pytest .mark .parametrize (
80
48
("named" , "expected" ),
81
49
[
@@ -91,19 +59,18 @@ def test_iter_rows(
91
59
],
92
60
)
93
61
def test_rows (
94
- df_raw : Any ,
62
+ constructor_eager : ConstructorEager ,
95
63
named : bool , # noqa: FBT001
96
64
expected : list [tuple [Any , ...]] | list [dict [str , Any ]],
97
65
) -> None :
98
- df = nw .from_native (df_raw , eager_only = True )
66
+ df = nw .from_native (constructor_eager ( data ) , eager_only = True )
99
67
result = df .rows (named = named )
100
68
assert result == expected
101
69
102
70
103
- @pytest .mark .parametrize ("df_raw" , [df_pandas_na , df_polars_na ])
104
- def test_rows_with_nulls_unnamed (df_raw : Any ) -> None :
71
+ def test_rows_with_nulls_unnamed (constructor_eager : ConstructorEager ) -> None :
105
72
# GIVEN
106
- df = nw .from_native (df_raw , eager_only = True )
73
+ df = nw .from_native (constructor_eager ( data_na ) , eager_only = True )
107
74
108
75
# WHEN
109
76
result = list (df .iter_rows (named = False ))
@@ -119,10 +86,9 @@ def test_rows_with_nulls_unnamed(df_raw: Any) -> None:
119
86
assert value_in_result == value
120
87
121
88
122
- @pytest .mark .parametrize ("df_raw" , [df_pandas_na , df_polars_na ])
123
- def test_rows_with_nulls_named (df_raw : Any ) -> None :
89
+ def test_rows_with_nulls_named (constructor_eager : ConstructorEager ) -> None :
124
90
# GIVEN
125
- df = nw .from_native (df_raw , eager_only = True )
91
+ df = nw .from_native (constructor_eager ( data_na ) , eager_only = True )
126
92
127
93
# WHEN
128
94
result = list (df .iter_rows (named = True ))
0 commit comments