mirror of
https://github.com/python/cpython.git
synced 2025-10-03 21:55:41 +00:00
[3.11] gh-92446: Improve argparse choices docs (GH-94627) (#100528)
Based on the definition of the collections.abc classes, it is more accurate to use "sequence" instead of "container" when describing argparse choices.
(cherry picked from commit ad3c99e521
)
Co-authored-by: Guy Yagev <yourlefthandman8@gmail.com>
Co-authored-by: Shantanu <12621235+hauntsaninja@users.noreply.github.com>
This commit is contained in:
parent
75b75dfdac
commit
2cb4b13af6
1 changed files with 6 additions and 6 deletions
|
@ -755,7 +755,7 @@ The add_argument() method
|
||||||
|
|
||||||
* type_ - The type to which the command-line argument should be converted.
|
* type_ - The type to which the command-line argument should be converted.
|
||||||
|
|
||||||
* choices_ - A container of the allowable values for the argument.
|
* choices_ - A sequence of the allowable values for the argument.
|
||||||
|
|
||||||
* required_ - Whether or not the command-line option may be omitted
|
* required_ - Whether or not the command-line option may be omitted
|
||||||
(optionals only).
|
(optionals only).
|
||||||
|
@ -1199,7 +1199,7 @@ choices
|
||||||
^^^^^^^
|
^^^^^^^
|
||||||
|
|
||||||
Some command-line arguments should be selected from a restricted set of values.
|
Some command-line arguments should be selected from a restricted set of values.
|
||||||
These can be handled by passing a container object as the *choices* keyword
|
These can be handled by passing a sequence object as the *choices* keyword
|
||||||
argument to :meth:`~ArgumentParser.add_argument`. When the command line is
|
argument to :meth:`~ArgumentParser.add_argument`. When the command line is
|
||||||
parsed, argument values will be checked, and an error message will be displayed
|
parsed, argument values will be checked, and an error message will be displayed
|
||||||
if the argument was not one of the acceptable values::
|
if the argument was not one of the acceptable values::
|
||||||
|
@ -1213,9 +1213,9 @@ if the argument was not one of the acceptable values::
|
||||||
game.py: error: argument move: invalid choice: 'fire' (choose from 'rock',
|
game.py: error: argument move: invalid choice: 'fire' (choose from 'rock',
|
||||||
'paper', 'scissors')
|
'paper', 'scissors')
|
||||||
|
|
||||||
Note that inclusion in the *choices* container is checked after any type_
|
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*
|
conversions have been performed, so the type of the objects in the *choices*
|
||||||
container should match the type_ specified::
|
sequence should match the type_ specified::
|
||||||
|
|
||||||
>>> parser = argparse.ArgumentParser(prog='doors.py')
|
>>> parser = argparse.ArgumentParser(prog='doors.py')
|
||||||
>>> parser.add_argument('door', type=int, choices=range(1, 4))
|
>>> parser.add_argument('door', type=int, choices=range(1, 4))
|
||||||
|
@ -1225,8 +1225,8 @@ container should match the type_ specified::
|
||||||
usage: doors.py [-h] {1,2,3}
|
usage: doors.py [-h] {1,2,3}
|
||||||
doors.py: error: argument door: invalid choice: 4 (choose from 1, 2, 3)
|
doors.py: error: argument door: invalid choice: 4 (choose from 1, 2, 3)
|
||||||
|
|
||||||
Any container can be passed as the *choices* value, so :class:`list` objects,
|
Any sequence can be passed as the *choices* value, so :class:`list` objects,
|
||||||
:class:`set` objects, and custom containers are all supported.
|
:class:`tuple` objects, and custom sequences are all supported.
|
||||||
|
|
||||||
Use of :class:`enum.Enum` is not recommended because it is difficult to
|
Use of :class:`enum.Enum` is not recommended because it is difficult to
|
||||||
control its appearance in usage, help, and error messages.
|
control its appearance in usage, help, and error messages.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue