Python:pyflakes不解释noqa注释
我对Python:pyflakes不解释noqa注释,python,pyflakes,pycodestyle,Python,Pyflakes,Pycodestyle,我对pyflakes和noqa评论有点奇怪 我有一个类似于下面的类(MyExample): 它是名为pyflakes\u f811\u test的目录中唯一的文件 它只继承自abc.abc 我使用typing.重载来重载类中的方法 从命令行消息调用pyflakes重新定义第25行未使用的“enter_yes_no”。因此,我添加了#noqa:F811注释,但消息不会消失 我的问题: 有人知道这里发生了什么吗 是否有任何已知的原因会发生这种情况 关于调试这个有什么提示吗 源代码 名称:p
pyflakes
和noqa
评论有点奇怪
我有一个类似于下面的类(MyExample
):
- 它是名为
的目录中唯一的文件pyflakes\u f811\u test
- 它只继承自
abc.abc
- 我使用
typing.重载来重载类中的方法
#noqa:F811
注释,但消息不会消失
我的问题:
- 有人知道这里发生了什么吗
- 是否有任何已知的原因会发生这种情况
- 关于调试这个有什么提示吗
源代码 名称:
pyflakes\u f811\u重载.py
#/usr/bin/env蟒蛇3
“”“正在测试pyflakes F811。”“”
从abc进口abc
从枚举导入枚举
从输入import重载开始,输入Union
类选项(枚举):
“”“表示是/否的基本状态的枚举。”
YES=“YES”
否=“否”
MyExample类(ABC):#pylint:disable=公共方法太少
“”“示例类。”“”
#pylint:disable=无自用
@超载
def输入\是\否(自身,输入\是否选项):
“”“使用枚举输入是/否。”“”
...
#pylint:disable=无自用
@过载#noqa:F811
def输入_yes_no(自我,输入:str):
“”“使用字符串输入是/否。”“”
...
def输入_yes_no(self,input_:Union[YesNoOptions,str]):#noqa:F811
“”“输入是/否。”
如果isinstance(输入,str):
解析的输入=输入上()
elif isinstance(输入,是,否选项):
解析的输入=输入值
其他:
引发未实现的错误(
f“未对的输入{repr(input_u1;)}执行是/否解析”
f“类型{type(输入)}”
)
打印(f“用户输入:{parsed_input}”)
复制
pyflakes
通过以下命令行调用:
(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
软件包版本:
python==3.6.5
pycodestyle==2.4.0
pyflakes==2.1.1
prospector==1.2.0
Pyflakes不支持忽略特定行的
noqa
注释。您可以检查他们的源代码,确保没有提到noqa
。noqa
功能仅在中。由于flake8使用Pyflakes,我建议您切换到flake8:
pip install flake8
flake8 ./pyflakes_f811_overload.py
对于
@overload
装饰程序的特殊问题,尽管它已在主分支()中修复,但尚未发布(截至2020年4月2日)。使用代码示例、.prospector.yml
的配置以及您提供的包版本复制lint警告,但证明是不成功的。你能提供一个可复制的设置吗?@OluwafemiSule I更新了问题prospector
,使其更具可复制性。现在有什么想法,你能复制吗?在某个时候,你可能想考虑这样一个重载函数所提供的灵活性是否真的值得让你的工具接受它。@你确信PyFLACKS支持<代码> NOQA < /代码>注释吗?我在任何地方都找不到这个文件。您可能想改用flake8并查看此帖子:在这种情况下,要求调用方使用输入“是”或“否”(YesNoOptions)(“是”)
,而不是直接支持输入“是”或“否”(“是”)
,这真的太过分了吗?记住一个被接受的类型要比记住哪个k
类型被接受容易得多。(“我是否可以直接传递True
,或者我是否必须将其转换为“是”
或YesNoOptions.YES
首先?”)同意这一点: