clize: Turn functions into command-line interfaces

Clize is an argument parser for Python. It focuses on minimizing the effort required to create them:

  • Command-line interfaces are created by passing functions to clize.run.
  • Parameter types are deduced from the functions’ parameters.
  • A --help message is generated from your docstrings.
  • Decorators can be used to reuse functionality across functions.
  • Clize can be extended with new parameter behavior.

Here’s an example:

from clize import run

def hello_world(name=None, *, no_capitalize=False):
    """Greets the world or the given name.

    name: If specified, only greet this person.

    no_capitalize: Don't capitalize the given name.
    """
    if name:
        if not no_capitalize:
            name = name.title()
        return 'Hello {0}!'.format(name)
    return 'Hello world!'

if __name__ == '__main__':
    run(hello_world)

run takes the function and automatically produces a command-line interface for it:

$ python3 -m pip install --user clize
$ python3 examples/hello.py --help
Usage: examples/hello.py [OPTIONS] [name]

Greets the world or the given name.

Positional arguments:
  name              If specified, only greet this person.

Options:
  --no-capitalize   Don't capitalize the give name.

Other actions:
  -h, --help        Show the help
$ python hello.py
Hello world!
$ python hello.py john
Hello John!
$ python hello.py dave --no-capitalize
Hello dave!

Interested?

Here is the full table of contents: