Skip to content

Commit

Permalink
Cast members to strings where appropriate
Browse files Browse the repository at this point in the history
Version 1.1.2
  • Loading branch information
awestendorf committed Jul 28, 2011
1 parent 356b9eb commit 7dece8e
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 15 deletions.
2 changes: 1 addition & 1 deletion README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
Leaderboard: redis backed leaderboard library
=================================

:Version: 1.1.1
:Version: 1.1.2
:Download: http://pypi.python.org/pypi/leaderboard
:Source: https://github.com/agoragames/python-leaderboard
:Keywords: python, redis, leaderboard
Expand Down
30 changes: 17 additions & 13 deletions leaderboard/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from math import ceil

class Leaderboard(object):
VERSION = '1.1.1'
VERSION = '1.1.2'
DEFAULT_PAGE_SIZE = 25
DEFAULT_REDIS_HOST = 'localhost'
DEFAULT_REDIS_PORT = 6379
Expand Down Expand Up @@ -55,10 +55,10 @@ def __init__(self, leaderboard_name, **options):

def rank_member(self, member, score):
# redis-py deprecated the non-kwarg form of zadd
return self.redis_connection.zadd(self.leaderboard_name, **{member:score})
return self.redis_connection.zadd(self.leaderboard_name, **{str(member):score})

def remove_member(self, member):
return self.redis_connection.zrem(self.leaderboard_name, member)
return self.redis_connection.zrem(self.leaderboard_name, str(member))

def clear(self):
'''Remove all rankings for this leaderboard.'''
Expand All @@ -74,23 +74,26 @@ def total_members_in_score_range(self, min_score, max_score):
return self.redis_connection.zcount(self.leaderboard_name, min_score, max_score)

def change_score_for(self, member, delta):
return self.redis_connection.zincrby(self.leaderboard_name, member, delta)
return self.redis_connection.zincrby(self.leaderboard_name, str(member), delta)

def rank_for(self, member, use_zero_index_for_rank = False):
if use_zero_index_for_rank:
return self.redis_connection.zrevrank(self.leaderboard_name, member)
else:
try: return self.redis_connection.zrevrank(self.leaderboard_name, member) + 1
except: return None
try:
return self.redis_connection.zrevrank(self.leaderboard_name, str(member))\
+ (0 if use_zero_index_for_rank else 1)
except: return None

def score_for(self, member):
return self.redis_connection.zscore(self.leaderboard_name, member)
return self.redis_connection.zscore(self.leaderboard_name, str(member))

def check_member(self, member):
return not None == self.redis_connection.zscore(self.leaderboard_name, member)
return not None == self.redis_connection.zscore(self.leaderboard_name, str(member))

def score_and_rank_for(self, member, use_zero_index_for_rank = False):
return {'member' : member, 'score' : self.score_for(member), 'rank' : self.rank_for(member, use_zero_index_for_rank)}
return {
'member' : member,
'score' : self.score_for(member),
'rank' : self.rank_for(member, use_zero_index_for_rank)
}

def remove_members_in_score_range(self, min_score, max_score):
return self.redis_connection.zremrangebyscore(self.leaderboard_name, min_score, max_score)
Expand Down Expand Up @@ -120,7 +123,8 @@ def leaders(self, current_page, with_scores = True, with_rank = True, use_zero_i
return None

def around_me(self, member, with_scores = True, with_rank = True, use_zero_index_for_rank = False, **options):
reverse_rank_for_member = self.redis_connection.zrevrank(self.leaderboard_name, member)
reverse_rank_for_member = \
self.redis_connection.zrevrank(self.leaderboard_name, str(member))

page_size = options.get('page_size',self.page_size)
starting_offset = reverse_rank_for_member - (page_size / 2)
Expand Down
2 changes: 1 addition & 1 deletion tests/leaderboard_test_case.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ def tearDown(self):
self.leaderboard.redis_connection.flushdb()

def test_version(self):
self.assertEquals('1.1.1', self.leaderboard.VERSION)
self.assertEquals('1.1.2', self.leaderboard.VERSION)

def test_init_with_defaults(self):
self.assertEquals('name', self.leaderboard.leaderboard_name)
Expand Down

0 comments on commit 7dece8e

Please sign in to comment.