feedback on function introspection in argparse

Carl Banks pavlovevidence at
Sun Nov 8 00:33:40 CET 2009

On Nov 7, 2:45 pm, Yuv <ubershme... at> wrote:
> This was posted to the argparse mailing list by Steven Bethard and now
> we'd like some feedback from comp.lang.python.
> We now have a branch[5] of argparse that supports an ````
> function[6] which does
> some function introspection to build a command line parser from a
> function definition:
> ------------------------------ ------------------------------
> import argparse
> def func(foo, bar, baz):
>    """A function that foo's a bar with a baz.
>    foo - The foo
>    bar - The bar to be foo'd
>    baz - The baz with which to foo.
>    """
>    print foo, bar, baz
> if __name__ == '__main__':
> ------------------------------ cmdline ------------------------------
> $ -h
> usage: [-h] foo bar baz
> A function that foo's a bar with a baz.
> positional arguments:
>  foo         The foo
>  bar         The bar to be foo'd
>  baz         The baz with which to foo.
> optional arguments:
>  -h, --help  show this help message and exit
> ----------------------------------------------------------------------
> I'd love to hear some feedback on this. At the moment, the code can
> introspect argument names, types from defaults, types from annotations
> (in Python 3), help messages from docstrings, and knows how to convert
> multiple functions into subcommands. The code's compatible and tested
> on python 2.3 - 3.1. There are probably more things we could support
> [7], but I'd like to get some feedback on what we have so
> far. Some specific questions:
> * Do you think this is worth including in argparse?
> * Would you use the current ```` API in your own code?
> * If you wouldn't use it as-is, what additional features/modifications
> would you require?

Looks quite useful.

I am not sure I like the name "run", seems to short and innocent for a
function this magical.

Is the docstring expected to be formatted according to some
convention?  I don't recognize a docstring convention in the example,
but then I don't bother with them much in my own code, that's why I

Carl Banks

More information about the Python-list mailing list