Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #33871

Re: argparse -- mutually exclusive sets of arguments?

References <roy-DDAE52.13462523112012@news.panix.com>
From Ian Kelly <ian.g.kelly@gmail.com>
Date 2012-11-23 18:07 -0700
Subject Re: argparse -- mutually exclusive sets of arguments?
Newsgroups comp.lang.python
Message-ID <mailman.248.1353719298.29569.python-list@python.org> (permalink)

Show all headers | View raw


On Fri, Nov 23, 2012 at 11:46 AM, Roy Smith <roy@panix.com> wrote:
> My command either takes two positional arguments (in which case, both
> are required):
>
> $ command foo bar
>
> or the name of a config file (in which case, the positional arguments
> are forbidden):
>
> $ command --config file
>
> How can I represent this with argparse; add_mutually_exclusive_group()
> isn't quite the right thing.  It could specify that foo and --config are
> mutually exclusive, but not (as far as I can see) the more complicated
> logic described above.

I don't think you could even do the former.  An argument must be
optional in order to be mutually exclusive with anything.  This works,
however:

    parser = argparse.ArgumentParser()
    group = parser.add_mutually_exclusive_group(required=True)
    group.add_argument('--config', type=file)
    group.add_argument('--foobar', nargs=2, metavar=('FOO', 'BAR'))
    print parser.parse_args()

Downsides are that the resulting interface is a little more formal and
a little less friendly, and unless you customize the action you'll
wind up with a 2-element 'foobar' arg instead of separate 'foo' and
'bar' args.

Back to comp.lang.python | Previous | NextPrevious in thread | Find similar | Unroll thread


Thread

argparse -- mutually exclusive sets of arguments? Roy Smith <roy@panix.com> - 2012-11-23 13:46 -0500
  Re: argparse -- mutually exclusive sets of arguments? Terry Reedy <tjreedy@udel.edu> - 2012-11-23 13:56 -0500
  Re: argparse -- mutually exclusive sets of arguments? Ian Kelly <ian.g.kelly@gmail.com> - 2012-11-23 18:07 -0700

csiph-web