diff -r d9c98730e2e8 Lib/argparse.py --- a/Lib/argparse.py Sat Jul 07 13:34:50 2012 +1000 +++ b/Lib/argparse.py Sat Jul 07 17:05:00 2012 +0200 @@ -1465,9 +1465,16 @@ raise ValueError(msg % self.conflict_handler) def _check_conflict(self, action): + confl_optionals = [] + + # mark duplicate positionals as conflicting + if not action.option_strings: # optionals have option_strings + for _action in self._actions: + if (action.dest == _action.dest and + not isinstance(action, _AppendAction)): + confl_optionals.append((action.dest, _action)) # find all options that conflict with this option - confl_optionals = [] for option_string in action.option_strings: if option_string in self._option_string_actions: confl_optional = self._option_string_actions[option_string]