Щелчок Python и обратный вызов опции --help не хотят

У меня есть следующий код клика:

@click.group(invoke_without_command=True)
def cli():
    click.echo("Starting CallFlow....")
    setup_logging()


# ##################----GEN---##################
@cli.command(help="a sub command")
@click.option(
    "--folder", help="Tests folder path", type=str, nargs=1,
)
def sub1(folder):
    # run some code here

Запуск моей проги, которая использует указанный выше cli, следующим образом:

prog-name --help

показывает мне правильный текст справки:

Usage: prog-name [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  sub1       Help text

Но бег

prog-name sub1 --help --folder

Я получаю сообщение об ошибке, что для папки требуется такой аргумент:

Error: --folder option requires an argument

Я думал, что --help является нетерпеливым параметром и оценивается первым. разве это не должно создавать текст справки?


person Apostolos    schedule 12.03.2020    source источник


Ответы (1)


Из документации концепция рвение относится только к порядку исполнения. Обычно параметры командной строки обрабатываются в том порядке, в котором они определены; создание таких опций, как --help и --version, означает, что они будут оцениваться в первую очередь.

Если бы --help не стремился, ваш пример требовал бы, чтобы --folder всегда передавался первым, например:

prog-name sub1 --folder test_folder --help
person dspencer    schedule 12.03.2020
comment
Поэтому я предполагаю, что нет способа заставить --help переопределить любую другую команду. например, если я запускаю git remote add -t, я получаю error: switch -t requires a value, но если я запускаю git remote add -t --help, переопределяет -t и показывает меню справки - person Apostolos; 13.03.2020
comment
Если другие предоставленные опции недействительны, например. --folder без значения, то кажется, что щелчок вызовет ошибку независимо от порядка с --help - person dspencer; 13.03.2020
comment
Насколько я понимаю, порядок выполнения означает, что --help выполняется первым, как нетерпеливые опции. Итак, он должен показать --help и выйти правильно? - person Apostolos; 13.03.2020
comment
Похоже, что проверка всех параметров командной строки (присутствует ли значение?) может иметь приоритет - person dspencer; 13.03.2020
comment
Поэтому, если вам нужно такое поведение, вам нужно сделать это вручную. - person Apostolos; 13.03.2020