Issue 9350: add remove_argument_group to argparse (original) (raw)

Created on 2010-07-23 13:51 by bethard, last changed 2022-04-11 14:57 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
remove_argument_group.patch Sanjeev,2013-03-19 21:39 review
Messages (8)
msg111321 - (view) Author: Steven Bethard (bethard) * (Python committer) Date: 2010-07-23 13:51
[From http://code.google.com/p/argparse/issues/detail?id=71] There is a method ArgumentParser.add_argument_group() to create and add an argument group to the parser. I would like the ability to remove an argument group via a method like remove_argument_group(group). The use case for me is I create an argument group and then conditionally add a bunch of arguments to it. If zero arguments are added I would like to then remove the group so that an empty group does not show up in the help output.
msg221730 - (view) Author: paul j3 (paul.j3) * (Python triager) Date: 2014-06-27 20:59
I wonder if this patch is needed. - there hasn't been discussion in 4 years - In Steven's use case, a group without any arguments, the group does not show up. A common example of an empty argument group, is a parser without any user defined arguments. p=argparse.ArgumentParser(prog='PROG') p.print_help() usage: PROG [-h] optional arguments: -h, --help show this help message and exit The empty 'positional arguments' group is not displayed. Removing a group that has arguments is more complicated (and error prone) since it requires removing those arguments as well. There is a '_remove_action' method. But as best I can tell it is only used by '_handle_conflict_resolve', a rarely used alternative conflict handler.
msg227779 - (view) Author: paul j3 (paul.j3) * (Python triager) Date: 2014-09-28 21:54
If the empty argument group has a 'description' it is displayed. For example with positionals group that I mentioned earlier: parser = argparse.ArgumentParser() parser._action_groups[0].description = 'test' parser.print_help() produces usage: ipython [-h] positional arguments: test optional arguments: -h, --help show this help message and exit So the user can fix this empty group display issue by setting this 'description' value to None.
msg349920 - (view) Author: Hai Shi (shihai1991) * (Python triager) Date: 2019-08-18 16:39
IMHO, if we supply the ability to add an argument group, we need add the ability to remove the argument group too.
msg349921 - (view) Author: paul j3 (paul.j3) * (Python triager) Date: 2019-08-18 17:33
hai shi Do you have a specific need for this, or do you want it just for the same of completeness?
msg349929 - (view) Author: Raymond Hettinger (rhettinger) * (Python committer) Date: 2019-08-19 00:47
> The use case for me is I create an argument group and > then conditionally add a bunch of arguments to it. > If zero arguments are added I would like to then remove > the group so that an empty group does not show up > in the help output. ISTM this use is likely rare enough that it doesn't warrant an API expansion. The argparse API is already somewhat large, so we should only expand it when there is a compelling benefit or the absence of a reasonable workaround (i.e. lazily adding a group only when the first argument is added).
msg349932 - (view) Author: Hai Shi (shihai1991) * (Python triager) Date: 2019-08-19 04:39
paul, raymond. Thanks for give me a quick answer:). Looks raymond's reason is good enough, i just only consider this question from api completeness(as paul said) not from user case.
msg408542 - (view) Author: Irit Katriel (iritkatriel) * (Python committer) Date: 2021-12-14 16:08
This is over a decade old and the discussion is mostly that it's not worth doing, so I suggest we close.
History
Date User Action Args
2022-04-11 14:57:04 admin set github: 53596
2021-12-29 22:38:52 iritkatriel set status: pending -> closedstage: needs patch -> resolved
2021-12-14 16:08:42 iritkatriel set status: open -> pendingnosy: + iritkatrielmessages: + resolution: rejected
2019-08-19 04:39:55 shihai1991 set messages: +
2019-08-19 00:47:11 rhettinger set nosy: + rhettingermessages: +
2019-08-18 17:33:40 paul.j3 set messages: +
2019-08-18 16:39:49 shihai1991 set nosy: + shihai1991messages: +
2018-09-23 06:19:56 xtreak set nosy: + xtreak
2014-09-28 21:54:36 paul.j3 set messages: +
2014-06-27 20:59:40 paul.j3 set messages: +
2014-06-16 22:31:56 BreamoreBoy set nosy: + paul.j3versions: + Python 2.7, Python 3.5, - Python 3.4
2013-03-19 21:40:03 Sanjeev set versions: + Python 3.4
2013-03-19 21:39:03 Sanjeev set files: + remove_argument_group.patchkeywords: + patch
2013-03-19 21:38:32 Sanjeev set nosy: + Sanjeev
2010-07-23 13:51:26 bethard create