paul j3 added the comment:

A simpler solution is to make a copy of each Action when importing a parent 
parser.  The current practice is to just copy references.  With a copy, an 
Action will belong to only one group and parser, and the 'resolve' handler will 
operate without problems.

In the attached patch, I added a `.copy` method to Action.  I believe 
'.option_strings' is the only attribute that needs special handling, since it 
is a list, and 'resolve' operates on it.  The other attributes are strings, or 
objects that the user defines (e.g. 'default', 'choices').

The other change is in '_add_container_actions', the method which imports 
parents.  Here I make the copy action contingent on a 'action_copy' attribute 
of the conflict handler object (a function).  I also define this attribute for 
the 'resolve' handler.  I've made this copy contingent just to be safe w/r to 
backward compatibility, even though, I can't think of a reason for preferring 
the existing copy by reference.

In another Stackoverflow question, a poster wanted to use the same parent for 2 
subparsers, but give the 2 actions different defaults.  This copy approach 
solves that issue.

This patch needs testing and documentation changes.

----------
keywords: +patch
Added file: http://bugs.python.org/file36773/patch_1.diff

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

Reply via email to