On 2013-11-22 18:15, Neal Becker wrote:
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...

Just take a look at the implementation of HelpFormatter._format_action() and look for where my monkeypatch would change the logic. It took me just a few minutes to figure out how to do it in the first place. There really isn't anything tricky going on.

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

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to