Skip to content

Commit b546a9a

Browse files
authored
update json().arrindex() default values (#2611)
* update json().arrindex() default values * add unit test * fix falsy checks * more unit tests * add asyncio tests * fix lint line length --------- Co-authored-by: Alex Schmitz <[email protected]>
1 parent 6c708c2 commit b546a9a

File tree

3 files changed

+23
-8
lines changed

3 files changed

+23
-8
lines changed

redis/commands/json/commands.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ def arrindex(
3131
name: str,
3232
path: str,
3333
scalar: int,
34-
start: Optional[int] = 0,
35-
stop: Optional[int] = -1,
34+
start: Optional[int] = None,
35+
stop: Optional[int] = None,
3636
) -> List[Union[int, None]]:
3737
"""
3838
Return the index of ``scalar`` in the JSON array under ``path`` at key
@@ -43,9 +43,13 @@ def arrindex(
4343
4444
For more information see `JSON.ARRINDEX <https://redis.io/commands/json.arrindex>`_.
4545
""" # noqa
46-
return self.execute_command(
47-
"JSON.ARRINDEX", name, str(path), self._encode(scalar), start, stop
48-
)
46+
pieces = [name, str(path), self._encode(scalar)]
47+
if start is not None:
48+
pieces.append(start)
49+
if stop is not None:
50+
pieces.append(stop)
51+
52+
return self.execute_command("JSON.ARRINDEX", *pieces)
4953

5054
def arrinsert(
5155
self, name: str, path: str, index: int, *args: List[JsonType]

tests/test_asyncio/test_json.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,15 @@ async def test_arrappend(modclient: redis.Redis):
145145

146146
@pytest.mark.redismod
147147
async def test_arrindex(modclient: redis.Redis):
148-
await modclient.json().set("arr", Path.root_path(), [0, 1, 2, 3, 4])
149-
assert 1 == await modclient.json().arrindex("arr", Path.root_path(), 1)
150-
assert -1 == await modclient.json().arrindex("arr", Path.root_path(), 1, 2)
148+
r_path = Path.root_path()
149+
await modclient.json().set("arr", r_path, [0, 1, 2, 3, 4])
150+
assert 1 == await modclient.json().arrindex("arr", r_path, 1)
151+
assert -1 == await modclient.json().arrindex("arr", r_path, 1, 2)
152+
assert 4 == await modclient.json().arrindex("arr", r_path, 4)
153+
assert 4 == await modclient.json().arrindex("arr", r_path, 4, start=0)
154+
assert 4 == await modclient.json().arrindex("arr", r_path, 4, start=0, stop=5000)
155+
assert -1 == await modclient.json().arrindex("arr", r_path, 4, start=0, stop=-1)
156+
assert -1 == await modclient.json().arrindex("arr", r_path, 4, start=1, stop=3)
151157

152158

153159
@pytest.mark.redismod

tests/test_json.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,11 @@ def test_arrindex(client):
166166
client.json().set("arr", Path.root_path(), [0, 1, 2, 3, 4])
167167
assert 1 == client.json().arrindex("arr", Path.root_path(), 1)
168168
assert -1 == client.json().arrindex("arr", Path.root_path(), 1, 2)
169+
assert 4 == client.json().arrindex("arr", Path.root_path(), 4)
170+
assert 4 == client.json().arrindex("arr", Path.root_path(), 4, start=0)
171+
assert 4 == client.json().arrindex("arr", Path.root_path(), 4, start=0, stop=5000)
172+
assert -1 == client.json().arrindex("arr", Path.root_path(), 4, start=0, stop=-1)
173+
assert -1 == client.json().arrindex("arr", Path.root_path(), 4, start=1, stop=3)
169174

170175

171176
@pytest.mark.redismod

0 commit comments

Comments
 (0)