Skip to content

Commit ccf3b28

Browse files
committed
Add support for redis-py 3+
Change ZADD calls to supply keys and values as a dict instead of positional arguments. Update tests to provide member data as string instead of dict, since redis-py 3+ only accepts data as bytes, strings or numbers. Fixes #61
1 parent ec30985 commit ccf3b28

File tree

6 files changed

+35
-39
lines changed

6 files changed

+35
-39
lines changed

leaderboard/leaderboard.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,9 @@ def rank_member_in(
136136
'''
137137
pipeline = self.redis_connection.pipeline()
138138
if isinstance(self.redis_connection, Redis):
139-
pipeline.zadd(leaderboard_name, member, score)
139+
pipeline.zadd(leaderboard_name, {member: score})
140140
else:
141-
pipeline.zadd(leaderboard_name, score, member)
141+
pipeline.zadd(leaderboard_name, {score: member})
142142
if member_data:
143143
pipeline.hset(
144144
self._member_data_key(leaderboard_name),
@@ -159,9 +159,9 @@ def rank_member_across(
159159
pipeline = self.redis_connection.pipeline()
160160
for leaderboard_name in leaderboards:
161161
if isinstance(self.redis_connection, Redis):
162-
pipeline.zadd(leaderboard_name, member, score)
162+
pipeline.zadd(leaderboard_name, {member: score})
163163
else:
164-
pipeline.zadd(leaderboard_name, score, member)
164+
pipeline.zadd(leaderboard_name, {score: member})
165165
if member_data:
166166
pipeline.hset(
167167
self._member_data_key(leaderboard_name),
@@ -241,9 +241,9 @@ def rank_members_in(self, leaderboard_name, members_and_scores):
241241
pipeline = self.redis_connection.pipeline()
242242
for member, score in grouper(2, members_and_scores):
243243
if isinstance(self.redis_connection, Redis):
244-
pipeline.zadd(leaderboard_name, member, score)
244+
pipeline.zadd(leaderboard_name, {member: score})
245245
else:
246-
pipeline.zadd(leaderboard_name, score, member)
246+
pipeline.zadd(leaderboard_name, {score: member})
247247
pipeline.execute()
248248

249249
def member_data_for(self, member):
@@ -546,7 +546,7 @@ def change_score_for_member_in(self, leaderboard_name, member, delta, member_dat
546546
@param member_data [String] Optional member data.
547547
'''
548548
pipeline = self.redis_connection.pipeline()
549-
pipeline.zincrby(leaderboard_name, member, delta)
549+
pipeline.zincrby(leaderboard_name, delta, member)
550550
if member_data:
551551
pipeline.hset(
552552
self._member_data_key(leaderboard_name),

leaderboard/tie_ranking_leaderboard.py

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,11 @@ def change_score_for_member_in(self, leaderboard_name, member, delta, member_dat
6060

6161
pipeline = self.redis_connection.pipeline()
6262
if isinstance(self.redis_connection, Redis):
63-
pipeline.zadd(leaderboard_name, member, new_score)
64-
pipeline.zadd(self._ties_leaderboard_key(leaderboard_name), str(float(new_score)), new_score)
63+
pipeline.zadd(leaderboard_name, {member: new_score})
64+
pipeline.zadd(self._ties_leaderboard_key(leaderboard_name), {str(float(new_score)): new_score})
6565
else:
66-
pipeline.zadd(leaderboard_name, new_score, member)
67-
pipeline.zadd(self._ties_leaderboard_key(leaderboard_name), new_score, str(float(new_score)))
66+
pipeline.zadd(leaderboard_name, {new_score: member})
67+
pipeline.zadd(self._ties_leaderboard_key(leaderboard_name), {new_score: str(float(new_score))})
6868
if member_data:
6969
pipeline.hset(
7070
self._member_data_key(leaderboard_name),
@@ -92,16 +92,13 @@ def rank_member_in(
9292

9393
pipeline = self.redis_connection.pipeline()
9494
if isinstance(self.redis_connection, Redis):
95-
pipeline.zadd(leaderboard_name, member, score)
96-
pipeline.zadd(self._ties_leaderboard_key(leaderboard_name),
97-
str(float(score)), score)
95+
pipeline.zadd(leaderboard_name, {member: score})
96+
pipeline.zadd(self._ties_leaderboard_key(leaderboard_name), {str(float(score)): score})
9897
else:
99-
pipeline.zadd(leaderboard_name, score, member)
100-
pipeline.zadd(self._ties_leaderboard_key(leaderboard_name),
101-
score, str(float(score)))
98+
pipeline.zadd(leaderboard_name, {score: member})
99+
pipeline.zadd(self._ties_leaderboard_key(leaderboard_name), {score: str(float(score))})
102100
if can_delete_score:
103-
pipeline.zrem(self._ties_leaderboard_key(leaderboard_name),
104-
str(float(member_score)))
101+
pipeline.zrem(self._ties_leaderboard_key(leaderboard_name), str(float(member_score)))
105102
if member_data:
106103
pipeline.hset(
107104
self._member_data_key(leaderboard_name),
@@ -119,7 +116,7 @@ def rank_member_across(
119116
@param score [float] Member score.
120117
@param member_data [String] Optional member data.
121118
'''
122-
for leaderboard_name in leaderboards:
119+
for leaderboard in leaderboards:
123120
self.rank_member_in(leaderboard, member, score, member_data)
124121

125122
def rank_members_in(self, leaderboard_name, members_and_scores):

test/leaderboard/competition_ranking_leaderboard_test.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ def test_allow_you_to_include_or_exclude_missing_members_using_the_include_missi
155155
def __rank_members_in_leaderboard(self, members_to_add=6):
156156
for index in range(1, members_to_add):
157157
self.leaderboard.rank_member(
158-
'member_%s' %
159-
index, index, {
160-
'member_name': 'Leaderboard member %s' %
161-
index})
158+
'member_%s' % index,
159+
index,
160+
str({'member_name': 'Leaderboard member %s' % index})
161+
)

test/leaderboard/leaderboard_test.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,7 @@ def test_members_data_for(self):
7070
def test_update_member_data(self):
7171
self.__rank_members_in_leaderboard()
7272
self.leaderboard.update_member_data(
73-
'member_1', {
74-
'member_name': 'Updated Leaderboard member 1'})
73+
'member_1', str({'member_name': 'Updated Leaderboard member 1'}))
7574
self.leaderboard.member_data_for('member_1').should.eql(
7675
str({'member_name': 'Updated Leaderboard member 1'}))
7776

@@ -498,7 +497,7 @@ def test_rank_members(self):
498497

499498
def test_rank_member_across(self):
500499
self.leaderboard.rank_member_across(
501-
['highscores', 'more_highscores'], 'david', 50000, {'member_name': 'david'})
500+
['highscores', 'more_highscores'], 'david', 50000, str({'member_name': 'david'}))
502501
len(self.leaderboard.leaders_in('highscores', 1)).should.equal(1)
503502
len(self.leaderboard.leaders_in('more_highscores', 1)).should.equal(1)
504503

@@ -692,7 +691,7 @@ def test_ranked_in_list_with_include_missing_sort_by_score_and_negative_and_zero
692691
def __rank_members_in_leaderboard(self, members_to_add=6):
693692
for index in range(1, members_to_add):
694693
self.leaderboard.rank_member(
695-
'member_%s' %
696-
index, index, {
697-
'member_name': 'Leaderboard member %s' %
698-
index})
694+
'member_%s' % index,
695+
index,
696+
str({'member_name': 'Leaderboard member %s' % index})
697+
)

test/leaderboard/reverse_tie_ranking_leaderboard_test.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ def test_it_should_output_the_correct_rank_when_initial_score_is_0_and_then_late
188188
def __rank_members_in_leaderboard(self, members_to_add=6):
189189
for index in range(1, members_to_add):
190190
self.leaderboard.rank_member(
191-
'member_%s' %
192-
index, index, {
193-
'member_name': 'Leaderboard member %s' %
194-
index})
191+
'member_%s' % index,
192+
index,
193+
str({'member_name': 'Leaderboard member %s' % index})
194+
)

test/leaderboard/tie_ranking_leaderboard_test.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ def test_it_should_correctly_pop_ties_namespace_from_options(self):
237237
def __rank_members_in_leaderboard(self, members_to_add=6):
238238
for index in range(1, members_to_add):
239239
self.leaderboard.rank_member(
240-
'member_%s' %
241-
index, index, {
242-
'member_name': 'Leaderboard member %s' %
243-
index})
240+
'member_%s' % index,
241+
index,
242+
str({'member_name': 'Leaderboard member %s' % index})
243+
)

0 commit comments

Comments
 (0)