Hierarchical commnd line parsing / help texts

Michele Simionato michele.simionato at gmail.com
Wed Sep 28 08:45:27 EDT 2011

plac is based on argparser and it is intended to be much easier to use. See

Here is an example of usage.

$ cat vcs.py
class VCS(object):
    "A fictitious version control tool"
    commands = ['checkout', 'commit']
    def checkout(self, url):
        return 'ok'
    def commit(self):
        return 'ok'

if __name__ == '__main__':
    import plac; plac.Interpreter.call(VCS)

The line plac.Interpreter.call instantiates the VCS class by passing to it the arguments in the command line and then calls the appropriate method.

You can use the script as follows:

$ python vcs.py -h
usage: vcs.py [-h] [args [args ...]]

positional arguments:

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

$ python vcs.py checkout url
$ python vcs.py commit
plac takes care of parsing the command line, giving the correct error message if you pass wrong arguments or not enough arguments:

$ python vcs.py checkout
usage:  checkout url
 checkout: error: too few arguments

plac can also be used to write command interpreters.

More information about the Python-list mailing list