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. Seriously, why does this still need to be a bullet point?

message is generated from your docstrings. Seriously, why does this still need to be a bullet point? Decorators can be used to reuse functionality across functions.

Clize can be extended with new parameter behavior.

Here’s an example:

from sigtools.modifiers import kwoargs from clize import run @kwoargs ( 'no_capitalize' ) # turns no_capitalize into a keyword-only parameter # on Python 2 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:

$ pip install --user clize $ python 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: