Skip to content

Commit

Permalink
API(str dtype): Raise on StringDtype for unary op + (#60710)
Browse files Browse the repository at this point in the history
  • Loading branch information
rhshadrach authored Jan 22, 2025
1 parent 5efac82 commit 1bb264c
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 6 deletions.
1 change: 1 addition & 0 deletions doc/source/whatsnew/v2.3.0.rst
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ Conversion

Strings
^^^^^^^
- Bug in :meth:`Series.__pos__` and :meth:`DataFrame.__pos__` did not raise for :class:`StringDtype` with ``storage="pyarrow"`` (:issue:`60710`)
- Bug in :meth:`Series.rank` for :class:`StringDtype` with ``storage="pyarrow"`` incorrectly returning integer results in case of ``method="average"`` and raising an error if it would truncate results (:issue:`59768`)
- Bug in :meth:`Series.replace` with :class:`StringDtype` when replacing with a non-string value was not upcasting to ``object`` dtype (:issue:`60282`)
- Bug in :meth:`Series.str.replace` when ``n < 0`` for :class:`StringDtype` with ``storage="pyarrow"`` (:issue:`59628`)
Expand Down
3 changes: 3 additions & 0 deletions pandas/core/arrays/string_arrow.py
Original file line number Diff line number Diff line change
Expand Up @@ -481,6 +481,9 @@ def _cmp_method(self, other, op):
return result.to_numpy(np.bool_, na_value=False)
return result

def __pos__(self) -> Self:
raise TypeError(f"bad operand type for unary +: '{self.dtype}'")


class ArrowStringArrayNumpySemantics(ArrowStringArray):
_na_value = np.nan
6 changes: 0 additions & 6 deletions pandas/tests/frame/test_unary.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@
import numpy as np
import pytest

from pandas._config import using_string_dtype

from pandas.compat import HAS_PYARROW
from pandas.compat.numpy import np_version_gte1p25

import pandas as pd
Expand Down Expand Up @@ -122,9 +119,6 @@ def test_pos_object(self, df_data):
tm.assert_frame_equal(+df, df)
tm.assert_series_equal(+df["a"], df["a"])

@pytest.mark.xfail(
using_string_dtype() and HAS_PYARROW, reason="TODO(infer_string)"
)
@pytest.mark.filterwarnings("ignore:Applying:DeprecationWarning")
def test_pos_object_raises(self):
# GH#21380
Expand Down

0 comments on commit 1bb264c

Please sign in to comment.