@@ -32,6 +32,7 @@ def assert_stat_op_calc(
32
32
has_skipna = True ,
33
33
check_dtype = True ,
34
34
check_dates = False ,
35
+ check_less_precise = False ,
35
36
skipna_alternative = None ,
36
37
):
37
38
"""
@@ -53,6 +54,9 @@ def assert_stat_op_calc(
53
54
"alternative(frame)" should be checked.
54
55
check_dates : bool, default false
55
56
Whether opname should be tested on a Datetime Series
57
+ check_less_precise : bool, default False
58
+ Whether results should only be compared approximately;
59
+ passed on to tm.assert_series_equal
56
60
skipna_alternative : function, default None
57
61
NaN-safe version of alternative
58
62
"""
@@ -80,24 +84,35 @@ def wrapper(x):
80
84
result0 = f (axis = 0 , skipna = False )
81
85
result1 = f (axis = 1 , skipna = False )
82
86
tm .assert_series_equal (
83
- result0 , frame .apply (wrapper ), check_dtype = check_dtype ,
87
+ result0 ,
88
+ frame .apply (wrapper ),
89
+ check_dtype = check_dtype ,
90
+ check_less_precise = check_less_precise ,
84
91
)
85
92
# HACK: win32
86
93
tm .assert_series_equal (
87
- result1 , frame .apply (wrapper , axis = 1 ), check_dtype = False ,
94
+ result1 ,
95
+ frame .apply (wrapper , axis = 1 ),
96
+ check_dtype = False ,
97
+ check_less_precise = check_less_precise ,
88
98
)
89
99
else :
90
100
skipna_wrapper = alternative
91
101
92
102
result0 = f (axis = 0 )
93
103
result1 = f (axis = 1 )
94
104
tm .assert_series_equal (
95
- result0 , frame .apply (skipna_wrapper ), check_dtype = check_dtype ,
105
+ result0 ,
106
+ frame .apply (skipna_wrapper ),
107
+ check_dtype = check_dtype ,
108
+ check_less_precise = check_less_precise ,
96
109
)
97
110
98
111
if opname in ["sum" , "prod" ]:
99
112
expected = frame .apply (skipna_wrapper , axis = 1 )
100
- tm .assert_series_equal (result1 , expected , check_dtype = False )
113
+ tm .assert_series_equal (
114
+ result1 , expected , check_dtype = False , check_less_precise = check_less_precise
115
+ )
101
116
102
117
# check dtypes
103
118
if check_dtype :
@@ -316,9 +331,15 @@ def kurt(x):
316
331
check_dates = True ,
317
332
)
318
333
334
+ # GH#32571 check_less_precise is needed on apparently-random
335
+ # py37-npdev builds and OSX-PY36-min_version builds
319
336
# mixed types (with upcasting happening)
320
337
assert_stat_op_calc (
321
- "sum" , np .sum , mixed_float_frame .astype ("float32" ), check_dtype = False ,
338
+ "sum" ,
339
+ np .sum ,
340
+ mixed_float_frame .astype ("float32" ),
341
+ check_dtype = False ,
342
+ check_less_precise = True ,
322
343
)
323
344
324
345
assert_stat_op_calc (
0 commit comments