1
- from typing import Callable , Iterable
1
+ from typing import Iterable
2
2
3
- import numpy as np
4
- import pytest
5
3
from hypothesis import assume , given
6
4
from hypothesis import strategies as st
7
5
8
- from .strategies import MockColumn , MockDataFrame , NominalDtype , mock_dataframes
6
+ from .strategies import mock_dataframes
9
7
from .wrappers import LibraryInfo
10
8
11
9
12
- def test_library_supports_zero_cols (libinfo : LibraryInfo ):
13
- if not libinfo .allow_zero_cols :
14
- pytest .xfail ("library doesn't support zero cols" )
15
- mock_df = MockDataFrame ({})
16
- df = libinfo .mock_to_toplevel (mock_df )
17
- # Just initialising a dataframe might not catch that a library doesn't
18
- # support zero-column dataframes - using a method like repr might!
19
- repr (df )
20
-
21
-
22
- def test_library_supports_zero_rows (libinfo : LibraryInfo ):
23
- if not libinfo .allow_zero_rows :
24
- pytest .xfail ("library doesn't support zero rows" )
25
- mock_df = MockDataFrame (
26
- {"foo_col" : MockColumn (np .asarray ([], dtype = np .int64 ), NominalDtype .INT64 )}
27
- )
28
- df = libinfo .mock_to_toplevel (mock_df )
29
- # See above comment
30
- repr (df )
31
-
32
-
33
- def _test_dunder_dataframe (df ):
10
+ @given (data = st .data ())
11
+ def test_toplevel_dunder_dataframe (libinfo : LibraryInfo , data : st .DataObject ):
12
+ df = data .draw (libinfo .toplevel_dataframes (), label = "df" )
34
13
assert hasattr (df , "__dataframe__" )
35
- assert isinstance (df .__dataframe__ , Callable )
36
14
out = df .__dataframe__ ()
37
15
assert isinstance (out , dict )
38
16
assert hasattr (out , "dataframe" )
39
17
assert hasattr (out , "version" )
40
18
41
19
42
- @given (data = st .data ())
43
- def test_toplevel_dunder_dataframe (libinfo : LibraryInfo , data : st .DataObject ):
44
- df = data .draw (libinfo .toplevel_dataframes (), label = "df" )
45
- _test_dunder_dataframe (df )
46
-
47
-
48
20
@given (data = st .data ())
49
21
def test_dunder_dataframe (libinfo : LibraryInfo , data : st .DataObject ):
50
- df = data .draw (libinfo .compliant_dataframes (), label = "df" )
51
- _test_dunder_dataframe (df )
22
+ df = data .draw (libinfo .interchange_dataframes (), label = "df" )
23
+ assert hasattr (df , "__dataframe__" )
24
+ out = df .__dataframe__ ()
25
+ assert isinstance (out , dict )
26
+ assert hasattr (out , "dataframe" )
27
+ assert hasattr (out , "version" )
52
28
53
29
54
30
@given (data = st .data ())
55
31
def test_num_columns (libinfo : LibraryInfo , data : st .DataObject ):
56
32
mock_df = data .draw (libinfo .mock_dataframes (), label = "mock_df" )
57
- df = libinfo .mock_to_compliant (mock_df )
33
+ df = libinfo .mock_to_interchange (mock_df )
58
34
out = df .num_columns ()
59
35
assert isinstance (out , int )
60
36
assert out == mock_df .num_columns ()
@@ -66,7 +42,7 @@ def test_num_rows(libinfo: LibraryInfo, data: st.DataObject):
66
42
mock_dataframes (** {** libinfo .mock_dataframes_kwargs , "allow_zero_cols" : False }),
67
43
label = "mock_df" ,
68
44
)
69
- df = libinfo .mock_to_compliant (mock_df )
45
+ df = libinfo .mock_to_interchange (mock_df )
70
46
out = df .num_rows ()
71
47
assume (out is not None )
72
48
assert isinstance (out , int )
@@ -76,7 +52,7 @@ def test_num_rows(libinfo: LibraryInfo, data: st.DataObject):
76
52
@given (data = st .data ())
77
53
def test_num_chunks (libinfo : LibraryInfo , data : st .DataObject ):
78
54
mock_df = data .draw (libinfo .mock_dataframes (), label = "mock_df" )
79
- df = libinfo .mock_to_compliant (mock_df )
55
+ df = libinfo .mock_to_interchange (mock_df )
80
56
out = df .num_chunks ()
81
57
assert isinstance (out , int )
82
58
# result is implementation-dependant
@@ -85,7 +61,7 @@ def test_num_chunks(libinfo: LibraryInfo, data: st.DataObject):
85
61
@given (data = st .data ())
86
62
def test_column_names (libinfo : LibraryInfo , data : st .DataObject ):
87
63
mock_df = data .draw (libinfo .mock_dataframes (), label = "mock_df" )
88
- df = libinfo .mock_to_compliant (mock_df )
64
+ df = libinfo .mock_to_interchange (mock_df )
89
65
out = df .column_names ()
90
66
assert isinstance (out , Iterable )
91
67
assert len (list (out )) == len (mock_df )
@@ -100,7 +76,7 @@ def test_get_column(libinfo: LibraryInfo, data: st.DataObject):
100
76
mock_dataframes (** {** libinfo .mock_dataframes_kwargs , "allow_zero_cols" : False }),
101
77
label = "mock_df" ,
102
78
)
103
- df = libinfo .mock_to_compliant (mock_df )
79
+ df = libinfo .mock_to_interchange (mock_df )
104
80
for i in range (len (mock_df )):
105
81
df .get_column (i )
106
82
@@ -111,7 +87,7 @@ def test_select_columns(libinfo: LibraryInfo, data: st.DataObject):
111
87
mock_dataframes (** {** libinfo .mock_dataframes_kwargs , "allow_zero_cols" : False }),
112
88
label = "mock_df" ,
113
89
)
114
- df = libinfo .mock_to_compliant (mock_df )
90
+ df = libinfo .mock_to_interchange (mock_df )
115
91
indices = data .draw (
116
92
st .lists (st .integers (0 , len (mock_df ) - 1 ), min_size = 1 , unique = True ),
117
93
label = "indices" ,
@@ -125,7 +101,7 @@ def test_select_columns_by_name(libinfo: LibraryInfo, data: st.DataObject):
125
101
mock_dataframes (** {** libinfo .mock_dataframes_kwargs , "allow_zero_cols" : False }),
126
102
label = "mock_df" ,
127
103
)
128
- df = libinfo .mock_to_compliant (mock_df )
104
+ df = libinfo .mock_to_interchange (mock_df )
129
105
names = data .draw (
130
106
st .lists (st .sampled_from (list (mock_df .keys ())), min_size = 1 , unique = True ),
131
107
label = "names" ,
@@ -135,7 +111,7 @@ def test_select_columns_by_name(libinfo: LibraryInfo, data: st.DataObject):
135
111
136
112
@given (data = st .data ())
137
113
def test_get_chunks (libinfo : LibraryInfo , data : st .DataObject ):
138
- df = data .draw (libinfo .compliant_dataframes (), label = "df" )
114
+ df = data .draw (libinfo .interchange_dataframes (), label = "df" )
139
115
_n_chunks = df .num_chunks ()
140
116
assert isinstance (_n_chunks , int ) # sanity check
141
117
n_chunks = data .draw (
0 commit comments