From 39814846b765b1bba33cd7520b6462a9816c9d4a Mon Sep 17 00:00:00 2001 From: Avital Fine <79420960+AvitalFineRedis@users.noreply.github.com> Date: Tue, 19 Oct 2021 12:04:46 +0200 Subject: Add support to consumername in `xpending_range` (#1602) --- redis/commands.py | 14 ++++++++++---- tests/test_commands.py | 8 ++++++++ 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/redis/commands.py b/redis/commands.py index 62c082d..44a7735 100644 --- a/redis/commands.py +++ b/redis/commands.py @@ -2065,18 +2065,21 @@ class Commands: """ return self.execute_command('XPENDING', name, groupname) - def xpending_range(self, name, groupname, min, max, count, - consumername=None, idle=None): + def xpending_range(self, name, groupname, idle=None, + min=None, max=None, count=None, + consumername=None): """ Returns information about pending messages, in a range. + name: name of the stream. groupname: name of the consumer group. + idle: available from version 6.2. filter entries by their + idle-time, given in milliseconds (optional). min: minimum stream ID. max: maximum stream ID. count: number of messages to return consumername: name of a consumer to filter by (optional). - idle: available from version 6.2. filter entries by their - idle-time, given in milliseconds (optional). + """ if {min, max, count} == {None}: if idle is not None or consumername is not None: @@ -2103,6 +2106,9 @@ class Commands: pieces.extend([min, max, count]) except TypeError: pass + # consumername + if consumername: + pieces.append(consumername) return self.execute_command('XPENDING', *pieces, parse_detail=True) diff --git a/tests/test_commands.py b/tests/test_commands.py index a7a3ce4..b7fa6bf 100644 --- a/tests/test_commands.py +++ b/tests/test_commands.py @@ -3217,6 +3217,14 @@ class TestRedisCommands: assert response[1]['message_id'] == m2 assert response[1]['consumer'] == consumer2.encode() + # test with consumer name + response = r.xpending_range(stream, group, + min='-', max='+', count=5, + consumername=consumer1) + assert len(response) == 1 + assert response[0]['message_id'] == m1 + assert response[0]['consumer'] == consumer1.encode() + @skip_if_server_version_lt('6.2.0') def test_xpending_range_idle(self, r): stream = 'stream' -- cgit v1.2.1