From: Michele Simionato on
I would like to announce to the world the first public release of
plac:

http://pypi.python.org/pypi/plac

Plac is a wrapper over argparse and works in all versions of
Python starting from Python 2.3 up to Python 3.1.

With blatant immodesty, plac claims to be the easiest to use command
line arguments parser module in the Python world. Its goal is to
reduce the
learning curve of argparse from hours to minutes. It does so by
removing the need to build a command line arguments parser by hand:
actually it is smart enough to infer the parser from function
annotations.

Here is a simple example (in Python 3) to wet your appetite:

$ cat example.py
def main(arg: "required argument"):
"do something with arg"
print('Got %s' % arg)

if __name__ == '__main__':
import plac; plac.call(main) # passes sys.argv[1:] to main

$ python example.py -h
usage: example.py [-h] arg

do something with arg

positional arguments:
arg required argument

optional arguments:
-h, --help show this help message and exit


$ python example.py
usage: example.py [-h] arg
example.py: error: too few arguments

$ python example.py arg
Got arg

$ python example.py arg1 arg2
usage: example.py [-h] arg
example.py: error: unrecognized arguments: arg2

You can find in the documentation a lot of other simple and not so
simple
examples:

http://micheles.googlecode.com/hg/plac/doc/plac.html


Enjoy!

Michele Simionato

P.S. answering an unspoken question: yes, we really needed yet
another
command line arguments parser! ;)
From: Tim Golden on
On 02/06/2010 05:37, Michele Simionato wrote:
> I would like to announce to the world the first public release of
> plac:
>
> http://pypi.python.org/pypi/plac
>
> Plac is a wrapper over argparse and works in all versions of
> Python starting from Python 2.3 up to Python 3.1.

I like it. I'm a constant user of the

def main (a, b=1, c=2):
# ...

if __name__ == '__main__':
main (*sys.argv[1:])

pattern, which provides a minimally semi-self-documenting
approach for positional args, but I've always found the existing
offerings just a little too much work to bother with.
I'll give plac a run and see how it behaves.

Thanks

TJG
From: Paul Rubin on
Tim Golden <mail(a)timgolden.me.uk> writes:
> pattern, which provides a minimally semi-self-documenting
> approach for positional args, but I've always found the existing
> offerings just a little too much work to bother with.
> I'll give plac a run and see how it behaves.

After using optparse a couple of times I got the hang of it. Maybe its
docs could be organized a bit better, but it does the obvious things
conveniently once you've figured it out a bit.
From: Michele Simionato on
On Jun 2, 10:43 am, Paul Rubin <no.em...(a)nospam.invalid> wrote:
> Tim Golden <m...(a)timgolden.me.uk> writes:
> > pattern, which provides a minimally semi-self-documenting
> > approach for positional args, but I've always found the existing
> > offerings just a little too much work to bother with.
> > I'll give plac a run and see how it behaves.
>
> After using optparse a couple of times I got the hang of it.  Maybe its
> docs could be organized a bit better, but it does the obvious things
> conveniently once you've figured it out a bit.

Notice that optparse is basically useless in the use case Tim is
considering (positional arguments) since it only manages options.
From: Jean-Michel Pichavant on
Michele Simionato wrote:
> I would like to announce to the world the first public release of
> plac:
>
> http://pypi.python.org/pypi/plac
>
> Plac is a wrapper over argparse and works in all versions of
> Python starting from Python 2.3 up to Python 3.1.
>
> With blatant immodesty, plac claims to be the easiest to use command
> line arguments parser module in the Python world. Its goal is to
> reduce the
> learning curve of argparse from hours to minutes. It does so by
> removing the need to build a command line arguments parser by hand:
> actually it is smart enough to infer the parser from function
> annotations.
>
> Here is a simple example (in Python 3) to wet your appetite:
>
> $ cat example.py
> def main(arg: "required argument"):
> "do something with arg"
> print('Got %s' % arg)
>
> if __name__ == '__main__':
> import plac; plac.call(main) # passes sys.argv[1:] to main
>
> $ python example.py -h
> usage: example.py [-h] arg
>
> do something with arg
>
> positional arguments:
> arg required argument
>
> optional arguments:
> -h, --help show this help message and exit
>
>
> $ python example.py
> usage: example.py [-h] arg
> example.py: error: too few arguments
>
> $ python example.py arg
> Got arg
>
> $ python example.py arg1 arg2
> usage: example.py [-h] arg
> example.py: error: unrecognized arguments: arg2
>
> You can find in the documentation a lot of other simple and not so
> simple
> examples:
>
> http://micheles.googlecode.com/hg/plac/doc/plac.html
>
>
> Enjoy!
>
> Michele Simionato
>
> P.S. answering an unspoken question: yes, we really needed yet
> another
> command line arguments parser! ;)
>
Thanks for participating.

JM