commit 392ff74d34a89500b39b018b6c63537d83f9454e Author: Laszlo Attila Toth Date: Wed Feb 8 08:38:00 2012 +0100 argparse: added support of disabling interspersed args ArgumentParser got disable_interspersed_args() which exists in optparse.OptionParser() diff --git a/lib/argparse.py b/lib/argparse.py index 3a61dcb..0f27b60 100644 --- a/lib/argparse.py +++ b/lib/argparse.py @@ -1584,6 +1584,7 @@ class ArgumentParser(_AttributeHolder, _ActionsContainer): self._positionals = add_group(_('positional arguments')) self._optionals = add_group(_('optional arguments')) self._subparsers = None + self._disabled_interspersed_args = False # register types def identity(string): @@ -1615,6 +1616,9 @@ class ArgumentParser(_AttributeHolder, _ActionsContainer): else: self._defaults.update(defaults) + def disable_interspersed_args(self): + self._disabled_interspersed_args = True + # ======================= # Pretty __repr__ methods # ======================= @@ -1750,7 +1754,9 @@ class ArgumentParser(_AttributeHolder, _ActionsContainer): for i, arg_string in enumerate(arg_strings_iter): # all args after -- are non-options - if arg_string == '--': + # If options and non-options cannot mix, all remaining args are non-options + if (arg_string[0] not in self.prefix_chars and self._disabled_interspersed_args) or \ + arg_string == '--': arg_string_pattern_parts.append('-') for arg_string in arg_strings_iter: arg_string_pattern_parts.append('A')