Evan Driscoll <eva...@gmail.com> added the comment:

I ran into this issue today. (Or rather a couple weeks ago, and I just 
diagnosed it today.)

Reading through the thread and from the bug's age it looks like a fix is 
probably not to promising, but Cherniavsky Beni's 2016-04-11 22:03 comment

> Can I additional suggest a change to the error message, e.g.:
> 
>   $ prog --foo -bar
>   prog: error: argument --foo: expected one argument
>   (tip: use --foo=-bar to force interpretation as argument of --foo)
> 
> This can be safely added in the current mode with no opt-in required,
> and will relieve the immediate "but what can I do?" confusions of 
> users.  The workaround is hard to discover otherwise, as `--foo=x` is 
> typically equivalent to `--foo x`.

and found it intriguing.

Messing around with the code, I was able to produce the attached patch, which, 
when run on the test case in the original comment, produces this output:

>>> import argparse
>>> parser = argparse.ArgumentParser(prog='a2x')
>>> parser.add_argument('--asciidoc-opts',
...     action='store', dest='asciidoc_opts', default='',
...     metavar='ASCIIDOC_OPTS', help='asciidoc options')
>>> parser.parse_args(['--asciidoc-opts', '--safe'])
usage: a2x [-h] [--asciidoc-opts ASCIIDOC_OPTS]
a2x: error: argument --asciidoc-opts: expected one argument (if you intended 
--safe to be the argument of --asciidoc-opts, pass --asciidoc-opts=--safe 
instead)


Would a cleaned-up version of this patch be of interest? (There are a couple 
obvious problems, like the out-of-bounds access to the list, PEP8, etc.) Is 
there some other way you could suggest to achieve this aim if you don't like 
that approach?

(I also think that nargs=## could maybe be special-cased to just ignore the A/O 
designation completely and only check there are enough, but I haven't tried 
this out. Does this seem like a viable approach? Would a patch that does that, 
subject to some flag, be of interest?)


The patch is relative to, I believe, the distribution version of 2.7.8. (Sorry, 
it's what I had handy as a custom build. :-) Updating it to .14 and to 
3.whatever would be part of the cleanup.)

----------
Added file: https://bugs.python.org/file47302/python-argparse-error.patch

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue9334>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to