Argparse xor - mutual exlucise - only one - exactly one



examples/argparse/argparse_xor.py
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--name')

action = parser.add_mutually_exclusive_group(required=True)
action.add_argument('--add', action='store_true')
action.add_argument('--remove', action='store_true')

args = parser.parse_args()

$ python argparse_xor.py
usage: argparse_xor.py [-h] [--name NAME] (--add | --remove)
argparse_xor.py: error: one of the arguments --add --remove is required

$ python argparse_xor.py --add
$ python argparse_xor.py --remove

$ python argparse_xor.py --add --remove
usage: argparse_xor.py [-h] [--name NAME] (--add | --remove)
argparse_xor.py: error: argument --remove: not allowed with argument --add


$ python argparse_xor.py --help
usage: argparse_xor.py [-h] [--name NAME] (--add | --remove)

optional arguments:
  -h, --help   show this help message and exit
  --name NAME
  --add
  --remove