标签: flake8

flake8抱怨过滤子句中的布尔比较"=="

我在mysql db表中有一个布尔字段.

# table model
class TestCase(Base):
    __tablename__ = 'test_cases'
    ...
    obsoleted = Column('obsoleted',  Boolean)
Run Code Online (Sandbox Code Playgroud)

要获得所有未经过时的测试用例的计数,可以像这样完成:

caseNum = session.query(TestCase).filter(TestCase.obsoleted == False).count()
print(caseNum)
Run Code Online (Sandbox Code Playgroud)

这很好,但是flake8报告了以下警告:

E712:与False的比较应该是"如果cond是假的:"或"如果不是cond:"

好的,我觉得这很有道理.所以将我的代码更改为:

caseNum = session.query(TestCase).filter(TestCase.obsoleted is False).count()
Run Code Online (Sandbox Code Playgroud)

要么

caseNum = session.query(TestCase).filter(not TestCase.obsoleted).count()
Run Code Online (Sandbox Code Playgroud)

但他们都不能奏效.结果始终为0.我认为filter子句不支持运算符"is"或"is not".有人可以告诉我如何处理这种情况.我不想禁用片状.

python mysql sqlalchemy flake8

46
推荐指数
3
解决办法
1万
查看次数

如何让flake8可靠地忽略VS Code中的规则?

有两件事让我烦恼.首先是当我在一行上输入超过80个字符时Flake8给出的警告.第二个是我尚未使用我导入的模块名称时收到的警告.我查看了终端中使用Flake8的所有文档.没用

flake8 --ignore=E402
flake8 --max-line-length=120
Run Code Online (Sandbox Code Playgroud)

这不起作用.至少VS Code没有显示任何效果.

flake8 visual-studio-code

41
推荐指数
5
解决办法
9966
查看次数

Flake8:忽略整个文件的特定警告

忽略错误文档目前列出忽视了特定线路上的特定错误的方法:

example = lambda: 'example'  # noqa: E731
Run Code Online (Sandbox Code Playgroud)

...以及忽略整个文件的所有错误的方法:

# flake8: noqa

from foo import unused
function_that_doesnt_exist()
x = 1+       2
Run Code Online (Sandbox Code Playgroud)

......以及通过配置或命令行选项的两种方法,可以在整个项目中全局禁用特定错误.

但是如果我想忽略整个单个文件中的特定错误怎么办- 例如,禁用有关桶文件中未使用的导入的警告,该文件只导入一堆类,以便其他包中的代码可以从中导入它们转?这些文档似乎没有暗示任何语法.可能吗?__init__.py

python flake8

39
推荐指数
3
解决办法
1万
查看次数

如何在Python 3中使用flake8?

在此代码段中,

def add(x:int, y:int) -> int:
    return x + y
Run Code Online (Sandbox Code Playgroud)

有一些函数注释只在python 3.0之后支持

当我为这个python代码执行flake8时:

$ flake8 7.3.py -vv
checking 7.3.py
def add(x: int, y: int) -> int:
return x + y
7.3.py:1:11: E901 SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我得到了无效的语法错误,但它应该是有效的语法.如何使用flake8来检查Python 3.x中仅支持的语法?

python python-3.x flake8

27
推荐指数
2
解决办法
1万
查看次数

init中导入但未使用的python pep8类

我正在使用python flake8库在python中进行PEP8检查.我__init__.py在我的一个子模块中的文件中有一个import语句,如下所示:

from .my_class import MyClass
Run Code Online (Sandbox Code Playgroud)

我在init文件中有这一行的原因是我可以从子模块导入MyClass from somemodule import MyClass而不必编写from somemodule.my_class import MyClass.

我想知道是否可以在纠正PEP8违规时保持此功能?

python pep8 flake8

26
推荐指数
3
解决办法
7319
查看次数

打破长if语句的推荐方法是什么?(二元运算符后的 W504 换行符)

目前推荐的用“and”和“or”运算符打破一长串if语句的推荐方法是什么?

第一个选项

使用下面的样式(来自 PEP8)和 flake8 我收到警告:二元运算符后的 W504 换行符:

if (this_is_one_thing and
    that_is_another_thing):
    do_something()
Run Code Online (Sandbox Code Playgroud)

第二个选项

if (this_is_one_thing
    and that_is_another_thing):
    do_something()
