Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #60247

Re: argparse feature request

From Neal Becker <ndbecker2@gmail.com>
Subject Re: argparse feature request
Date 2013-11-22 13:15 -0500
References <l6nrar$fss$1@ger.gmane.org> <l6nrrv$olk$1@ger.gmane.org> <l6o23q$96u$1@ger.gmane.org> <l6o4gk$76b$1@ger.gmane.org>
Newsgroups comp.lang.python
Message-ID <mailman.3052.1385144149.18130.python-list@python.org> (permalink)

Show all headers | View raw


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

Back to comp.lang.python | Previous | Next | Find similar | Unroll thread


Thread

Re: argparse feature request Neal Becker <ndbecker2@gmail.com> - 2013-11-22 13:15 -0500

csiph-web