Skip to content

Commit 4f2b4b0

Browse files
committed
DEPS: Update NumpyExtensionArray repr for NEP51
1 parent f1b00b8 commit 4f2b4b0

File tree

3 files changed

+38
-0
lines changed

3 files changed

+38
-0
lines changed

pandas/core/arrays/numpy_.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from typing import (
44
TYPE_CHECKING,
5+
Any,
56
Literal,
67
)
78

@@ -29,6 +30,8 @@
2930
from pandas.core.strings.object_array import ObjectStringArrayMixin
3031

3132
if TYPE_CHECKING:
33+
from collections.abc import Callable
34+
3235
from pandas._typing import (
3336
AxisInt,
3437
Dtype,
@@ -565,3 +568,10 @@ def _wrap_ndarray_result(self, result: np.ndarray):
565568

566569
return TimedeltaArray._simple_new(result, dtype=result.dtype)
567570
return type(self)(result)
571+
572+
def _formatter(self, boxed: bool = False) -> Callable[[Any], str | None]:
573+
# NEP 51: https://github.com/numpy/numpy/pull/22449
574+
if self.dtype == "object":
575+
return repr
576+
else:
577+
return str

pandas/tests/arrays/numpy_/test_numpy.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,3 +323,30 @@ def test_factorize_unsigned():
323323
tm.assert_numpy_array_equal(res_codes, exp_codes)
324324

325325
tm.assert_extension_array_equal(res_unique, NumpyExtensionArray(exp_unique))
326+
327+
328+
# ----------------------------------------------------------------------------
329+
# Output formatting
330+
331+
332+
def test_array_repr(any_numpy_array):
333+
# GH#???
334+
nparray = any_numpy_array
335+
arr = NumpyExtensionArray(nparray)
336+
if nparray.dtype == "object":
337+
values = "['a', 'b']"
338+
elif nparray.dtype == "float64":
339+
values = "[0.0, 1.0]"
340+
elif nparray.dtype == "int64":
341+
values = "[0, 1]"
342+
elif nparray.dtype == "complex128":
343+
values = "[0j, (1+2j)]"
344+
elif nparray.dtype == "bool":
345+
values = "[True, False]"
346+
elif nparray.dtype == "datetime64[ns]":
347+
values = "[1970-01-01T00:00:00.000000000, 1970-01-01T00:00:00.000000001]"
348+
elif nparray.dtype == "timedelta64[ns]":
349+
values = "[0 nanoseconds, 1 nanoseconds]"
350+
expected = f"<NumpyExtensionArray>\n{values}\nLength: 2, dtype: {nparray.dtype}"
351+
result = repr(arr)
352+
assert result == expected

pandas/tests/arrays/test_period.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,4 +181,5 @@ def test_repr_large():
181181
"'2001-01-01']\n"
182182
"Length: 1000, dtype: period[D]"
183183
)
184+
print(result)
184185
assert result == expected

0 commit comments

Comments
 (0)