【问题标题】:Click and pylint点击和pylint
【发布时间】:2018-09-15 17:43:02
【问题描述】:

这是一个导致 pylint 错误的 click 用法的简单示例:

@click.command()
@click.option('--option', is_flag=True)
def foo(option):
    click.echo(option)

foo()

foo 没有收到任何参数,所以我得到 E1120(无参数值)。 所以我这样做了:

@click.command()
@click.option('--option', is_flag=True)
def foo(**kwargs):
    click.echo(kwargs["option"])

foo()

有没有更好的方法? 或者一种在 Visual Studio Code 中仅对一行禁用 pylint 的方法?

【问题讨论】:

    标签: python python-3.x visual-studio-code pylint python-click


    【解决方案1】:

    @click.command 装饰器编辑你的函数参数,但 pylint 不知道这一点,因为它实际上并没有运行你的代码。

    我认为让你的代码变得奇怪只是为了让 pylint 高兴是没有意义的。相反,忽略它,或添加注释以在当前范围内禁用该警告:

    # pylint: disable=no-value-for-parameter
    

    【讨论】:

    • 感谢您的回答。但是有没有办法将此异常仅应用于 VSC 中的一行/文件?
    • 是的,将此注释添加到行尾
    • 哇!我一开始没明白。
    • 有没有办法告诉 pylint 在检查 @click-decorated 函数时总是禁用 no-value-for-parameter? (所以我不必在每个脚本中都这样做。)
    • 据我所知没有。您可以全局禁用 no-value-for-parameter,但这听起来是个坏主意。
    【解决方案2】:

    有一种方法可以避免这些错误的发生,即不使用修饰语法。这可能是@Azsgy 所说的“奇怪”:-)

    @click.option(
        "--direction",
        default="upgrade",
        type=click.Choice(["upgrade", "downgrade"]),
        help="Direction of migration upgrade/downgrade",
    )
    @click.argument("revision", default="heads")
    def _main(direction, revision):
        """Runs migrations on each of the databases."""
        pass
    
    
    main = click.command()(_main)
    
    
    if __name__ == "__main__":
        main()
    

    好不好看还有待商榷 :-)

    【讨论】:

      猜你喜欢
      • 2015-07-26
      • 1970-01-01
      • 2017-10-25
      • 1970-01-01
      • 1970-01-01
      • 2016-11-10
      • 1970-01-01
      • 1970-01-01
      • 2020-12-06
      相关资源
      最近更新 更多