--- /usr/lib/python2.7/argparse.py 2012-04-20 16:35:44.000000000 -0700 +++ argparse.py 2012-06-22 14:50:27.125697621 -0700 @@ -1886,6 +1886,13 @@ # slice off the Positionals that we just parsed and return the # index at which the Positionals' string args stopped + if positionals[-1].nargs == '*' and arg_counts[-1] == 0 \ + and start_index != len(arg_strings_pattern): + # don't accept an empty match for nargs='*' positionals + # until we are at the end of the argument list and know + # for sure that there isn't anything forthcoming to fill + # it with: + arg_counts.pop() positionals[:] = positionals[len(arg_counts):] return start_index