Steven Bethard <steven.beth...@gmail.com> added the comment: I just tried this with grep's "-e" and "--regexp":
$ cat > temp.txt a--b cdef $ grep -e-- -v temp.txt cdef $ grep --regexp=-- -v temp.txt cdef $ grep -e -- -v temp.txt cdef $ grep --regexp -- -v temp.txt cdef And with diff's "-I" and "--ignore-matching-lines": $ cat > temp2.txt cdef a--b $ diff temp.txt temp2.txt 1d0 < a--b 2a2 > a--b $ diff -I-- temp.txt temp2.txt $ diff -I -- temp.txt temp2.txt $ diff --ignore-matching-lines -- temp.txt temp2.txt $ diff --ignore-matching-lines=-- temp.txt temp2.txt $ Note though that for options that don't take an argument, the "--" is just removed: $ grep -v -- a temp.txt cdef $ diff -i -- temp.txt temp2.txt 1d0 < a--b 2a2 > a--b So I guess the unix rule is: if an option that takes an argument is followed by "--", use that as the option's argument and continue parsing as usual. If an option that takes no argument is followed by "--", then delete the "--" and treat all following flags as positional arguments. Argparse can't follow this directly, because then people who are using "--" to signal the end of an option with nargs="*" would start getting "--" included in that list. (And I know people have used "--" this way for a while.) I guess my preference is what R. David Murray suggests: "--" when part of an argument (i.e. not separated by spaces) is treated like any other characters, and only a lone "--" signals the end of options (and is ignored otherwise). That would mean that both "--test=--" and "-t--" in your example would give you ["--"], and the other errors would stay as you saw them. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue14364> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com