Skip to content

Commit d1d526b

Browse files
committed
ENH: searchsorted: add input validation for parameter 'side'
1 parent 55d7169 commit d1d526b

2 files changed

Lines changed: 9 additions & 0 deletions

File tree

src/array_api_extra/_delegation.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -691,6 +691,10 @@ def searchsorted(
691691
if xp is None:
692692
xp = array_namespace(x1, x2)
693693

694+
if side not in {"left", "right"}:
695+
message = "`side` must be either 'left' or 'right'."
696+
raise ValueError(message)
697+
694698
xp_default_int = _funcs.default_dtype(xp, kind="integral")
695699
y_0d = xp.asarray(x2).ndim == 0
696700
x_1d = x1.ndim <= 1

tests/test_funcs.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1769,6 +1769,11 @@ def xp_searchsorted(
17691769
@pytest.mark.skip_xp_backend(Backend.DASK, reason="no take_along_axis")
17701770
@pytest.mark.skip_xp_backend(Backend.SPARSE, reason="no searchsorted")
17711771
class TestSearchsorted:
1772+
def test_input_validation(self, xp: ModuleType):
1773+
message = "`side` must be either 'left' or 'right'."
1774+
with pytest.raises(ValueError, match=message):
1775+
_ = searchsorted(xp.asarray([1, 2]), xp.asarray([1, 2]), side="center") # type: ignore[arg-type] # pyright: ignore[reportArgumentType]
1776+
17721777
@pytest.mark.parametrize("side", ["left", "right"])
17731778
@pytest.mark.parametrize("ties", [False, True])
17741779
@pytest.mark.parametrize(

0 commit comments

Comments
 (0)