From: Vincent Férotin Date: Sat, 20 Jun 2020 12:55:05 +0000 (+0200) Subject: bpo-41024: doc: Explicitly mention use of 'enum.Enum' as a valid container for '... X-Git-Tag: v3.10.0a1~576 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=344c2a75c1c13de781962a3f80552e66a4c89024;p=thirdparty%2FPython%2Fcpython.git bpo-41024: doc: Explicitly mention use of 'enum.Enum' as a valid container for '… (GH-20964) …choices' argument of 'argparse.ArgumentParser.add_argument'. Here's a short first proposal of doc. enhancement addressing [bpo-41024](). Automerge-Triggered-By: @csabella --- diff --git a/Doc/library/argparse.rst b/Doc/library/argparse.rst index 5e0096cae73a..0b64dfe47f76 100644 --- a/Doc/library/argparse.rst +++ b/Doc/library/argparse.rst @@ -1133,6 +1133,20 @@ container should match the type_ specified:: Any container can be passed as the *choices* value, so :class:`list` objects, :class:`set` objects, and custom containers are all supported. +This includes :class:`enum.Enum`, which could be used to restrain +argument's choices; if we reuse previous rock/paper/scissors game example, +this could be as follows:: + + >>> from enum import Enum + >>> class GameMove(Enum): + ... ROCK = 'rock' + ... PAPER = 'paper' + ... SCISSORS = 'scissors' + ... + >>> parser = argparse.ArgumentParser(prog='game.py') + >>> parser.add_argument('move', type=GameMove, choices=GameMove) + >>> parser.parse_args(['rock']) + Namespace(move=) required