Evan Driscoll <[email protected]> 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 <[email protected]>
<https://bugs.python.org/issue9334>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com