click-didyoumean 0.3.1


pip install click-didyoumean

  Latest version

Released: Mar 24, 2024


Meta
Author: Timo Furrer
Requires Python: >=3.6.2

Classifiers

License
  • OSI Approved :: MIT License

Programming Language
  • Python :: 3
  • Python :: 3.7
  • Python :: 3.8
  • Python :: 3.9
  • Python :: 3.10
  • Python :: 3.11
  • Python :: 3.12

Latest version released on PyPi Build status of the master branch Package license

Enable git-like did-you-mean feature in click.

It’s as simple as this:

import click
from click_didyoumean import DYMGroup

@click.group(cls=DYMGroup)
def cli():
    ...

Demo

Usage

Install this extension with pip:

pip install click-didyoumean

Use specific did-you-mean group class for your cli:

import click
from click_didyoumean import DYMGroup

@click.group(cls=DYMGroup)
def cli():
    pass

@cli.command()
def foo():
    pass

@cli.command()
def bar():
    pass

@cli.command()
def barrr():
    pass

if __name__ == "__main__":
    cli()

Or you it in a CommandCollection:

import click
from click_didyoumean import DYMCommandCollection

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

@cli1.command()
def foo():
    pass

@cli1.command()
def bar():
    pass

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

@cli2.command()
def barrr():
    pass

cli = DYMCommandCollection(sources=[cli1, cli2])

if __name__ == "__main__":
    cli()

Change configuration

There are two configuration for the DYMGroup and DYMCommandCollection:

Parameter

Type

Default

Description

max_suggestions

int

3

Maximal number of did-you-mean suggestions

cutoff

float

0.5

Possibilities that don’t score at least that similar to word are ignored.

Examples

@cli.group(cls=DYMGroup, max_suggestions=2, cutoff=0.7)
def cli():
    pass

... or ...

cli = DYMCommandCollection(sources=[cli1, cli2], max_suggestions=2, cutoff=0.7)

Wheel compatibility matrix

Platform Python 3
any

Files in release

Extras: None
Dependencies:
click (>=7)