Closed GoogleCodeExporter closed 9 years ago
I don't think that allowing the main parser options interspersed with the
subparser
options is right for all applications. For example, while 'svn --version'
works, 'svn
co --version' doesn't. So at least SVN has decided that --version is not a
global option.
Right now, the only real way to use global options is to store all your global
options in one parser, and then add those options to all your subparsers using
the
parser= keyword argument to the ArgumentParser constructor. Something like this:
>>> global_options = argparse.ArgumentParser(add_help=False)
>>> global_options.add_argument('--bar', action='store_true')
>>> parser = argparse.ArgumentParser(parents=[global_options])
>>> subparsers = parser.add_subparsers()
>>> parser1 = subparsers.add_parser('1', parents=[global_options])
>>> parser.parse_args(['--bar', '1'])
Namespace(bar=True)
>>> parser.parse_args(['1', '--bar'])
Namespace(bar=True)
I'm open to patches which make it easier to specify global options if you have
specific ideas.
Original comment by steven.b...@gmail.com
on 8 Sep 2009 at 1:11
Original comment by steven.b...@gmail.com
on 8 Sep 2009 at 1:11
s/using the parser= keyword/using the parents= keyword/
Original comment by 4kir4...@gmail.com
on 10 Sep 2009 at 3:41
Closing this as the parents keyword allows the desired behavior to be requested
explicitly. If you'd like to propose an API for this, please either discuss on
the argarse users list, or file a feature request on bugs.python.org.
Original comment by steven.b...@gmail.com
on 23 Jul 2010 at 10:53
Original issue reported on code.google.com by
riteshra...@gmail.com
on 2 Sep 2009 at 5:30