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


Groups > comp.lang.python > #60244 > unrolled thread

Re: argparse feature request

Started byRobert Kern <robert.kern@gmail.com>
First post2013-11-22 17:33 +0000
Last post2013-11-22 17:33 +0000
Articles 1 — 1 participant

Back to article view | Back to comp.lang.python

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: argparse feature request Robert Kern <robert.kern@gmail.com> - 2013-11-22 17:33 +0000

#60244 — Re: argparse feature request

FromRobert Kern <robert.kern@gmail.com>
Date2013-11-22 17:33 +0000
SubjectRe: argparse feature request
Message-ID<mailman.3049.1385141612.18130.python-list@python.org>
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

[toc] | [standalone]


Back to top | Article view | comp.lang.python


csiph-web