Я пытаюсь создать программу Cli, используя Click.
У программы есть одна подгруппа, в которой она владеет командами.
Все команды в этой группе должны взять объект (который пока является классом) из группы.
Я звоню в класс только при запуске
cli monitor
Тогда для использования функций классов:
cli monitor phones
Вопросы:
После выполнения групповой команды подгруппа не может распознать класс.
даже если передан контекст.
Любой другой способ вызвать класс, а затем запустить другие подкоманды, а затем проверить, была ли вызвана подкоманда? есть идеи?
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)
Я хочу иметь возможность загрузить класс один раз,
затем запустить подкоманды, которые содержат функции в этом классе.