paul j3 added the comment:

A possible further tweak is, in take_action(), test for conflicts before adding 
the action to 'seen_non_default_actions'

            if argument_values is not action.default:
                #seen_non_default_actions.add(action)
                for conflict_action in action_conflicts.get(action, []):
                    if conflict_action in seen_non_default_actions:
                       ...
                seen_non_default_actions.add(action)

This does not cause problems with any existing tests, but makes it possible to 
add an action twice to a group.  Why do that?  To prevent an action from 
occurring more than once.  For some actions like 'count' and 'append' repeated 
use is expected, but for others it isn't expected, and may sometimes be a 
nuisance (the last occurrence is the one that sticks). 

An example use would be:

    parser = argparse.ArgumentParser(prog="PROG",
        formatter_class=argparse.MultiGroupHelpFormatter)
    action = parser.add_argument('--arg', help='use this argument only once')
    group1 = parser.add_mutually_exclusive_group(action, action)
    args  = parser.parse_args()

calling this with:

    python3 test_once.py --arg test --arg next

would produce this error message:

    usage: PROG [-h] [--arg ARG | --arg ARG]
    PROG: error: argument --arg: not allowed with argument --arg

The usage and error message aren't as clear as they might be if this feature 
was added 'from scratch'.  But for a minor change like this, that may be an 
acceptable price.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue10984>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to