paul j3 added the comment:
In the attached file I tried another approach - a custom Action class. It
gives you the custom behavior now, instead of 2-3 releases in the future.
class Action2(Action):
# custom action
def __init__(self, *args, **kwargs):
super(Action2, self).__init__(*args, **kwargs)
self.default = SUPPRESS
def __call__(self, parser, namespace, values, option_string=None):
print('Action2', argparse._get_action_name(self), values)
'self.default=SUPPRESS' keeps the dest out of the namespace without affecting
help display. And as with '_HelpAction', the __call__ can do its own thing
without modifying the namespace.
One thing that this custom Action class does not do well is let you modify the
handling of the argument after it is created. For example if an argument is
created by an imported parent parser, attributes like 'dest' and 'default' can
be changed after the fact, but the argument class can't.
In http://bugs.python.org/issue14191 I wrestled with the issue of
temporarily disabling subsets of the arguments, first the positionals, and then
the optionals, so I could run 'parse_known_args' separately on the two groups.
For optionals it was enough to ensure that 'required=False'. For positionals I
first used 'nargs=0', and latter enabled a 'nargs=SUPPRESS' option to suppress
them.
----------
Added file: http://bugs.python.org/file35389/issue20430.py
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue20430>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com