plac, the easiest command line arguments parser in the world
Anjum Naseer
eggheadcafe at anjum.otherinbox.com
Sun Feb 6 09:41:35 EST 2011
You may be interested in a little Python module I wrote to make handling of command line arguments even easier (open source and free to use) - http://freshmeat.net/projects/commando
> On Wednesday, June 02, 2010 12:37 AM 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! ;)
>> On Wednesday, June 02, 2010 4:28 AM Tim Golden wrote:
>> On 02/06/2010 05:37, Michele Simionato wrote:
>>
>> I like it. I am 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 have always found the existing
>> offerings just a little too much work to bother with.
>> I will give plac a run and see how it behaves.
>>
>> Thanks
>>
>> TJG
>>> On Wednesday, June 02, 2010 4:43 AM Paul Rubin wrote:
>>> Tim Golden <mail at timgolden.me.uk> writes:
>>>
>>> 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 have figured it out a bit.
>>>> On Wednesday, June 02, 2010 4:49 AM Michele Simionato wrote:
>>>> Notice that optparse is basically useless in the use case Tim is
>>>> considering (positional arguments) since it only manages options.
>>>>> On Wednesday, June 02, 2010 4:52 AM Jean-Michel Pichavant wrote:
>>>>> Michele Simionato wrote:
>>>>> Thanks for participating.
>>>>>
>>>>> JM
>>>>>> On Wednesday, June 02, 2010 5:01 AM Stefan Behnel wrote:
>>>>>> Paul Rubin, 02.06.2010 10:43:
>>>>>>
>>>>>> Same from here. I managed to talk a Java-drilled collegue of mine into
>>>>>> writing a Python script for a little command line utility, but he needed a
>>>>>> way to organise his argument extraction code when the number of arguments
>>>>>> started to grow beyond two. I told him that there were two ways to do it:
>>>>>> do it by hand or do it right. He took the right choice and I took him to
>>>>>> the optparse docs, copied the first example into his code and we adapted it
>>>>>> a little. He just loved the beauty of it.
>>>>>>
>>>>>> Stefan
>>>>>>> On Wednesday, June 02, 2010 5:14 AM Michele Simionato wrote:
>>>>>>> a
>>>>>>> it
>>>>>>>
>>>>>>> Could you show plac to your friend? I would be curious to know what he
>>>>>>> think.
>>>>>>> Perhaps he would call out his judgment on optparse ;)
>>>>>>>> On Wednesday, June 02, 2010 6:42 AM Antoine Pitrou wrote:
>>>>>>>> By the way, could you stop naming these "optional arguments", since
>>>>>>>> positional arguments can be optional as well? It is confusing :)
>>>>>>>>
>>>>>>>> Thanks
>>>>>>>>
>>>>>>>> Antoine.
>>>>>>>>> On Wednesday, June 02, 2010 6:51 AM Tim Golden wrote:
>>>>>>>>> On 02/06/2010 11:42, Antoine Pitrou wrote:
>>>>>>>>>
>>>>>>>>> The great thing with English is that you can use nouns as
>>>>>>>>> adjectives without changing them, so you can say "option arguments"
>>>>>>>>> and "position arguments" quite happily here :)
>>>>>>>>>
>>>>>>>>> But then you run into the fact that you are having semantic arguments
>>>>>>>>> about argument semantics :(
>>>>>>>>>
>>>>>>>>> TJG
>>>>>>>>>> On Wednesday, June 02, 2010 9:06 AM J. Cliff Dyer wrote:
>>>>>>>>>> +1
>>>>>>>>>>
>>>>>>>>>> Options are options, arguments are arguments. An optional argument is
>>>>>>>>>> not an option. It is an argument that can be left out.
>>>>>>>>>>> On Wednesday, June 02, 2010 9:46 AM Michele Simionato wrote:
>>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>> It seems I have to take that claim back. A few hours after the
>>>>>>>>>>> announce I was pointed out to http://pypi.python.org/pypi/CLIArgs
>>>>>>>>>>> which, I must concede, is even easier to use than plac. It seems
>>>>>>>>>>> everybody has written its own command line arguments parser!
>>>>>>>>>>>> On Wednesday, June 02, 2010 8:51 PM alex23 wrote:
>>>>>>>>>>>> I think I still find opterator[1] to be simpler and clearer. No magic
>>>>>>>>>>>> global variables, no spooky behaviour with the main function, just a
>>>>>>>>>>>> decorator and docstring.
>>>>>>>>>>>>
>>>>>>>>>>>> 1: http://github.com/buchuki/opterator
>>>>>>>>>>>>> On Thursday, June 03, 2010 11:28 PM Michele Simionato wrote:
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>> The second release is out. I have added the recognition of keyword
>>>>>>>>>>>>> arguments, improved the formatting of the help message, and added many
>>>>>>>>>>>>> tests.
>>>>>>>>>>>>>> On Friday, June 04, 2010 8:48 PM Kenny Meyer wrote:
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I like this approach to command-line argument parsing! Thanks for
>>>>>>>>>>>>>> sharing your work.
>>>>>>>>>>>>>> Submitted via EggHeadCafe
>>>>>>>>>>>>>> WCF Generic DataContract object Serializer
>>>>>>>>>>>>>> http://www.eggheadcafe.com/tutorials/aspnet/59ae2b9e-a3be-4cd5-a0ef-939a7abbdc3a/wcf-generic-datacontract-object-serializer.aspx
More information about the Python-list
mailing list