Run Code Online (Sandbox Code Playgroud)

现在我在二元运算符之前收到警告 W503 换行符。第二个似乎符合PEP8 的这个建议

我试图找到答案,但我仍然不确定。我认为也许使用第二个选项并禁用 W503 警告将是处理此问题的一种方法?

python pep8 python-3.x flake8

25
推荐指数
2
解决办法
1万
查看次数

Flake8 提供给“忽略”选项的错误代码“#”与“^[AZ]{1,3}[0-9]{0,3}$”不匹配

我在运行 git push 时遇到了这个问题。

$ flake8 --config setup.cfg Traceback (most recent call last):   File "/usr/local/bin/flake8", line 8, in <module>
    sys.exit(main())   File "/usr/local/lib/python3.8/site-packages/flake8/main/cli.py", line 23, in main
    app.run(argv)   File "/usr/local/lib/python3.8/site-packages/flake8/main/application.py", line 198, in run
    self._run(argv)   File "/usr/local/lib/python3.8/site-packages/flake8/main/application.py", line 186, in _run
    self.initialize(argv)   File "/usr/local/lib/python3.8/site-packages/flake8/main/application.py", line 165, in initialize
    self.plugins, self.options = parse_args(argv)   File "/usr/local/lib/python3.8/site-packages/flake8/options/parse_args.py", line 53, in parse_args
    opts = aggregator.aggregate_options(option_manager, cfg, cfg_dir, rest)   File "/usr/local/lib/python3.8/site-packages/flake8/options/aggregator.py", line 30, in aggregate_options
    parsed_config = config.parse_config(manager, cfg, cfg_dir)   File "/usr/local/lib/python3.8/site-packages/flake8/options/config.py", line 131, in parse_config …
Run Code Online (Sandbox Code Playgroud)

flake8 cicd

23
推荐指数
1
解决办法
5300
查看次数

flake8 - 忽略函数的警告

我试图只忽略C901 too complex一个函数的警告。我已经尝试了几乎所有# noqa: C901我能看到的排列,但仍然出现错误。我会认为# noqa函数(方法?)上面的注释就足够了。我什至尝试将评论与def声明放在同一行,如下所示:

class Klass():

    def my_complex_method(self):  # noqa: C901
        """
        lots of if's and return's
        """
Run Code Online (Sandbox Code Playgroud)

这是我收到的消息的示例flake8

src/test/_resource.py:147:5: C901 'Resource.render' is too complex (22)
    def render(self, request):  # noqa: C901
    ^
Run Code Online (Sandbox Code Playgroud)

快速搜索只产生如何忽略全局或整个文件。这不是我想要的,因为文件中的其他函数如果太复杂,我确实想捕获。有谁知道我该如何解决我的问题?

python flake8

22
推荐指数
4
解决办法
1万
查看次数

flake8:仅忽略整个文件中的 F401 规则

有没有办法flake8只忽略整个文件的特定规则?具体来说,我只想忽略F401整个文件。

我有一个文件,比如__init__.py我在其中导入从未在该文件中使用过的符号。我宁愿不添加# noqa到每一行。我可以添加# flake8: noqa到文件的开头,但这会忽略所有规则。我想忽略只是F401规则。

python flake8

22
推荐指数
2
解决办法
5972
查看次数

使用 pyproject.toml 和 flake8 指定每个文件忽略

我正在使用 flake8 (与 flakehell 一起使用,但这不会干扰)并将其配置保存在pyproject.toml文件中。我想添加一个per-file-ignores配置,但没有任何效果,并且没有关于如何在 toml 文件中格式化它的文档。

Flake8 文档仅显示“本机”配置文件格式:

per-file-ignores =
    project/__init__.py:F401
    setup.py:E121
    other_project/*:W9
Run Code Online (Sandbox Code Playgroud)

pyproject.toml 没有描述/示例。

我试过:

per-file-ignores=["file1.py:W0621", "file2.py:W0621"]
Run Code Online (Sandbox Code Playgroud)

per-file-ignores={"file1.py" = "W0621", "file2.py" = "W0621"}
Run Code Online (Sandbox Code Playgroud)

两者都默默地失败并且没有任何效果(仍然发出警告)。

使用 pyproject.toml 时,flake8/flakehell 中每个文件忽略设置的正确语法是什么?

python configuration lint flake8

22
推荐指数
2
解决办法
2万
查看次数