1
- # Copyright (c) 2023-2024 , NVIDIA CORPORATION.
1
+ # Copyright (c) 2023-2025 , NVIDIA CORPORATION.
2
2
import numpy as np
3
3
import pandas as pd
4
4
import pyarrow as pa
@@ -30,7 +30,6 @@ def test_interval_to_arrow():
30
30
np .int64 ,
31
31
np .float32 ,
32
32
np .float64 ,
33
- cudf .Scalar ,
34
33
]
35
34
36
35
PERIODS_TYPES = [
@@ -39,10 +38,23 @@ def test_interval_to_arrow():
39
38
np .int16 ,
40
39
np .int32 ,
41
40
np .int64 ,
42
- cudf .Scalar ,
43
41
]
44
42
45
43
44
+ def assert_with_pandas_2_bug (pindex , gindex ):
45
+ # pandas upcasts to 64 bit https://github.com/pandas-dev/pandas/issues/57268
46
+ # using Series to use check_dtype
47
+ if gindex .dtype .subtype .kind == "f" :
48
+ gindex = gindex .astype (
49
+ cudf .IntervalDtype (subtype = "float64" , closed = gindex .dtype .closed )
50
+ )
51
+ elif gindex .dtype .subtype .kind == "i" :
52
+ gindex = gindex .astype (
53
+ cudf .IntervalDtype (subtype = "int64" , closed = gindex .dtype .closed )
54
+ )
55
+ assert_eq (pd .Series (pindex ), cudf .Series (gindex ), check_dtype = False )
56
+
57
+
46
58
@pytest .mark .parametrize ("closed" , ["left" , "right" , "both" , "neither" ])
47
59
@pytest .mark .parametrize ("start" , [0 , 1 , 2 , 3 ])
48
60
@pytest .mark .parametrize ("end" , [4 , 5 , 6 , 7 ])
@@ -57,9 +69,7 @@ def test_interval_range_basic(start, end, closed):
57
69
@pytest .mark .parametrize ("end_t" , INTERVAL_BOUNDARY_TYPES )
58
70
def test_interval_range_dtype_basic (start_t , end_t ):
59
71
start , end = start_t (24 ), end_t (42 )
60
- start_val = start .value if isinstance (start , cudf .Scalar ) else start
61
- end_val = end .value if isinstance (end , cudf .Scalar ) else end
62
- pindex = pd .interval_range (start = start_val , end = end_val , closed = "left" )
72
+ pindex = pd .interval_range (start = start , end = end , closed = "left" )
63
73
gindex = cudf .interval_range (start = start , end = end , closed = "left" )
64
74
65
75
assert_eq (pindex , gindex )
@@ -91,27 +101,11 @@ def test_interval_range_freq_basic(start, end, freq, closed):
91
101
@pytest .mark .parametrize ("freq_t" , INTERVAL_BOUNDARY_TYPES )
92
102
def test_interval_range_freq_basic_dtype (start_t , end_t , freq_t ):
93
103
start , end , freq = start_t (5 ), end_t (70 ), freq_t (3 )
94
- start_val = start .value if isinstance (start , cudf .Scalar ) else start
95
- end_val = end .value if isinstance (end , cudf .Scalar ) else end
96
- freq_val = freq .value if isinstance (freq , cudf .Scalar ) else freq
97
- pindex = pd .interval_range (
98
- start = start_val , end = end_val , freq = freq_val , closed = "left"
99
- )
104
+ pindex = pd .interval_range (start = start , end = end , freq = freq , closed = "left" )
100
105
gindex = cudf .interval_range (
101
106
start = start , end = end , freq = freq , closed = "left"
102
107
)
103
- if gindex .dtype .subtype .kind == "f" :
104
- gindex = gindex .astype (
105
- cudf .IntervalDtype (subtype = "float64" , closed = gindex .dtype .closed )
106
- )
107
- elif gindex .dtype .subtype .kind == "i" :
108
- gindex = gindex .astype (
109
- cudf .IntervalDtype (subtype = "int64" , closed = gindex .dtype .closed )
110
- )
111
-
112
- # pandas upcasts to 64 bit https://github.com/pandas-dev/pandas/issues/57268
113
- # using Series to use check_dtype
114
- assert_eq (pd .Series (pindex ), cudf .Series (gindex ), check_dtype = False )
108
+ assert_with_pandas_2_bug (pindex , gindex )
115
109
116
110
117
111
@pytest .mark .parametrize ("closed" , ["left" , "right" , "both" , "neither" ])
@@ -134,13 +128,8 @@ def test_interval_range_periods_basic(start, end, periods, closed):
134
128
@pytest .mark .parametrize ("periods_t" , PERIODS_TYPES )
135
129
def test_interval_range_periods_basic_dtype (start_t , end_t , periods_t ):
136
130
start , end , periods = start_t (0 ), end_t (4 ), periods_t (1 )
137
- start_val = start .value if isinstance (start , cudf .Scalar ) else start
138
- end_val = end .value if isinstance (end , cudf .Scalar ) else end
139
- periods_val = (
140
- periods .value if isinstance (periods , cudf .Scalar ) else periods
141
- )
142
131
pindex = pd .interval_range (
143
- start = start_val , end = end_val , periods = periods_val , closed = "left"
132
+ start = start , end = end , periods = periods , closed = "left"
144
133
)
145
134
gindex = cudf .interval_range (
146
135
start = start , end = end , periods = periods , closed = "left"
@@ -188,19 +177,13 @@ def test_interval_range_periods_freq_end(end, freq, periods, closed):
188
177
@pytest .mark .parametrize ("end_t" , INTERVAL_BOUNDARY_TYPES )
189
178
def test_interval_range_periods_freq_end_dtype (periods_t , freq_t , end_t ):
190
179
periods , freq , end = periods_t (2 ), freq_t (3 ), end_t (10 )
191
- freq_val = freq .value if isinstance (freq , cudf .Scalar ) else freq
192
- end_val = end .value if isinstance (end , cudf .Scalar ) else end
193
- periods_val = (
194
- periods .value if isinstance (periods , cudf .Scalar ) else periods
195
- )
196
180
pindex = pd .interval_range (
197
- end = end_val , freq = freq_val , periods = periods_val , closed = "left"
181
+ end = end , freq = freq , periods = periods , closed = "left"
198
182
)
199
183
gindex = cudf .interval_range (
200
184
end = end , freq = freq , periods = periods , closed = "left"
201
185
)
202
-
203
- assert_eq (pindex , gindex )
186
+ assert_with_pandas_2_bug (pindex , gindex )
204
187
205
188
206
189
@pytest .mark .parametrize ("closed" , ["left" , "right" , "both" , "neither" ])
@@ -223,21 +206,13 @@ def test_interval_range_periods_freq_start(start, freq, periods, closed):
223
206
@pytest .mark .parametrize ("start_t" , INTERVAL_BOUNDARY_TYPES )
224
207
def test_interval_range_periods_freq_start_dtype (periods_t , freq_t , start_t ):
225
208
periods , freq , start = periods_t (2 ), freq_t (3 ), start_t (9 )
226
- freq_val = freq .value if isinstance (freq , cudf .Scalar ) else freq
227
- start_val = start .value if isinstance (start , cudf .Scalar ) else start
228
- periods_val = (
229
- periods .value if isinstance (periods , cudf .Scalar ) else periods
230
- )
231
209
pindex = pd .interval_range (
232
- start = start_val , freq = freq_val , periods = periods_val , closed = "left"
210
+ start = start , freq = freq , periods = periods , closed = "left"
233
211
)
234
212
gindex = cudf .interval_range (
235
213
start = start , freq = freq , periods = periods , closed = "left"
236
214
)
237
-
238
- # pandas upcasts to 64 bit https://github.com/pandas-dev/pandas/issues/57268
239
- # using Series to use check_dtype
240
- assert_eq (pd .Series (pindex ), cudf .Series (gindex ), check_dtype = False )
215
+ assert_with_pandas_2_bug (pindex , gindex )
241
216
242
217
243
218
@pytest .mark .parametrize ("closed" , ["right" , "left" , "both" , "neither" ])
0 commit comments