Issue 23298: Add ArgumentParser.add_mutually_dependence_group - Python tracker (original) (raw)

Issue23298

Created on 2015-01-22 05:41 by dongwm, last changed 2022-04-11 14:58 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
argparse_lib.patch dongwm,2015-01-22 05:41 patch for Lib/argparse.py review
argparse_doc.patch dongwm,2015-01-22 05:43 patch for Doc/library/argparse.rst review
argparse_test.patch dongwm,2015-01-22 05:48 patch for Lib/test/test_argparse.py review
Messages (4)
msg234475 - (view) Author: dongwm (dongwm) * Date: 2015-01-22 05:41
Sometimes I need to use argparse like this: >>> parser = argparse.ArgumentParser(prog='PROG') >>> group = parser.add_mutually_dependence_group() >>> group.add_argument('--foo') >>> group.add_argument('--bar') >>> parser.parse_args(['--foo', 'f', '--bar', 'b']) Namespace(bar='b', foo='f') >>> parser.parse_args(['--foo', 'f']) PROG: error: --foo dependence on --bar >>> parser.parse_args(['--bar', 'b']) PROG: error: --bar dependence on --foo I have some optional argument. but if any argument in a group was present on the command line. i need the others must also was present on. so i think ``add_mutually_dependence_group`` does make sense.
msg234495 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2015-01-22 15:38
Well, it doesn't make much sense in the English language sense. If I got that error message I'd have no idea what was wrong. It sounds like what you want to do is dynamically make some arguments be required, depending on whether or not other arguments are present or not.
msg238940 - (view) Author: paul j3 (paul.j3) * (Python triager) Date: 2015-03-22 20:43
http://bugs.python.org/issue11588 is an earlier request for 'necessarily inclusive' groups. The patches that I proposed there are more general, allowing for other logical combinations of arguments, as well as nesting groups. As such it is more complex than your patch, but the basic testing idea is the same - At the end of _parse_known_args check the group's actions against the ones that have been parsed. I use the existing 'seen_actions' or 'seen_nondefault_actions' rather than check the namespace directly. I also tried to construct this testing as a 'hook' that the user could customize. Your test, since it uses the Namespace and Action default, rather than the 'seen_actions' set, could just as well be run AFTER parse_args. That's the kind of testing that Stackoverflow answers often suggest for similar questions. In some cases it's also possible to write custom Action classes that handle this kind of interdependency.
msg286581 - (view) Author: paul j3 (paul.j3) * (Python triager) Date: 2017-02-01 02:22
I propose closing this with reference to http://bugs.python.org/issue11588
History
Date User Action Args
2022-04-11 14:58:12 admin set github: 67487
2019-04-25 01:07:47 martin.panter set superseder: Add "necessarily inclusive" groups to argparse
2017-02-01 02:22:42 paul.j3 set status: open -> closedmessages: +
2015-03-22 20:43:29 paul.j3 set nosy: + paul.j3messages: +
2015-01-22 15:39:19 r.david.murray set versions: - Python 2.7, Python 3.2, Python 3.3, Python 3.4
2015-01-22 15:38:13 r.david.murray set nosy: + r.david.murraymessages: +
2015-01-22 05:48:29 dongwm set files: + argparse_test.patch
2015-01-22 05:43:46 dongwm set files: + argparse_doc.patch
2015-01-22 05:41:52 dongwm create