paul j3 added the comment: http://stackoverflow.com/questions/25626109/python-argparse-conditionally-required-arguments
asks about implementing a 'conditionally-required-arguments' case in `argparse`. The post-parsing test is simple enough: if args.argument and (args.a is None or args.b is None): # raise argparse error here I believe the clearest and shortest expression using Groups is: p = ArgumentParser(formatter_class=UsageGroupHelpFormatter) g1 = p.add_usage_group(kind='nand', dest='nand1') g1.add_argument('--arg', metavar='C') g11 = g1.add_usage_group(kind='nand', dest='nand2') g11.add_argument('-a') g11.add_argument('-b') The usage is (using !() to mark a 'nand' test): usage: issue25626109.py [-h] !(--arg C & !(-a A & -b B)) This uses a 'nand' group, with a 'not-all' test (False if all its actions are present, True otherwise). ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue11588> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com