New submission from Charles Daffern:
Example code demonstrating the problem:
# {{{
import argparse
def try_args(*args):
parser = argparse.ArgumentParser()
parser.add_argument("-a")
print("Trying:", args)
try:
print(parser.parse_args(args))
except SystemExit:
print("FAILED!")
try_args("-a", "-") # Works fine
try_args("-a", "-a") # Breaks
try_args("-a", "--") # Breaks
try_args("-a", "--things--") # Breaks
# }}}
This behaviour is contrary to optparse:
# {{{
import optparse
def try_args(*args):
parser = optparse.OptionParser()
parser.add_option("-a")
print("Trying:", args)
try:
print(parser.parse_args(list(args)))
except SystemExit:
print("FAILED!")
try_args("-a", "-") # Works
try_args("-a", "-a") # Works
try_args("-a", "--") # Works
try_args("-a", "--things--") # Works
# }}}
It is also contrary to many other utilities, including python itself:
# {{{
$ python -c -c
Traceback (most recent call last):
File "<string>", line 1, in <module>
NameError: name 'c' is not defined
$ printf 'hello\nworld\n-- pick me\netc\n' | grep -e --
-- pick me
$ gawk -f --
gawk: fatal: can't open source file `--' for reading (No such file or directory)
$ vim -u --
E282: Cannot read from "--"
Press ENTER or type command to continue
$ man -M --asdf man
No manual entry for man
$ less -b --sdfkds
Number is required after -b (--buffers)
Missing filename ("less --help" for help)
$ perl -e --fasd
Can't modify constant item in predecrement (--) at -e line 1, at EOF
Execution of -e aborted due to compilation errors.
# }}}
I first encountered this problem when using a text scrolling utility someone
had written in python, and tried to pass "--" as the text separator. The
program just bailed out, and it turned out that it wasn't the author's fault
but a problem in argparse itself.
----------
components: Library (Lib)
messages: 258897
nosy: Charles Daffern
priority: normal
severity: normal
status: open
title: Argparse breaks when a switch is given an argument beginning with a dash
type: behavior
versions: Python 3.6
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue26196>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com