首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python: pyflakes不解释noqa注释

Python: pyflakes不解释noqa注释
EN

Stack Overflow用户
提问于 2020-03-30 20:24:26
回答 1查看 597关注 0票数 2

关于pyflakesnoqa的评论,我有些奇怪的地方。

我有一个类似于以下类(MyExample)的类:

  • 它是名为pyflakes_f811_test的目录中的唯一文件。
  • 它只继承了abc.ABC
  • 我使用typing.overload重载类中的方法。

从命令行消息redefinition of unused 'enter_yes_no' from line 25调用pyflakes。因此,我添加了# noqa: F811注释,但是消息并没有消失。

我的问题

  • 有人知道这是怎么回事吗?
  • 是否有任何已知的原因可以发生这种情况?
  • 关于调试这个有什么建议吗?

源代码

名称:pyflakes_f811_overload.py

代码语言:javascript
复制
#!/usr/bin/env python3

"""Testing pyflakes F811."""


from abc import ABC
from enum import Enum
from typing import overload, Union


class YesNoOptions(Enum):
    """Enum representing basic states of a yes/no."""

    YES = "YES"
    NO = "NO"


class MyExample(ABC):  # pylint: disable=too-few-public-methods
    """Example class."""

    # pylint: disable=no-self-use
    @overload
    def enter_yes_no(self, input_: YesNoOptions):
        """Enter yes/no using an enum."""
        ...

    # pylint: disable=no-self-use
    @overload  # noqa: F811
    def enter_yes_no(self, input_: str):
        """Enter yes/no using a string."""
        ...

    def enter_yes_no(self, input_: Union[YesNoOptions, str]):  # noqa: F811
        """Enter yes/no."""
        if isinstance(input_, str):
            parsed_input = input_.upper()
        elif isinstance(input_, YesNoOptions):
            parsed_input = input_.value
        else:
            raise NotImplementedError(
                f"Did not implement yes/no parsing for input {repr(input_)} of "
                f"type {type(input_)}."
            )

        print(f"User entered: {parsed_input}")

复制

pyflakes通过命令行调用,如下所示:

代码语言:javascript
复制
(pyflakes_venv) ➜  pyflakes_f811_test pyflakes ./pyflakes_f811_overload.py
./pyflakes_f811_overload.py:28: redefinition of unused 'enter_yes_no' from line 22
./pyflakes_f811_overload.py:33: redefinition of unused 'enter_yes_no' from line 28

包版本:

代码语言:javascript
复制
python==3.6.5
pycodestyle==2.4.0
pyflakes==2.1.1
prospector==1.2.0
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-02 19:18:35

Pyflake不支持忽略特定行的noqa注释。您可以在他们的源代码https://github.com/PyCQA/pyflakes中检查,没有提到noqanoqa特性只存在于flake8中。由于flake8使用Pyflake,我建议您切换到flake8:

代码语言:javascript
复制
pip install flake8
flake8 ./pyflakes_f811_overload.py

对于@overload装饰器的特殊问题,虽然它已经在主分支(#435)中得到了修复,但它还没有发布(截止到2020年4月02号)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60938927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档