如何使用 click 根据 Python 中另一个参数的值使一个参数可选?

How to make an argument optional based upon another argument's value in Python using click?

我使用 python 中的 click 模块创建了以下 CLI 方法。

import click

@click.command()
@click.argument("name")
@click.option("--provider", "-p", default="aws", help="Cloud Provider")
@click.argument("view", required=True)

def create(name, view, provider):
   print name
   print view
   print provider

if __name__ == '__main__':
    create()

我想根据 --provider 获得的值来操作 view 选项。例如,如果 --provideraws 那么 required=True 对于 view 否则 required=False 使 view 可选,而 运行 我的代码。

不需要花哨的东西,像这样就可以了

def create(name, provider, view=None):
    if provider == "aws" and view is None:
        raise AttributeError("View is required when provider is 'aws'")