I need to configure a script with a command line switch and/or environment variable (-> string) to a list of enums in order to define a selection of already existing enums. I found the following to work:
from enum import Enum
class Provider(Enum):
NONE = 0, ''
Amazon = 40, 'Amazon'
Netflix = 42, 'Netflix'
SkyTicket = 104, 'Sky Ticket'
AmazonChannels = 140, 'Amazon Channels'
Disney = 176, 'Disney+'
def __new__(cls, value, name):
member = object.__new__(cls)
member._value_ = value
member.fullname = name
return member
def __int__(self):
return self.value
def __str__(self):
return self.fullname
providers = []
#input from cli option
test = "Amazon, Disney"
#create [Provider.Amazon, Provider.Disney]
for t in test.split(','):
providers.append(Provider[t.strip()])
print(providers)
#[<Provider.Amazon: 40>, <Provider.Disney: 176>]
I would prefer a more direct input string like "Provider.Amazon, Provider.Netfilx" Any idea?
Or even a better way from cli option (argparse) to enum list?