Skip to content

Commit 7323041

Browse files
jbrockmendelclaude
andcommitted
BUG: fix duplicate searchsorted on NumpyExtensionArray
Remove the duplicate searchsorted definition that called super() (which goes through _validate_setitem_value, too strict for searchsorted). Add validate_searchsorted_value to the existing method that correctly bypasses _validate_setitem_value by delegating to numpy directly. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent cdd0637 commit 7323041

1 file changed

Lines changed: 1 addition & 9 deletions

File tree

pandas/core/arrays/numpy_.py

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@ def searchsorted(
200200
# Parent's searchsorted calls _validate_setitem_value, which is
201201
# too strict for search (e.g. rejects float into int). Delegate
202202
# directly to numpy which handles cross-dtype searches correctly.
203+
validate_searchsorted_value(self._ndarray.dtype, value)
203204
return self._ndarray.searchsorted(value, side=side, sorter=sorter) # type: ignore[arg-type]
204205

205206
def _cast_pointwise_result(self, values) -> ArrayLike:
@@ -336,15 +337,6 @@ def _validate_scalar(self, fill_value):
336337
fill_value = self.dtype.na_value
337338
return fill_value
338339

339-
def searchsorted(
340-
self,
341-
value: NumpyValueArrayLike | ExtensionArray,
342-
side: Literal["left", "right"] = "left",
343-
sorter: NumpySorter | None = None,
344-
) -> npt.NDArray[np.intp] | np.intp:
345-
validate_searchsorted_value(self._ndarray.dtype, value)
346-
return super().searchsorted(value, side=side, sorter=sorter)
347-
348340
def _values_for_factorize(self) -> tuple[np.ndarray, float | None]:
349341
if self.dtype.kind in "iub":
350342
fv = None

0 commit comments

Comments
 (0)