# issue22047 desires a group mechanism that produces # [ [ -opt1 | -opt2 | -opt3 ] | [ [-opt4] [-opt5] [-opt6] ] ] # a possible solution with 'UsageGroups' developed for http://bugs.python.org/issue11588 import argparse parser = argparse.ArgumentParser(prog='PROG', formatter_class=argparse.UsageGroupHelpFormatter) grp1 = parser.add_usage_group(kind='mxg') grp2 = grp1.add_usage_group(kind='mxg') grp2.add_argument('--opt1', action='store_true') grp2.add_argument('--opt2', action='store_true') grp2.add_argument('--opt3', action='store_true') grp3 = grp1.add_usage_group(kind='any', joiner=' ', parens='[]') grp3.add_argument('--opt4', action='store_true') grp3.add_argument('--opt5', action='store_true') grp3.add_argument('--opt6', action='store_true') parser.print_help() """ produces: usage: PROG [-h] [[--opt1 | --opt2 | --opt3] | [--opt4 --opt5 --opt6]] optional arguments: -h, --help show this help message and exit --opt1 --opt2 --opt3 --opt4 --opt5 --opt6 """