On Mon, Mar 8, 2010 at 11:49 AM, Xavier Morel <python-...@masklinn.net> wrote: > On 8 Mar 2010, at 16:53 , David Stanek wrote: >> >> On Mon, Mar 8, 2010 at 10:40 AM, Steven Bethard >> <steven.beth...@gmail.com> wrote: >>> >>> In argparse, unlike optparse, actions are actually defined by objects >>> with a particular API, and the string is just a shorthand for >>> referring to that. So: >>> >>> parser.add_argument ('--plot', action='store_true') >>> >>> is equivalent to: >>> >>> parser.add_argument('--plot', argparse._StoreTrueAction) >>> >>> Because the names are so long and you'd have to import them, I've left >>> them as private attributes of the module, but if there's really >>> demand, we could rename them to argparse.StoreTrueAction, etc. >>> >> >> Any reason not to do something like: >> >> from argparse import actions >> ... >> parser.add_argument('--plot', actions.store_true) >> >> Basically a small namespace for the constants. > > action is taken from **kwargs, not from a positional argument as *args > is a sequence of option strings (so you can write > add_argument('-p', '/p', '--plot', '--land-mass')). So you'd have to write > add_argument('--plot', action=actions.store_true) which is straight from > the department of redundant redundancies. > > An option would be > > parser.add(actions.StoreTrue('--plot')) > > but I'm not sure this makes any sense API-wise, and it would probably make > the code a lot messier as the parser would have to reach into the action > to get the information it needs. Either that, or the action would be an *arg > and argparse would have to walk all of its *args type-testing each one to find > if there's an action anywhere.
You could just change my example to: from argparse.actions import store_true ... parser.add_argument('--plot', action=store_true) I would probably still import the actions namespace directly, but wouldn't have to. -- David blog: http://www.traceback.org twitter: http://twitter.com/dstanek _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com