Bug fixes. RC 1

This commit is contained in:
Jylpah committed 2020-11-03 10:27:20 +02:00
1 parent 8cceb7d31b
commit 495d8b650a
1 file changed
+31 -22
+31 -22
View File
@@ -133,9 +133,9 @@ class BattleCategorizationList():
'player_name' : [ 'Player', 'string' ], 'player_name' : [ 'Player', 'string' ],
'protagonist' : [ 'account_id', 'number' ], 'protagonist' : [ 'account_id', 'number' ],
'battle_i' : [ 'Battle #', 'number' ], 'battle_i' : [ 'Battle #', 'number' ],
'player_wins' : [ 'Player WR', 'bucket', [ 0, .35, .45, .50, .55, .65], '%'], 'player_wins' : [ 'Player WR', 'bucket', [ 0, .35, .45, .50, .55, .65], '%' ],
'player_battles' : [ 'Player Battles', 'bucket', [ 0, 500, 1000, 2500, 5e3, 10e3, 15e3, 25e3]], 'player_battles' : [ 'Player Battles', 'bucket', [ 0, 500, 1000, 2500, 5e3, 10e3, 15e3, 25e3], 'int' ],
'player_damage_dealt' : [ 'Player Avg Dmg', 'bucket', [ 0, 500, 1000, 1250, 1500, 1750, 2000, 2500]] 'player_damage_dealt' : [ 'Player Avg Dmg', 'bucket', [ 0, 500, 1000, 1250, 1500, 1750, 2000, 2500], 'int' ]
} }
_categorizations_default = [ _categorizations_default = [
@@ -503,11 +503,13 @@ class BattleBucketCategorization(BattleCategorization):
"""Class for categorization by buckets based on value""" """Class for categorization by buckets based on value"""
def __init__(self, cat_key : str, title: str, breaks: list, bucket_format = ''): def __init__(self, cat_key : str, title: str, breaks: list, bucket_format = ''):
super().__init__(cat_key, title) try:
self.breaks = breaks super().__init__(cat_key, title)
self.bucket_format = bucket_format self.breaks = breaks
self.category_labels = self.mk_category_labels(breaks, bucket_format) self.bucket_format = bucket_format
self.category_labels = self.mk_category_labels(breaks, bucket_format)
except Exception as err:
bu.error('BattleBucketCategorization()', exception=err)
def get_category(self, result: dict) -> str: def get_category(self, result: dict) -> str:
"""Get category""" """Get category"""
@@ -516,9 +518,9 @@ class BattleBucketCategorization(BattleCategorization):
cat_id = self.find_bucket(result[self.category_key], self.breaks) cat_id = self.find_bucket(result[self.category_key], self.breaks)
return self.category_labels[cat_id] return self.category_labels[cat_id]
except KeyError as err: except KeyError as err:
bu.error('Category: ' + str(self.category_key) + 'cat ID: ' + str(cat_id), exception=err) bu.error('Category: ' + str(self.category_key) + ' cat ID: ' + str(cat_id), exception=err)
except Exception as err: except Exception as err:
bu.error('Category: ' + str(self.category_key) + 'cat ID: ' + str(cat_id), exception=err) bu.error('Category: ' + str(self.category_key) + ' cat ID: ' + str(cat_id), exception=err)
return None return None
@@ -538,20 +540,28 @@ class BattleBucketCategorization(BattleCategorization):
def find_bucket(self, value, bucket_breaks: list): def find_bucket(self, value, bucket_breaks: list):
"""Find bucket for value""" """Find bucket for value"""
max = len(bucket_breaks) try:
if max <= 1: max = len(bucket_breaks)
return 0 if max <= 1:
ndx = int(max//2) return 0
if value > bucket_breaks[ndx]: ndx = int(max//2)
return ndx + self.find_bucket(value, bucket_breaks[ndx:]) if value > bucket_breaks[ndx]:
elif value < bucket_breaks[ndx]: return ndx + self.find_bucket(value, bucket_breaks[ndx:])
return self.find_bucket(value, bucket_breaks[:ndx]) elif value < bucket_breaks[ndx]:
else: return self.find_bucket(value, bucket_breaks[:ndx])
return ndx else:
return ndx
except KeyError as err:
bu.error('Key not found ndx=' + str(ndx) + ', value=' + str(value), exception = err)
except Exception as err:
bu.error('ndx=' + str(ndx) + ', value=' + str(value), exception = err)
return None
def mk_category_labels(self, bucket_breaks: list, bucket_format: str) -> list: def mk_category_labels(self, bucket_breaks: list, bucket_format: str) -> list:
try: try:
# add open-ended last category. list.append() modifies by reference self.breaks (not OK)!!
bucket_breaks = bucket_breaks + [ None ]
multiplier = 1 multiplier = 1
prefix = '' prefix = ''
if bucket_format == '%': if bucket_format == '%':
@@ -564,7 +574,6 @@ class BattleBucketCategorization(BattleCategorization):
frmt = '{:.0f}' frmt = '{:.0f}'
else: else:
frmt = '{:.0f}' frmt = '{:.0f}'
labels = list() labels = list()
for ndx in range(0,len(bucket_breaks) - 1): for ndx in range(0,len(bucket_breaks) - 1):
low = bucket_breaks[ndx] low = bucket_breaks[ndx]
@@ -582,7 +591,7 @@ class BattleBucketCategorization(BattleCategorization):
label = label + frmt.format(high*multiplier) label = label + frmt.format(high*multiplier)
label = label + prefix label = label + prefix
labels.append(labels) labels.append(label)
return labels return labels
except KeyError as err: except KeyError as err: