argparse feature request
Robert Kern
robert.kern at gmail.com
Fri Nov 22 12:33:19 EST 2013
On 2013-11-22 16:52, Neal Becker wrote:
> Robert Kern wrote:
>
>> On 2013-11-22 14:56, Neal Becker wrote:
>>> I use arparse all the time and find it serves my needs well. One thing I'd
>>> like
>>> to see. In the help message, I'd like to automatically add the default
>>> values.
>>> What I'd like to see is:
>>>
>>> --size SIZE [2000] <<< the default value is displayed
>>
>> Use formatter_class=argparse.ArgumentDefaultsHelpFormatter
>>
>>
>> http://docs.python.org/2/library/argparse#argparse.ArgumentDefaultsHelpFormatter
> Thanks! Almost perfect. Problem is, I don't usually bother to add help='help
> me' options. It seems that ArgumentDefaultsHelpFormatter doesn't do anything
> unless help='blah' option is used. Not sure what to do about that. Since
> python test_freq3.py -h
> produces useful messages without my adding help=... everywhere, it'd be nice
> if ArgumentDefaultsHelpFormatter would work here.
Patches are welcome, I am sure. Implement a HelpFormatter that does what you
want. _format_action() is where the relevant logic is. Try something like this,
and modify to suit.
class BeckerDefaultFormatter(argparse.ArgumentDefaultsHelpFormatter):
def _format_action(self, action):
monkeypatched = False
if action.default is not None and action.help is None:
# Trick the default _format_action() method into writing out
# the defaults.
action.help = ' '
monkeypatched = True
formatted = super(BeckerDefaultFormatter, self)._format_action(action)
if monkeypatched:
action.help = None
return formatted
--
Robert Kern
"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
More information about the Python-list
mailing list