单击:尝试将类从命令传递给子命令

时间:2019-05-15 16:32:05

标签: python class click subcommand

im试图使用Click制作一个cli程序。 该程序有一个子组,它拥有命令。 该组下的所有命令都必须从该组中获取对象(现在是一个类)。

我仅在运行时才调用类

cli monitor

然后使用类函数:

cli monitor phones

问题:

  1. 运行group命令后,子组无法识别该类。 即使已传递上下文。

  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)

我希望能够一次加载课程, 然后运行包含此类中的功能的子命令。

0 个答案:

没有答案