Textualize/trogon

Nicer handling of callable defaults

chrisjsewell opened this issue · 1 comments

Currently, if you have an option that sets a callable default, it will simply show the str format of it, e.g. if you have:

def my_default():
    return "hi"

@click.command()
@click.option('-o', default=my_default)
def command(option): ...

it will show as <function my_default at 0x10f0fb040>

Obviously, it would be nice if there was a better representation thanks (or just no default was shown)

This becomes a bigger issue if used with a click.Choice because the string representation of the function object is obviously not contained in the allowed values: InvalidSelectValueError: Illegal select value '<function <lambda> at 0x7f426eb0b100>'