[issue16988] argparse: PARSER option for nargs not documented
New submission from Robert Leenders: There is a value for nargs: PARSER="A..." which is not documented at http://docs.python.org/3.4/library/argparse.html#nargs. The docstring for the action class in argparse.py also does not list PARSER as a valid value for nargs. In argparse.py on line 2199-2201 it says: # Allow one argument followed by any number of options or arguments elif nargs == PARSER: nargs_pattern = '(-*A[-AO]*)' This is the only hint that I could find on what it is about. ---------- assignee: docs@python components: Documentation messages: 180155 nosy: ReDAeR, bethard, docs@python priority: normal severity: normal status: open title: argparse: PARSER option for nargs not documented type: enhancement versions: Python 3.4 _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue16988> _______________________________________
Changes by Chris Jerdonek <chris.jerdonek@gmail.com>: ---------- nosy: +chris.jerdonek _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue16988> _______________________________________
Jeff Knupp added the comment: This is not a bug. The 'PARSER' nargs choice is an implementation detail as a way to handle subparsers. The parser needs to know that the first value should be handled, but everything that follows will be handled by the subparser. By using a subparser, you're effectively using 'PARSER', but it wouldn't make sense to allow 'PARSER' to be set directly as it only makes sense when used in conjunction with a subparser. ---------- nosy: +jeffknupp _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue16988> _______________________________________
paul j3 added the comment: I've experimented with an argparse adaptation of profile.py: parser = argparse.ArgumentParser(usage=usage) parser.add_argument('-o', '--outfile', dest="outfile", help="Save stats to <outfile>", metavar="path") parser.add_argument('-s', '--sort', dest="sort", help="Sort order when printing to stdout ...", default=-1) parser.add_argument('args', nargs=argparse.PARSER, metavar="scriptfile [arg] ...") # expect at least one positional, a py module It is somewhat like subparsers, but without defined subparser choices. Or you could say that PARSER (A...) is to REMAINDER (...) as '+' is to '*'. It requires at least one argument. I could, just as well, have created two arguments, 'scriptfile' and 'args' (with '...'). I don't know if that is an argument for documenting it or not. ---------- nosy: +paul.j3 _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue16988> _______________________________________
R. David Murray added the comment: I don't think this use case is enough to justify documenting it, since this is not an intuitive meaning of the word PARSER. I think if we wanted to expose this for this kind of use case, we'd want to rename the constant (with an alias for backward compatibility), which would be an enhancement. I'm going to close this, but someone who wants this could open an enhancement request. ---------- nosy: +r.david.murray resolution: -> not a bug stage: -> resolved status: open -> closed type: enhancement -> _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue16988> _______________________________________
participants (5)
-
Chris Jerdonek
-
Jeff Knupp
-
paul j3
-
R. David Murray
-
Robert Leenders