argparse feature request

Robert Kern robert.kern at gmail.com
Fri Nov 22 18:33:19 CET 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