Можно ли повторно использовать декораторы python @ click.option для нескольких команд? - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть два инструмента Python CLI, которые используют набор общих click.options. На данный момент общие опции дублируются:

@click.command()
@click.option('--foo', is_flag=True)
@click.option('--bar', is_flag=True)
@click.option('--unique-flag-1', is_flag=True)
def command_one():
    pass

@click.command()
@click.option('--foo', is_flag=True)
@click.option('--bar', is_flag=True)
@click.option('--unique-flag-2', is_flag=True)
def command_two():
    pass

Можно ли извлечь общие параметры в один декоратор, который можно применить к каждой функции?

1 Ответ

0 голосов
/ 27 апреля 2018

Вы можете создать свой собственный декоратор, который включает в себя общие параметры:

def common_options(function):
    function = click.option('--unique-flag-1', is_flag=True)(function)
    function = click.option('--bar', is_flag=True)(function)
    function = click.option('--foo', is_flag=True)(function)
    return function

@click.command()
@common_options
def command():
    pass
...