В сценарии Python, использующем Click для обработки командной строки, я хотел бы изменить info_name
в глобальном контексте (чтобы изменить вывод справки).
Вот надуманный минимальный пример mycmd.py
, где я пытаюсь использовать context_settings
:
import click
CONTEXT_SETTINGS = dict(info_name="hallo")
@click.command('mycmd', context_settings=CONTEXT_SETTINGS)
@click.pass_context
def click_cli(ctx):
pass
click_cli()
Однако, когда я запускаю этот скрипт с python mycmd.py --help
, я получаю трассировку:
...
File ".../click/core.py", line 639, in make_context
ctx = Context(self, info_name=info_name, parent=parent, **extra)
TypeError: type object got multiple values for keyword argument 'info_name'
Так что проблема в том, что аргументы в **extra
(на этом заканчиваются context_settings) не могут перезаписать жестко запрограммированный параметр info_name=info_name
. Как я могу это сделать?