1
- from hypothesis import given , note
1
+ import platform
2
+
3
+ from hypothesis import given
2
4
import hypothesis .strategies as st
3
5
import numpy as np
4
6
import pytest
11
13
import pandas ._testing as tm
12
14
13
15
16
+ @pytest .fixture (name = "overflow_msg" , scope = "module" )
17
+ def fixture_overflow_msg () -> str :
18
+ if platform .system () == "Windows" :
19
+ return "int too big to convert"
20
+ return "Python int too large to convert to C long"
21
+
22
+
14
23
@pytest .mark .parametrize ("operation, expected" , [("min" , "a" ), ("max" , "b" )])
15
24
def test_reductions_series_strings (operation , expected ):
16
25
# GH#31746
@@ -60,7 +69,7 @@ def test_td64_sum_empty(skipna):
60
69
).map (pd .Timedelta )
61
70
)
62
71
def test_td64_summation_retains_ns_precision_over_expected_range (value : pd .Timedelta ):
63
- result = pd . Series (value ).sum ()
72
+ result = Series (value ).sum ()
64
73
65
74
assert result == value
66
75
@@ -76,31 +85,33 @@ def test_td64_summation_retains_ns_precision_over_expected_range(value: pd.Timed
76
85
def test_td64_summation_loses_ns_precision_if_float_conversion_rounds (
77
86
value : pd .Timedelta ,
78
87
):
79
- result = pd . Series (value ).sum ()
88
+ result = Series (value ).sum ()
80
89
81
90
assert result != value
82
91
83
92
84
93
@given (
85
- st .integers (
94
+ value = st .integers (
86
95
min_value = pd .Timedelta .max .value - 2 ** 9 + 1 ,
87
96
max_value = pd .Timedelta .max .value ,
88
97
).map (pd .Timedelta )
89
98
)
90
- def test_td64_summation_raises_spurious_overflow_error_for_single_elem_series_with_near_max_value (
99
+ def test_td64_summation_raises_spurious_overflow_error_for_single_elem_series (
91
100
value : pd .Timedelta ,
101
+ overflow_msg : str ,
92
102
):
93
- msg = "Python int too large to convert to C long"
94
- with pytest .raises (OverflowError , match = msg ):
95
- pd .Series (value ).sum ()
103
+ with pytest .raises (OverflowError , match = overflow_msg ):
104
+ Series (value ).sum ()
96
105
97
106
98
- @given (st .integers (min_value = 1 , max_value = 2 ** 10 ).map (pd .Timedelta ))
99
- def test_td64_summation_raises_overflow_error_for_small_overflows (value : pd .Timedelta ):
100
- s = pd .Series ([pd .Timedelta .max , value ])
107
+ @given (value = st .integers (min_value = 1 , max_value = 2 ** 10 ).map (pd .Timedelta ))
108
+ def test_td64_summation_raises_overflow_error_for_small_overflows (
109
+ value : pd .Timedelta ,
110
+ overflow_msg : str ,
111
+ ):
112
+ s = Series ([pd .Timedelta .max , value ])
101
113
102
- msg = "Python int too large to convert to C long"
103
- with pytest .raises (OverflowError , match = msg ):
114
+ with pytest .raises (OverflowError , match = overflow_msg ):
104
115
s .sum ()
105
116
106
117
@@ -111,7 +122,7 @@ def test_td64_summation_raises_overflow_error_for_small_overflows(value: pd.Time
111
122
).map (pd .Timedelta )
112
123
)
113
124
def test_td64_summation_raises_value_error_for_most_overflows (value : pd .Timedelta ):
114
- s = pd . Series ([pd .Timedelta .max , value ])
125
+ s = Series ([pd .Timedelta .max , value ])
115
126
116
127
msg = "overflow in timedelta operation"
117
128
with pytest .raises (ValueError , match = msg ):
0 commit comments