将帮助参数添加到@ app.cli.command()

时间:2019-03-07 15:20:42

标签: 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 个答案:

答案 0 :(得分:3)

点击不支持将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不会尝试自行编写。

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处理此问题的方式。