добавление параметра справки в @ app.cli.command () - PullRequest
0 голосов
/ 07 марта 2019

Итак, у меня работает следующая команда 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 Ответ

3 голосов
/ 07 марта 2019

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}!")

Вы можете найти обсуждения и некоторые примеры добавления справки по аргументам в трекере проблем Click.: https://github.com/pallets/click/pull/1051. В настоящее время нет планов по изменению того, как Click обрабатывает это.

...