Bone-Market-Solver/bonemarketsolver/objects/blacklistaction.py

41 lines
1.2 KiB
Python

__all__ = ['BlacklistAction']
__author__ = "Jeremy Saklad"
import argparse
from ..data.adjustments import Adjustment
from ..data.appendages import Appendage
from ..data.buyers import Buyer
from ..data.declarations import Declaration
from ..data.embellishments import Embellishment
from ..data.skulls import Skull
from ..data.torsos import Torso
def convert_to_enum(value):
split = value.split(".", 1)
enum = globals()[split[0]]
return enum[split[1]]
class BlacklistAction(argparse.Action):
def __init__(self, **kwargs):
nargs = kwargs.get('nargs')
super(BlacklistAction, self).__init__(**kwargs)
self._nargs = nargs
def __call__(self, parser, namespace, values, option_string=None):
# Check whether this is a single value or a list of them
if self._nargs is None or self._nargs == argparse.OPTIONAL:
# Convert value back into an Enum
enum = convert_to_enum(value)
setattr(namespace, self.dest, enum)
else:
# Convert values back into Enums
enums = [convert_to_enum(value) for value in values]
items = getattr(namespace, self.dest, list()) + enums
setattr(namespace, self.dest, items)