title: Python’s argh library: preserve docstring formatting in help message
body: <p>While searching for faster ways to parse command-line arguments in my scripts I came across the <a href="https://pypi.python.org/pypi/argh" rel="noreferrer">argh library</a>. </p>
  
  <p>I really like the features of argh but I’ve encountered one drawback that stops me from using it, and this has to do with the default help message that gets displayed if I’m invoking the —help option:
  per default the function’s docstring is displayed on top of the arguments list. This is great, however the initial formatting is lost. See, for example, the following example script</p>
  
  <pre><code>import argh
  
  def func(foo=1, bar=True):
      """Sample function.
  
          Parameters:
              foo: float
                  An example argument.
              bar: bool
                  Another argument.
      """
      print foo, bar
  
  argh.dispatch_command(func, argv=['-h'])
  </code></pre>
  
  <p>which would result in the following output </p>
  
  <pre><code>usage: script.py [-h] [-f FOO] [-b]
  
  Sample function. Parameters: foo: float An example argument. bar: bool Another
  argument.
  
  optional arguments:
    -h, --help         show this help message and exit
    -f FOO, --foo FOO
    -b, --bar
  </code></pre>
  
  <p>Is there an (easy) way to get an output like the following?</p>
  
  <pre><code>usage: script.py [-h] [-f FOO] [-b]
  
  Sample function.
  
      Parameters:
          foo: float
              An example argument.
          bar: bool
              Another argument.
  
  optional arguments:
    -h, --help         show this help message and exit
    -f FOO, --foo FOO
    -b, --bar
  </code></pre>
  
  <p>I'd prefer to not use annotations to define the argument help messages since that would require me to alter both the function's docstring AND the help text each time there is something to change. </p>