Метод pass_context
Метод pass_context применяется к декоратору команды Click и позволяет функции-обработчику получить доступ к объекту контекста ctx. Контекст содержит информацию о текущей команде, её параметрах, родительских командах и других данных. Метод не принимает параметров и возвращает декорированную функцию.
Синтаксис
@click.command()
@click.pass_context
def command_name(ctx):
pass
Пример
Давайте создадим простую команду с использованием pass_context и выведем имя команды:
import click
@click.command()
@click.pass_context
def hello(ctx):
click.echo(f'Command name: {ctx.command.name}')
if __name__ == '__main__':
hello()
Результат выполнения команды:
python app.py
Command name: hello
Пример
Давайте передадим данные из родительской группы в дочернюю команду через контекст:
import click
@click.group()
@click.pass_context
def cli(ctx):
ctx.obj = {'user': 'abcde'}
@cli.command()
@click.pass_context
def show(ctx):
click.echo(f'User: {ctx.obj["user"]}')
if __name__ == '__main__':
cli()
Результат выполнения команды:
python app.py show
User: abcde
Смотрите также
-
класс
Click,
который предоставляет основные инструменты для создания CLI -
метод
command,
который создаёт новую команду -
метод
group,
который создаёт группу команд -
метод
make_pass_decorator,
который создаёт собственный декоратор для передачи контекста