Skip to content

Provide suggestions for misspelled subcommands #2764

@dionhaefner

Description

@dionhaefner

Example app:

import click

@click.group()
def cli():
    pass

@cli.command()
@click.option("--name", default="World", help="Name of the person to greet.")
def hello(name):
    click.echo(f"Hello, {name}!")

@cli.command()
def goodbye():
    click.echo("Goodbye!")

if __name__ == "__main__":
    cli()

Providing suggestions works well for options:

$ python clickfoo.py hello --namee
Usage: clickfoo.py hello [OPTIONS]
Try 'clickfoo.py hello --help' for help.

Error: No such option: --namee Did you mean --name?

But not for subcommands:

$ python clickfoo.py hellow
Usage: clickfoo.py [OPTIONS] COMMAND [ARGS]...
Try 'clickfoo.py --help' for help.

Error: No such command 'hellow'.

Desired output:

$ python clickfoo.py hellow
Usage: clickfoo.py [OPTIONS] COMMAND [ARGS]...
Try 'clickfoo.py --help' for help.

Error: No such command 'hellow'. Did you mean `hello`?

Is this something that can be done with click?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions