Why does my use of click.argument produce “got an unexpected keyword argument ‘help’?

I run into this again and again because the trace output does not correspond to the parameter causing the error. Notice ArgumentClass in the trace, that’s your hint.

‘help’ is an acceptable parameter to @click.option. The click library prefers, however, that you document your own arguments. The @click.argument help parameter is causing this exception.

This code works: (notice the lack of , help="start|stop|restart" in @click.argument)

import click

@click.command()
@click.argument('command', required=1)
@click.option('--debug/--no-debug', default=False, help="Run in foreground")
def main(command, debug):
    """ COMMAND: start|stop|restart """
    print (command)
    print (debug)

if __name__ == '__main__':
        main()

Output:

$ python3 foo.py start
start
False

Help Output:

Usage: test.py [OPTIONS] COMMAND

  COMMAND: start|stop|restart

Options:
  --debug / --no-debug  Run in foreground
  --help                Show this message and exit.

Leave a Comment

File not found.