Нажмите: Попытка передать класс от команды до подкоманды - PullRequest
1 голос
/ 15 мая 2019

Я пытаюсь создать программу Cli, используя Click. У программы есть одна подгруппа, в которой она владеет командами. Все команды в этой группе должны взять объект (который пока является классом) из группы.

Я звоню в класс только при запуске

cli monitor

Тогда для использования функций классов:

cli monitor phones

Вопросы:

  1. После выполнения групповой команды подгруппа не может распознать класс. даже если передан контекст.

  2. Любой другой способ вызвать класс, а затем запустить другие подкоманды, а затем проверить, была ли вызвана подкоманда? есть идеи?

import click
from .Monitoring_amit import Monitor

@click.group()
def cli():
    """
    Welcome to XXX,\n
    """


@cli.group(short_help="Monitor BeeHero's devices.", invoke_without_command=True)
# @click.option('--customer', prompt='customer', help='The person to greet.')
@click.pass_context
def monitor(ctx):
    if ctx.invoked_subcommand is None:
        click.echo("Configure dates to monitor:")
        start_date = input('From what date(d/m/y)?')
        start_date = datetime.datetime.strptime(start_date, "%d/%m/%Y").date()
        end_date = input('To what date(d/m/y)?')
        end_date = datetime.datetime.strptime(end_date, "%d/%m/%Y").date()
        Monitoring = Monitor(start_date, end_date)
        ctx.obj = Monitoring
    else:
        print(f"Executing {ctx.invoked_subcommand}")



@click.option('--customer', prompt='customer', help='The person to greet.')
@monitor.command(short_help="Show phones arrived")
@click.pass_obj
def phones(ctx, customer):
    ctx.obj.phonesarrived(customer)

Я хочу иметь возможность загрузить класс один раз, затем запустить подкоманды, которые содержат функции в этом классе.

...