argparse feature request

Neal Becker ndbecker2 at gmail.com
Fri Nov 22 13:15:34 EST 2013


Robert Kern wrote:

> 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
> 

Thanks!  Seems to work great.  It gave reasonable output for both case where I 
include 
help=...
and also without.

I have no idea how that above code works, but I guess as long as it works...




More information about the Python-list mailing list