diff --git a/README.md b/README.md index 8e2f1f1..a57c4a5 100644 --- a/README.md +++ b/README.md @@ -194,7 +194,7 @@ highscore_lb.score_for('david') ### Ranking a member across multiple leaderboards ```python -highscore_lb.rank_member_across(['highscores', 'more_highscores'], 'david', 50000, { 'member_name': 'david' }) +highscore_lb.rank_member_across(['highscores', 'more_highscores'], 'david', 50000, str({'member_name': 'david'})) ``` ### Alternate leaderboard types diff --git a/leaderboard/leaderboard.py b/leaderboard/leaderboard.py index 6ff042f..76f2557 100644 --- a/leaderboard/leaderboard.py +++ b/leaderboard/leaderboard.py @@ -136,9 +136,9 @@ def rank_member_in( ''' pipeline = self.redis_connection.pipeline() if isinstance(self.redis_connection, Redis): - pipeline.zadd(leaderboard_name, member, score) + pipeline.zadd(leaderboard_name, {member: score}) else: - pipeline.zadd(leaderboard_name, score, member) + pipeline.zadd(leaderboard_name, {score: member}) if member_data: pipeline.hset( self._member_data_key(leaderboard_name), @@ -159,9 +159,9 @@ def rank_member_across( pipeline = self.redis_connection.pipeline() for leaderboard_name in leaderboards: if isinstance(self.redis_connection, Redis): - pipeline.zadd(leaderboard_name, member, score) + pipeline.zadd(leaderboard_name, {member: score}) else: - pipeline.zadd(leaderboard_name, score, member) + pipeline.zadd(leaderboard_name, {score: member}) if member_data: pipeline.hset( self._member_data_key(leaderboard_name), @@ -241,9 +241,9 @@ def rank_members_in(self, leaderboard_name, members_and_scores): pipeline = self.redis_connection.pipeline() for member, score in grouper(2, members_and_scores): if isinstance(self.redis_connection, Redis): - pipeline.zadd(leaderboard_name, member, score) + pipeline.zadd(leaderboard_name, {member: score}) else: - pipeline.zadd(leaderboard_name, score, member) + pipeline.zadd(leaderboard_name, {score: member}) pipeline.execute() def member_data_for(self, member): @@ -546,7 +546,7 @@ def change_score_for_member_in(self, leaderboard_name, member, delta, member_dat @param member_data [String] Optional member data. ''' pipeline = self.redis_connection.pipeline() - pipeline.zincrby(leaderboard_name, member, delta) + pipeline.zincrby(leaderboard_name, delta, member) if member_data: pipeline.hset( self._member_data_key(leaderboard_name), diff --git a/leaderboard/tie_ranking_leaderboard.py b/leaderboard/tie_ranking_leaderboard.py index 97205e1..7a84629 100644 --- a/leaderboard/tie_ranking_leaderboard.py +++ b/leaderboard/tie_ranking_leaderboard.py @@ -60,11 +60,11 @@ def change_score_for_member_in(self, leaderboard_name, member, delta, member_dat pipeline = self.redis_connection.pipeline() if isinstance(self.redis_connection, Redis): - pipeline.zadd(leaderboard_name, member, new_score) - pipeline.zadd(self._ties_leaderboard_key(leaderboard_name), str(float(new_score)), new_score) + pipeline.zadd(leaderboard_name, {member: new_score}) + pipeline.zadd(self._ties_leaderboard_key(leaderboard_name), {str(float(new_score)): new_score}) else: - pipeline.zadd(leaderboard_name, new_score, member) - pipeline.zadd(self._ties_leaderboard_key(leaderboard_name), new_score, str(float(new_score))) + pipeline.zadd(leaderboard_name, {new_score: member}) + pipeline.zadd(self._ties_leaderboard_key(leaderboard_name), {new_score: str(float(new_score))}) if member_data: pipeline.hset( self._member_data_key(leaderboard_name), @@ -92,16 +92,13 @@ def rank_member_in( pipeline = self.redis_connection.pipeline() if isinstance(self.redis_connection, Redis): - pipeline.zadd(leaderboard_name, member, score) - pipeline.zadd(self._ties_leaderboard_key(leaderboard_name), - str(float(score)), score) + pipeline.zadd(leaderboard_name, {member: score}) + pipeline.zadd(self._ties_leaderboard_key(leaderboard_name), {str(float(score)): score}) else: - pipeline.zadd(leaderboard_name, score, member) - pipeline.zadd(self._ties_leaderboard_key(leaderboard_name), - score, str(float(score))) + pipeline.zadd(leaderboard_name, {score: member}) + pipeline.zadd(self._ties_leaderboard_key(leaderboard_name), {score: str(float(score))}) if can_delete_score: - pipeline.zrem(self._ties_leaderboard_key(leaderboard_name), - str(float(member_score))) + pipeline.zrem(self._ties_leaderboard_key(leaderboard_name), str(float(member_score))) if member_data: pipeline.hset( self._member_data_key(leaderboard_name), diff --git a/test/leaderboard/competition_ranking_leaderboard_test.py b/test/leaderboard/competition_ranking_leaderboard_test.py index 9292912..299f662 100644 --- a/test/leaderboard/competition_ranking_leaderboard_test.py +++ b/test/leaderboard/competition_ranking_leaderboard_test.py @@ -153,7 +153,7 @@ def test_allow_you_to_include_or_exclude_missing_members_using_the_include_missi def __rank_members_in_leaderboard(self, members_to_add=6): for index in range(1, members_to_add): self.leaderboard.rank_member( - 'member_%s' % - index, index, { - 'member_name': 'Leaderboard member %s' % - index}) + 'member_%s' % index, + index, + str({'member_name': 'Leaderboard member %s' % index}) + ) diff --git a/test/leaderboard/leaderboard_test.py b/test/leaderboard/leaderboard_test.py index 81d6829..6fce52b 100644 --- a/test/leaderboard/leaderboard_test.py +++ b/test/leaderboard/leaderboard_test.py @@ -70,8 +70,7 @@ def test_members_data_for(self): def test_update_member_data(self): self.__rank_members_in_leaderboard() self.leaderboard.update_member_data( - 'member_1', { - 'member_name': 'Updated Leaderboard member 1'}) + 'member_1', str({'member_name': 'Updated Leaderboard member 1'})) self.leaderboard.member_data_for('member_1').should.eql( str({'member_name': 'Updated Leaderboard member 1'})) @@ -498,7 +497,7 @@ def test_rank_members(self): def test_rank_member_across(self): self.leaderboard.rank_member_across( - ['highscores', 'more_highscores'], 'david', 50000, {'member_name': 'david'}) + ['highscores', 'more_highscores'], 'david', 50000, str({'member_name': 'david'})) len(self.leaderboard.leaders_in('highscores', 1)).should.equal(1) len(self.leaderboard.leaders_in('more_highscores', 1)).should.equal(1) @@ -692,7 +691,7 @@ def test_ranked_in_list_with_include_missing_sort_by_score_and_negative_and_zero def __rank_members_in_leaderboard(self, members_to_add=6): for index in range(1, members_to_add): self.leaderboard.rank_member( - 'member_%s' % - index, index, { - 'member_name': 'Leaderboard member %s' % - index}) + 'member_%s' % index, + index, + str({'member_name': 'Leaderboard member %s' % index}) + ) diff --git a/test/leaderboard/reverse_tie_ranking_leaderboard_test.py b/test/leaderboard/reverse_tie_ranking_leaderboard_test.py index de24ef0..7ce3497 100644 --- a/test/leaderboard/reverse_tie_ranking_leaderboard_test.py +++ b/test/leaderboard/reverse_tie_ranking_leaderboard_test.py @@ -187,7 +187,7 @@ def test_it_should_output_the_correct_rank_when_initial_score_is_0_and_then_late def __rank_members_in_leaderboard(self, members_to_add=6): for index in range(1, members_to_add): self.leaderboard.rank_member( - 'member_%s' % - index, index, { - 'member_name': 'Leaderboard member %s' % - index}) + 'member_%s' % index, + index, + str({'member_name': 'Leaderboard member %s' % index}) + ) diff --git a/test/leaderboard/tie_ranking_leaderboard_test.py b/test/leaderboard/tie_ranking_leaderboard_test.py index 9f5b1ad..b19ac60 100644 --- a/test/leaderboard/tie_ranking_leaderboard_test.py +++ b/test/leaderboard/tie_ranking_leaderboard_test.py @@ -242,7 +242,7 @@ def test_it_should_correctly_pop_ties_namespace_from_options(self): def __rank_members_in_leaderboard(self, members_to_add=6): for index in range(1, members_to_add): self.leaderboard.rank_member( - 'member_%s' % - index, index, { - 'member_name': 'Leaderboard member %s' % - index}) + 'member_%s' % index, + index, + str({'member_name': 'Leaderboard member %s' % index}) + )