Soutien pour Enum arguments en argparse

Est-il un meilleur moyen de soutenir les Énumérations que les types de argparse arguments de ce modèle?

class SomeEnum(Enum):
    ONE = 1
    TWO = 2

parser.add_argument('some_val', type=str, default='one',
                    choices=[i.name.lower() for i in SomeEnum])
...
args.some_val = SomeEnum[args.some_val.upper()]
Il y avait une demande pour Enum sur Python bug/problèmes. Je ne me souviens pas beaucoup d'enthousiasme pour l'ajout de manutention spéciale. Choix, comme la vôtre, est une seule façon. Une autre serait une coutume type fonction. Qui pourrait à la fois de tester et de les convertir. Je soupçonne que vous êtes plus familier avec les Énumérations que je suis.
Je me demandais un instant si il serait possible de dériver une coutume Enum qui allait se comporter comme prévu lorsqu'il est réglé sur type=
Le type paramètre est une fonction/appelable. Écrivez votre propre qui prend une chaîne de caractères, et fait quelque chose avec elle. Les types les plus courants, int et float sont les fonctions standard qui ne int("123") ou float("12.3").

OriginalL'auteur Andrzej Pronobis | 2017-05-14