Рефакторинг аргументов @click.option() ⇐ Python
-
Гость
Рефакторинг аргументов @click.option()
Скажем, у меня есть это (минимальный пример из более крупного сценария):
импортировать клик @click.command() @click.option('--foo', требуется=True) def bar1(foo: str) -> Нет: print(f"bar1: {foo}") @click.command() @click.option('--foo', требуется=True) def bar2(foo: str) -> Нет: print(f"bar2: {foo}") если __name__ == '__main__': bar1() # на самом деле они вызываются из раздела поэтических сценариев в pyproject.toml # бар2() Я бы хотел избежать повторения одной и той же опции --foo с одинаковыми аргументами как для bar1, так и для bar2. Может быть, что-то вроде
@click.option(*ClickOptions.foo) но это не работает, поскольку опция foo также принимает аргумент ключевого слова required=True. Мне бы хотелось избежать такого разделения:
@click.option(*ClickOptions.foo.args, **ClickOptions.foo.kwargs) Есть ли элегантный способ сделать это?
Скажем, у меня есть это (минимальный пример из более крупного сценария):
импортировать клик @click.command() @click.option('--foo', требуется=True) def bar1(foo: str) -> Нет: print(f"bar1: {foo}") @click.command() @click.option('--foo', требуется=True) def bar2(foo: str) -> Нет: print(f"bar2: {foo}") если __name__ == '__main__': bar1() # на самом деле они вызываются из раздела поэтических сценариев в pyproject.toml # бар2() Я бы хотел избежать повторения одной и той же опции --foo с одинаковыми аргументами как для bar1, так и для bar2. Может быть, что-то вроде
@click.option(*ClickOptions.foo) но это не работает, поскольку опция foo также принимает аргумент ключевого слова required=True. Мне бы хотелось избежать такого разделения:
@click.option(*ClickOptions.foo.args, **ClickOptions.foo.kwargs) Есть ли элегантный способ сделать это?