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

    TBDNot enough information to proceed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions