@@ -152,6 +152,17 @@ def test_interval() -> None:
152
152
bool ,
153
153
)
154
154
155
+
156
+ def test_interval_math () -> None :
157
+ interval_i = pd .Interval (0 , 1 , closed = "left" )
158
+ interval_f = pd .Interval (0.0 , 1.0 , closed = "right" )
159
+ interval_ts = pd .Interval (
160
+ pd .Timestamp ("2017-01-01" ), pd .Timestamp ("2017-01-02" ), closed = "both"
161
+ )
162
+ interval_td = pd .Interval (
163
+ pd .Timedelta ("1 days" ), pd .Timedelta ("2 days" ), closed = "neither"
164
+ )
165
+
155
166
check (assert_type (interval_i * 3 , "pd.Interval[int]" ), pd .Interval , int )
156
167
check (assert_type (interval_f * 3 , "pd.Interval[float]" ), pd .Interval , float )
157
168
check (
@@ -216,6 +227,7 @@ def test_interval() -> None:
216
227
pd .Timedelta ,
217
228
)
218
229
230
+ # Subtraction
219
231
check (assert_type (interval_i - 1 , "pd.Interval[int]" ), pd .Interval , int )
220
232
check (assert_type (interval_f - 1 , "pd.Interval[float]" ), pd .Interval , float )
221
233
check (
@@ -240,39 +252,66 @@ def test_interval() -> None:
240
252
pd .Interval ,
241
253
)
242
254
255
+ # Addition
243
256
check (assert_type (interval_i + 1 , "pd.Interval[int]" ), pd .Interval )
257
+ check (assert_type (1 + interval_i , "pd.Interval[int]" ), pd .Interval )
244
258
check (assert_type (interval_f + 1 , "pd.Interval[float]" ), pd .Interval )
259
+ check (assert_type (1 + interval_f , "pd.Interval[float]" ), pd .Interval )
245
260
check (
246
261
assert_type (interval_ts + pd .Timedelta (days = 1 ), "pd.Interval[pd.Timestamp]" ),
247
262
pd .Interval ,
248
263
)
264
+ check (
265
+ assert_type (pd .Timedelta (days = 1 ) + interval_ts , "pd.Interval[pd.Timestamp]" ),
266
+ pd .Interval ,
267
+ )
249
268
check (
250
269
assert_type (interval_td + pd .Timedelta (days = 1 ), "pd.Interval[pd.Timedelta]" ),
251
270
pd .Interval ,
252
271
)
272
+ check (
273
+ assert_type (pd .Timedelta (days = 1 ) + interval_td , "pd.Interval[pd.Timedelta]" ),
274
+ pd .Interval ,
275
+ )
253
276
254
277
check (assert_type (interval_i + 1.5 , "pd.Interval[float]" ), pd .Interval )
278
+ check (assert_type (1.5 + interval_i , "pd.Interval[float]" ), pd .Interval )
255
279
check (assert_type (interval_f + 1.5 , "pd.Interval[float]" ), pd .Interval )
280
+ check (assert_type (1.5 + interval_f , "pd.Interval[float]" ), pd .Interval )
256
281
check (
257
282
assert_type (interval_ts + pd .Timedelta (days = 1 ), "pd.Interval[pd.Timestamp]" ),
258
283
pd .Interval ,
259
284
)
285
+ check (
286
+ assert_type (pd .Timedelta (days = 1 ) + interval_ts , "pd.Interval[pd.Timestamp]" ),
287
+ pd .Interval ,
288
+ )
260
289
check (
261
290
assert_type (interval_td + pd .Timedelta (days = 1 ), "pd.Interval[pd.Timedelta]" ),
262
291
pd .Interval ,
263
292
)
293
+ check (
294
+ assert_type (pd .Timedelta (days = 1 ) + interval_td , "pd.Interval[pd.Timedelta]" ),
295
+ pd .Interval ,
296
+ )
297
+
298
+
299
+ def test_interval_cmp ():
300
+ interval_i = pd .Interval (0 , 1 , closed = "left" )
301
+ interval_f = pd .Interval (0.0 , 1.0 , closed = "right" )
302
+ interval_ts = pd .Interval (
303
+ pd .Timestamp ("2017-01-01" ), pd .Timestamp ("2017-01-02" ), closed = "both"
304
+ )
305
+ interval_td = pd .Interval (
306
+ pd .Timedelta ("1 days" ), pd .Timedelta ("2 days" ), closed = "neither"
307
+ )
264
308
265
309
check (assert_type (0.5 in interval_i , bool ), bool )
266
310
check (assert_type (1 in interval_i , bool ), bool )
267
311
check (assert_type (1 in interval_f , bool ), bool )
268
312
check (assert_type (pd .Timestamp ("2000-1-1" ) in interval_ts , bool ), bool )
269
313
check (assert_type (pd .Timedelta (days = 1 ) in interval_td , bool ), bool )
270
314
271
- check (assert_type (hash (interval_i ), int ), int )
272
- check (assert_type (hash (interval_f ), int ), int )
273
- check (assert_type (hash (interval_ts ), int ), int )
274
- check (assert_type (hash (interval_td ), int ), int )
275
-
276
315
interval_index_int = pd .IntervalIndex ([interval_i ])
277
316
check (
278
317
assert_type (interval_index_int >= interval_i , np_ndarray_bool ),
0 commit comments