Skip to content

Commit cf5db68

Browse files
[backport 2.3.x] TST: update expected dtype for sum of decimals with pyarrow 21+ (#61799) (#61801)
TST: update expected dtype for sum of decimals with pyarrow 21+ (#61799)
1 parent 50ad136 commit cf5db68

File tree

3 files changed

+9
-1
lines changed

3 files changed

+9
-1
lines changed

pandas/compat/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
pa_version_under18p0,
3737
pa_version_under19p0,
3838
pa_version_under20p0,
39+
pa_version_under21p0,
3940
)
4041

4142
if TYPE_CHECKING:
@@ -197,6 +198,7 @@ def get_bz2_file() -> type[pandas.compat.compressors.BZ2File]:
197198
"pa_version_under18p0",
198199
"pa_version_under19p0",
199200
"pa_version_under20p0",
201+
"pa_version_under21p0",
200202
"HAS_PYARROW",
201203
"IS64",
202204
"ISMUSL",

pandas/compat/pyarrow.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
pa_version_under18p0 = _palv < Version("18.0.0")
2121
pa_version_under19p0 = _palv < Version("19.0.0")
2222
pa_version_under20p0 = _palv < Version("20.0.0")
23+
pa_version_under21p0 = _palv < Version("21.0.0")
2324
HAS_PYARROW = True
2425
except ImportError:
2526
pa_version_under10p1 = True
@@ -34,4 +35,5 @@
3435
pa_version_under18p0 = True
3536
pa_version_under19p0 = True
3637
pa_version_under20p0 = True
38+
pa_version_under21p0 = True
3739
HAS_PYARROW = False

pandas/tests/extension/test_arrow.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
pa_version_under13p0,
4242
pa_version_under14p0,
4343
pa_version_under20p0,
44+
pa_version_under21p0,
4445
)
4546

4647
from pandas.core.dtypes.dtypes import (
@@ -580,7 +581,10 @@ def _get_expected_reduction_dtype(self, arr, op_name: str, skipna: bool):
580581
if op_name in ["max", "min"]:
581582
cmp_dtype = arr.dtype
582583
elif arr.dtype.name == "decimal128(7, 3)[pyarrow]":
583-
if op_name not in ["median", "var", "std", "skew"]:
584+
if op_name == "sum" and not pa_version_under21p0:
585+
# https://github.com/apache/arrow/pull/44184
586+
cmp_dtype = ArrowDtype(pa.decimal128(38, 3))
587+
elif op_name not in ["median", "var", "std", "skew"]:
584588
cmp_dtype = arr.dtype
585589
else:
586590
cmp_dtype = "float64[pyarrow]"

0 commit comments

Comments
 (0)