-
-
Notifications
You must be signed in to change notification settings - Fork 33.9k
gh-84116: Docs: Document help and aliases for argparse.add_parser() #140574
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
810fde1
b9ca059
bfbf864
16a1c46
639865d
3f0aa48
343648b
4b07ba3
8bb4bae
3361447
100207d
0f27e63
7e6102a
a76954c
ac2b754
b08e8ed
fa1d877
e955fb0
3d4cf26
e3af10b
59a1ad9
defd2c3
cd445fc
2e270ef
3e87e19
1867c71
ef450f6
4d27843
83ff9bf
77cc182
1a5c449
2dd07bb
850c986
7f95d28
18cbbae
554a3ca
312aa0f
53031db
6afe4d5
a10e6a5
d551718
6f94eda
d0ccf81
99af040
57d971d
2325383
f8c3bdd
2bea80e
1363eb8
6bf969c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -1722,33 +1722,23 @@ Subcommands | |
|
|
||
| Description of parameters: | ||
|
|
||
| * *title* - title for the sub-parser group in help output; by default | ||
| "subcommands" if description is provided, otherwise uses title for | ||
| positional arguments | ||
| * *title* - title for the sub-parser group in help output; by default "subcommands" if description is provided, otherwise uses title for positional arguments | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ok I don't why you're trying to change this. Why are changing this part of the document? I feel my reviews are just being ignored. |
||
|
|
||
| * *description* - description for the sub-parser group in help output, by | ||
| default ``None`` | ||
| * *description* - description for the sub-parser group in help output, by default ``None`` | ||
|
|
||
| * *prog* - usage information that will be displayed with subcommand help, | ||
| by default the name of the program and any positional arguments before the | ||
| subparser argument | ||
| * *prog* - usage information that will be displayed with subcommand help, by default the name of the program and any positional arguments before the subparser argument | ||
|
|
||
| * *parser_class* - class which will be used to create sub-parser instances, by | ||
| default the class of the current parser (e.g. :class:`ArgumentParser`) | ||
| * *parser_class* - class which will be used to create sub-parser instances, by default the class of the current parser (e.g. :class:`ArgumentParser`) | ||
|
|
||
| * action_ - the basic type of action to be taken when this argument is | ||
| encountered at the command line | ||
| * action_ - the basic type of action to be taken when this argument is encountered at the command line | ||
|
|
||
| * dest_ - name of the attribute under which subcommand name will be | ||
| stored; by default ``None`` and no value is stored | ||
| * dest_ - name of the attribute under which subcommand name will be stored; by default ``None`` and no value is stored | ||
|
|
||
| * required_ - Whether or not a subcommand must be provided, by default | ||
| ``False`` (added in 3.7) | ||
| * required_ - Whether or not a subcommand must be provided, by default ``False`` (added in 3.7) | ||
|
|
||
| * help_ - help for sub-parser group in help output, by default ``None`` | ||
|
|
||
| * metavar_ - string presenting available subcommands in help; by default it | ||
| is ``None`` and presents subcommands in form {cmd1, cmd2, ..} | ||
| * metavar_ - string presenting available subcommands in help; by default it is ``None`` and presents subcommands in form {cmd1, cmd2, ..} | ||
|
|
||
| Some example usage:: | ||
|
|
||
|
|
@@ -1771,7 +1761,7 @@ Subcommands | |
| >>> parser.parse_args(['--foo', 'b', '--baz', 'Z']) | ||
| Namespace(baz='Z', foo=True) | ||
|
|
||
| Note that the object returned by :meth:`parse_args` will only contain | ||
| Note that the object returned by :meth:`~ArgumentParser.parse_args` will only contain | ||
| attributes for the main parser and the subparser that was selected by the | ||
| command line (and not any other subparsers). So in the example above, when | ||
| the ``a`` command is specified, only the ``foo`` and ``bar`` attributes are | ||
|
|
@@ -1814,7 +1804,7 @@ Subcommands | |
| -h, --help show this help message and exit | ||
| --baz {X,Y,Z} baz help | ||
|
|
||
| The :meth:`add_subparsers` method also supports ``title`` and ``description`` | ||
| The :meth:`~ArgumentParser.add_subparsers` method also supports ``title`` and ``description`` | ||
| keyword arguments. When either is present, the subparser's commands will | ||
| appear in their own group in the help output. For example:: | ||
|
|
||
|
|
@@ -1835,34 +1825,8 @@ Subcommands | |
|
|
||
| {foo,bar} additional help | ||
|
|
||
| Furthermore, :meth:`~_SubParsersAction.add_parser` supports an additional | ||
| *aliases* argument, | ||
Krishna-web-hub marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| which allows multiple strings to refer to the same subparser. This example, | ||
| like ``svn``, aliases ``co`` as a shorthand for ``checkout``:: | ||
|
|
||
| >>> parser = argparse.ArgumentParser() | ||
| >>> subparsers = parser.add_subparsers() | ||
| >>> checkout = subparsers.add_parser('checkout', aliases=['co']) | ||
| >>> checkout.add_argument('foo') | ||
| >>> parser.parse_args(['co', 'bar']) | ||
| Namespace(foo='bar') | ||
|
|
||
| :meth:`~_SubParsersAction.add_parser` supports also an additional | ||
| *deprecated* argument, which allows to deprecate the subparser. | ||
|
|
||
| >>> import argparse | ||
| >>> parser = argparse.ArgumentParser(prog='chicken.py') | ||
| >>> subparsers = parser.add_subparsers() | ||
| >>> run = subparsers.add_parser('run') | ||
| >>> fly = subparsers.add_parser('fly', deprecated=True) | ||
| >>> parser.parse_args(['fly']) # doctest: +SKIP | ||
| chicken.py: warning: command 'fly' is deprecated | ||
| Namespace() | ||
|
|
||
| .. versionadded:: 3.13 | ||
|
|
||
| One particularly effective way of handling subcommands is to combine the use | ||
| of the :meth:`add_subparsers` method with calls to :meth:`set_defaults` so | ||
| of the :meth:`~ArgumentParser.add_subparsers` method with calls to :meth:`~ArgumentParser.set_defaults` so | ||
| that each subparser knows which Python function it should execute. For | ||
| example:: | ||
|
|
||
|
|
@@ -1898,12 +1862,12 @@ Subcommands | |
| >>> args.func(args) | ||
| ((XYZYX)) | ||
|
|
||
| This way, you can let :meth:`parse_args` do the job of calling the | ||
| This way, you can let :meth:`~ArgumentParser.parse_args` do the job of calling the | ||
| appropriate function after argument parsing is complete. Associating | ||
| functions with actions like this is typically the easiest way to handle the | ||
| different actions for each of your subparsers. However, if it is necessary | ||
| to check the name of the subparser that was invoked, the ``dest`` keyword | ||
| argument to the :meth:`add_subparsers` call will work:: | ||
| argument to the :meth:`~ArgumentParser.add_subparsers` call will work:: | ||
|
|
||
| >>> parser = argparse.ArgumentParser() | ||
| >>> subparsers = parser.add_subparsers(dest='subparser_name') | ||
|
|
@@ -1922,6 +1886,49 @@ Subcommands | |
| the main parser. | ||
|
|
||
|
|
||
| .. method:: _SubParsersAction.add_parser(name, *, help=None, aliases=None, | ||
| deprecated=False, **kwargs) | ||
|
Comment on lines
+1889
to
+1890
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You need to aligned deprecated with name. |
||
|
|
||
| Creates and returns a new :class:`!ArgumentParser` object for the | ||
| subcommand *name*. | ||
|
|
||
| The *name* argument is the name of the sub-command. | ||
|
|
||
| The *help* argument provides a short description for this sub-command. | ||
| If provided, it will be listed next to the command in the main parser’s | ||
| help message (for example, ``PROG --help``). | ||
|
|
||
| The *aliases* argument allows providing alternative names for this | ||
| sub-command. | ||
|
|
||
| For example:: | ||
|
|
||
| >>> parser = argparse.ArgumentParser() | ||
| >>> subparsers = parser.add_subparsers() | ||
| >>> checkout = subparsers.add_parser('checkout', aliases=['co']) | ||
| >>> checkout.add_argument('foo') | ||
| >>> parser.parse_args(['co', 'bar']) | ||
| Namespace(foo='bar') | ||
|
|
||
| The *deprecated* argument, if ``True``, marks the sub-command as | ||
| deprecated and will issue a warning when used. | ||
|
|
||
| For example:: | ||
|
|
||
| >>> parser = argparse.ArgumentParser(prog='chicken.py') | ||
| >>> subparsers = parser.add_subparsers() | ||
| >>> fly = subparsers.add_parser('fly', deprecated=True) | ||
| >>> parser.parse_args(['fly']) # doctest: +SKIP | ||
| chicken.py: warning: command 'fly' is deprecated | ||
| Namespace() | ||
|
|
||
| .. versionadded:: 3.13 | ||
| Added the *deprecated* parameter. | ||
|
Comment on lines
+1925
to
+1926
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This was meant to be added after "constructor.". And be careful with the number of blank lines. Don't just ask an LLM to make them. In fact, don't use LLMs for formatting. |
||
|
|
||
|
|
||
| All other keyword arguments are passed directly to the | ||
| :class:`!ArgumentParser` constructor. | ||
Krishna-web-hub marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| FileType objects | ||
| ^^^^^^^^^^^^^^^^ | ||
|
|
||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| Document ``help`` and ``aliases`` parameters for | ||
| ``argparse._SubParsersAction.add_parser`` in the :mod:`argparse` | ||
| documentation. |
Uh oh!
There was an error while loading. Please reload this page.