#python #python-click
#python #python-щелчок
Вопрос:
Итак, я получил следующую команду click, работающую
from flask import Flask
app = Flask(__name__)
@app.cli.command()
def hello():
print("hello from inside flask")
затем попытался добавить к нему «справку» следующим образом:
@app.cli.command()
@app.cli.argument(help='test command to say hello from inside flask')
def hello():
print("hello from inside flask")
..но там говорилось
AttributeError: 'AppGroup' object has no attribute 'argument'
Я считаю, что это должно сработать, если у вас есть
import click
@click.option(help="use this command like this")
или
@click.argument(help="use this command like this")
Кто-нибудь знает, как заставить это работать, если у вас есть @app.cli.command()
?
Ответ №1:
Click не поддерживает передачу help
аргумента в click.argument
, только в click.option
. На это есть ссылки в нескольких местах в документах:
https://click.palletsprojects.com/en/7.x/documentation/#help-texts
Аргументы не могут быть задокументированы таким образом. Это делается для того, чтобы следовать общему соглашению инструментов Unix об использовании аргументов только для самых необходимых вещей и документировать их во вводном тексте, ссылаясь на них по имени.
https://click.palletsprojects.com/en/7.x/parameters/#differences
параметры полностью задокументированы на странице справки, аргументы — нет (это сделано намеренно, поскольку аргументы могут быть слишком специфичными для автоматического документирования)
https://click.palletsprojects.com/en/7.x/arguments/
Click также не будет пытаться документировать аргументы за вас и хочет, чтобы вы документировали их вручную, чтобы избежать уродливых страниц справки.
Вместо этого Click хотел бы, чтобы вы документировали аргументы непосредственно в строке документации команды. Это потому, что аргументы обычно более тесно интегрированы с текстом справки команды, поэтому Click не пытается написать это сам.
import click
@click.command()
@click.argument("name")
def hello(name):
"""Say hello to NAME."""
click.echo(f"Hello, {name}!")
Вы можете найти обсуждения и несколько примеров добавления аргумента help в системе отслеживания проблем Click:https://github.com/pallets/click/pull/1051. В настоящее время не планируется изменять то, как Click обрабатывает это.