selectやrangeを使えば大抵にバリデーションはできますが
自前のバリデーションも実行できます。
実際のところ
0以上、奇数という場合は以下のように
import click def validate_count(ctx, param, value): if value < 0 or value % 2 != 0: raise click.BadParameter('Should be a positive, even integer.') return value @click.command() @click.option('--count', default=2, callback=validate_count, help='A positive even number.') def cli(count, foo, url): click.echo('count: %s' % count)