Skip to content

Commit d589223

Browse files
committed
Support redis-py 3.0 zadd signature
Signed-off-by: Yehoshua Hershberg <yehoshua@redislabs.com>
1 parent 7c59583 commit d589223

File tree

2 files changed

+7
-19
lines changed

2 files changed

+7
-19
lines changed

mockredis/client.py

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1079,27 +1079,10 @@ def sunionstore(self, dest, keys, *args):
10791079

10801080
# SORTED SET COMMANDS #
10811081

1082-
def zadd(self, name, *args, **kwargs):
1082+
def zadd(self, name, mappings):
10831083
zset = self._get_zset(name, "ZADD", create=True)
1084-
1085-
pieces = []
1086-
1087-
# args
1088-
if len(args) % 2 != 0:
1089-
raise RedisError("ZADD requires an equal number of "
1090-
"values and scores")
1091-
for i in xrange(len(args) // 2):
1092-
# interpretation of args order depends on whether Redis
1093-
# or StrictRedis is used
1094-
score = args[2 * i + (0 if self.strict else 1)]
1095-
member = args[2 * i + (1 if self.strict else 0)]
1096-
pieces.append((member, score))
1097-
1098-
# kwargs
1099-
pieces.extend(kwargs.items())
1100-
11011084
insert_count = lambda member, score: 1 if zset.insert(self._encode(member), float(score)) else 0 # noqa
1102-
return sum((insert_count(member, score) for member, score in pieces))
1085+
return sum((insert_count(member, score) for member, score in mappings.iteritems()))
11031086

11041087
def zcard(self, name):
11051088
zset = self._get_zset(name, "ZCARD")

mockredis/script.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@ def _call(*call_args):
5555
# redis-py hmset takes key value pairs in a dictionary and not as a flat list of arguments.
5656
call_iter = iter(call_args)
5757
response = client.call(next(call_iter), next(call_iter), dict(izip(call_iter, call_iter)))
58+
elif nrm_cmd == 'zadd':
59+
score_values = call_args[2:]
60+
mappings = {score_values[index + 1]: score
61+
for index, score in enumerate(score_values) if index % 2 == 0}
62+
response = client.call('zadd', call_args[1], mappings)
5863
else:
5964
response = client.call(*call_args)
6065
return self._python_to_lua(response)

0 commit comments

Comments
 (0)