Use an enum for methods' usability

This commit is contained in:
Lonami Exo 2018-12-03 15:56:38 +01:00
parent 4901447ad6
commit e4cfd964d5

View File

@ -1,11 +1,28 @@
import csv import csv
import enum
class Usability(enum.Enum):
UNKNOWN = 0
USER = 1
BOT = 2
BOTH = 4
class MethodInfo: class MethodInfo:
def __init__(self, name, usability, errors): def __init__(self, name, usability, errors):
self.name = name self.name = name
self.usability = usability
self.errors = errors self.errors = errors
try:
self.usability = {
'unknown': Usability.UNKNOWN,
'user': Usability.USER,
'bot': Usability.BOT,
'both': Usability.BOTH,
}[usability.lower()]
except KeyError:
raise ValueError('Usability must be either user, bot, both or '
'unknown, not {}'.format(usability)) from None
def parse_methods(csv_file, errors_dict): def parse_methods(csv_file, errors_dict):
@ -17,9 +34,6 @@ def parse_methods(csv_file, errors_dict):
f = csv.reader(f) f = csv.reader(f)
next(f, None) # header next(f, None) # header
for line, (method, usability, errors) in enumerate(f, start=2): for line, (method, usability, errors) in enumerate(f, start=2):
if usability not in ('user', 'bot', 'both', 'unknown'):
raise ValueError('Usability must be either user, bot, '
'both or unknown, not {}'.format(usability))
try: try:
errors = [errors_dict[x] for x in errors.split()] errors = [errors_dict[x] for x in errors.split()]
except KeyError: except KeyError: