clize: Turn functions into command-line interfaces

Clize is an argument parser for Python. You can use Clize as an alternative to argparse if you want an even easier way to create command-line interfaces.

With Clize, you can:

  • Create command-line interfaces by creating functions and passing them to clize.run.

  • Enjoy a CLI automatically created from your functions’ parameters.

  • Bring your users familiar --help messages generated from your docstrings.

  • Reuse functionality across multiple commands using decorators.

  • Extend Clize 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.

    :param name: If specified, only greet this person.
    :param 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!

While we use Python 3 syntax in this example, Clize is fully compatible with Python 2.7.

Interested?

Here is the full table of contents:

The user reference lists all capabilities of each kind of parameter. The API reference comes in handy if you’re extending clize.

Information on how Clize is organized as a project.