Skip to content

Commit bdc9c55

Browse files
hansthensavannahostrowski
authored andcommitted
pythongh-132558: Improve argparse docs on combining type and choices (pythonGH-133827)
(cherry picked from commit dd0840b) Co-authored-by: Hans Then <[email protected]> Co-authored-by: Savannah Bailey <[email protected]>
1 parent 13761d1 commit bdc9c55

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

Doc/library/argparse.rst

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1058,16 +1058,21 @@ if the argument was not one of the acceptable values::
10581058
game.py: error: argument move: invalid choice: 'fire' (choose from 'rock',
10591059
'paper', 'scissors')
10601060

1061-
Note that inclusion in the *choices* sequence is checked after any type_
1062-
conversions have been performed, so the type of the objects in the *choices*
1063-
sequence should match the type_ specified.
1064-
10651061
Any sequence can be passed as the *choices* value, so :class:`list` objects,
10661062
:class:`tuple` objects, and custom sequences are all supported.
10671063

10681064
Use of :class:`enum.Enum` is not recommended because it is difficult to
10691065
control its appearance in usage, help, and error messages.
10701066

1067+
Note that *choices* are checked after any type_
1068+
conversions have been performed, so objects in *choices*
1069+
should match the type_ specified. This can make *choices*
1070+
appear unfamiliar in usage, help, or error messages.
1071+
1072+
To keep *choices* user-friendly, consider a custom type wrapper that
1073+
converts and formats values, or omit type_ and handle conversion in
1074+
your application code.
1075+
10711076
Formatted choices override the default *metavar* which is normally derived
10721077
from *dest*. This is usually what you want because the user never sees the
10731078
*dest* parameter. If this display isn't desirable (perhaps because there are

0 commit comments

Comments
 (0)