mirror of
https://github.com/python/cpython.git
synced 2025-12-31 04:23:37 +00:00
[3.14] gh-132558: Improve argparse docs on combining type and choices (GH-133827) (#139057)
gh-132558: Improve `argparse` docs on combining `type` and `choices` (GH-133827)
(cherry picked from commit dd0840bf67)
Co-authored-by: Hans Then <hans.then@gmail.com>
Co-authored-by: Savannah Bailey <savannahostrowski@gmail.com>
This commit is contained in:
parent
9d0ca237af
commit
7a2854eb12
1 changed files with 9 additions and 4 deletions
|
|
@ -1142,16 +1142,21 @@ if the argument was not one of the acceptable values::
|
|||
game.py: error: argument move: invalid choice: 'fire' (choose from 'rock',
|
||||
'paper', 'scissors')
|
||||
|
||||
Note that inclusion in the *choices* sequence is checked after any type_
|
||||
conversions have been performed, so the type of the objects in the *choices*
|
||||
sequence should match the type_ specified.
|
||||
|
||||
Any sequence can be passed as the *choices* value, so :class:`list` objects,
|
||||
:class:`tuple` objects, and custom sequences are all supported.
|
||||
|
||||
Use of :class:`enum.Enum` is not recommended because it is difficult to
|
||||
control its appearance in usage, help, and error messages.
|
||||
|
||||
Note that *choices* are checked after any type_
|
||||
conversions have been performed, so objects in *choices*
|
||||
should match the type_ specified. This can make *choices*
|
||||
appear unfamiliar in usage, help, or error messages.
|
||||
|
||||
To keep *choices* user-friendly, consider a custom type wrapper that
|
||||
converts and formats values, or omit type_ and handle conversion in
|
||||
your application code.
|
||||
|
||||
Formatted choices override the default *metavar* which is normally derived
|
||||
from *dest*. This is usually what you want because the user never sees the
|
||||
*dest* parameter. If this display isn't desirable (perhaps because there are
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue