Changeset - 068be3e00177
[Not reviewed]
default
0 1 0
Laman - 3 years ago 2021-10-20 11:38:18

ranks tracked by the RankTracker
1 file changed with 12 insertions and 14 deletions:
0 comments (0 inline, 0 general)
rank_progress.py
Show inline comments
 
@@ -11,14 +11,12 @@ class Record:
 
		self.pin = int(tokens[0])
 
		self.country_code = tokens[2]
 
		self.rating_before = int(tokens[8])
 
		self.rounded_before = round_rating(self.rating_before)
 
		self.rating_after = int(tokens[9])
 
		self.rounded_after = round_rating(self.rating_after)
 

	
 
		tournament_code = tokens[5]
 
		self.date = datetime.strptime(tournament_code[1:7], "%y%m%d")
 

	
 
		self.rank_change = (rating_to_rank(self.rating_before), rating_to_rank(self.rating_after))
 
		self.rank_change = ("", "")
 

	
 
	@classmethod
 
	def parse(cls, line):
 
@@ -43,6 +41,10 @@ class RankTracker:
 
	def rank(self):
 
		return rating_to_rank(self._rounded_rating)
 

	
 
	@property
 
	def rounded_rating(self):
 
		return self._rounded_rating
 

	
 
	def update(self, rating):
 
		assert rating >= -900
 
		rounded_rating = round_rating(rating)
 
@@ -101,23 +103,19 @@ if __name__ == "__main__":
 

	
 
	for (pin, recs) in player_records:
 
		tourneys = list(recs)
 
		rounded_rating = tourneys[0].rounded_before
 

	
 
		tracker = RankTracker(tourneys[0].rating_before)
 
		steps = []
 

	
 
		for r in tourneys:
 
			# omit reset ratings
 
			if rounded_rating != r.rounded_before:
 
				rounded_rating = r.rounded_before
 
			if tracker.rounded_rating != round_rating(r.rating_before):
 
				tracker = RankTracker(r.rating_before)
 

	
 
			if r.rating_after-rounded_rating >= 50 or \
 
					(rounded_rating-r.rating_after > 100 and rounded_rating >= 1600):
 
			old_rank = tracker.rank
 
			new_rank = tracker.update(r.rating_after)
 
			if new_rank is not False:
 
				r.rank_change = (old_rank, new_rank)
 
				steps.append(r)
 
				rounded_rating = r.rounded_after
 
			elif rounded_rating-r.rating_after > 150:
 

	
 
				steps.append(r)
 
				rounded_rating = r.rounded_after + 100
 

	
 
		steps = [r for r in steps if since <= r.date <= to]
 
		if steps:
0 comments (0 inline, 0 general)