Fix --filters bug with number categorization

This commit is contained in:
Jylpah committed 2021-11-23 09:46:04 +02:00
1 parent 14ee570ee5
commit 7e39fdc442
1 file changed
+16 -6
+16 -6
View File
@@ -511,10 +511,13 @@ class BattleCategorization():
def get_filter_categories(self, filters: list) -> list:
if type(filters) != list:
filters = [ filters ]
return [ x for x in filters if x in self.get_categories() ]
try:
if type(filters) != list:
filters = [ filters ]
return [ x for x in filters if x in self.get_categories() ]
except Exception as err:
bu.error('Category: ' + str(self.category_key), exception=err)
return None
def help(self):
"""Help"""
@@ -733,7 +736,10 @@ class BattleStringCategorization(BattleCategorization):
def get_filter_categories(self, filters: list) -> list:
try:
return filters
if type(filters) != list:
filters = [ filters ]
return [ x for x in filters if x in self.get_categories() ]
# return filters
except Exception as err:
bu.error('Category: ' + str(self.category_key), exception=err)
return None
@@ -769,11 +775,14 @@ class BattleNumberCategorization(BattleCategorization):
def get_filter_categories(self, filters: list) -> list:
try:
if type(filters) != list:
filters = [ filters ]
return list(map(str,filters))
except Exception as err:
bu.error('Category: ' + str(self.category_key), exception=err)
return None
def help(self):
super().help()
print('INTEGER')
@@ -1477,7 +1486,7 @@ async def main(argv):
parser.add_argument('--replays', action='store_true', default=False, help='Export replay info in JSON format')
parser.add_argument('-o','--outfile', type=str, default='-', metavar="OUTPUT", help='File to write results. Default STDOUT')
parser.add_argument('--db', action='store_true', default=OPT_DB, help='Use DB - You are unlikely to have it')
parser.add_argument('--filters', type=str, default=None, help='Filter replays based on categories. Filters given in JSON format.\nUse array "[]" for multiple filters/values. see --mode help.\nExample: : [ {"tier" : [8,9,10] }, { "player_wins" : 5 }]')
parser.add_argument('--filters', type=str, default=None, help='Filter replays based on categories. Filters given in JSON format.\nUse array "[]" for multiple filters/values. see --mode help.\nExample: : [ {"tank_tier" : [8,9,10] }, { "player_wins" : 5 }]')
parser.add_argument('--filters_db', type=str, default=None, help='[only for DB setup] Filter replays in DB based on categories. Filters given in MongoDB JSON format. See --mode help')
parser.add_argument('--min', type=int, default=None, help='Only select replays from players with minimum number of replays in the dataset')
parser.add_argument('-d', '--debug', action='store_true', default=False, help='Debug mode')
@@ -1841,6 +1850,7 @@ def filter_results(results: list, filter_json : str) -> bool:
for category in filter_cats:
cat = category.category_key
categorization = filter_cats.get_categorization(cat)
bu.debug('Category: ' + cat + ' filters type: ' + str(type(filters)) + ' filters: ' + str(filters))
filters[cat] = categorization.get_filter_categories(filters[cat])
bu.verbose(' ' + cat + ' = ' + ','.join(filters[cat]))
bu.verbose('')