This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author paul.j3
Recipients Chris.Bruner, docs@python, paul.j3, r.david.murray
Date 2014-07-25.22:17:03
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1406326623.31.0.332890989494.issue22049@psf.upfronthosting.co.za>
In-reply-to
Content
What you want is a custom Action rather than a custom Type.  

from the documentation:

    >>> class FooAction(argparse.Action):
    ...     def __call__(self, parser, namespace, values, option_string=None):
    ...         print('%r %r %r' % (namespace, values, option_string))
    ...         setattr(namespace, self.dest, values)

'values' will be the list ['1','2','3'], which you test and manipulate, before finally saving it to the 'namespace'.

    ret = (int(values[0]), int(values[1]), float(values[2]))
    setattr(namespace, self.dest, ret)

Setting 'nargs=3' ensures that this action will always get a 3 item list.  If the parser can't give it 3 items, it will raise an error rather than call your Action.

'optparse' passed the remaining argument strings to Option's callback, which could consume as many as it wanted.  'argparse' does not give the Actions that power.  There is a fundamental difference in the parsing algorithm.
History
Date User Action Args
2014-07-25 22:17:03paul.j3setrecipients: + paul.j3, r.david.murray, docs@python, Chris.Bruner
2014-07-25 22:17:03paul.j3setmessageid: <1406326623.31.0.332890989494.issue22049@psf.upfronthosting.co.za>
2014-07-25 22:17:03paul.j3linkissue22049 messages
2014-07-25 22:17:03paul.j3create