我在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".有人可以告诉我如何处理这种情况.我不想禁用片状.
有两件事让我烦恼.首先是当我在一行上输入超过80个字符时Flake8给出的警告.第二个是我尚未使用我导入的模块名称时收到的警告.我查看了终端中使用Flake8的所有文档.没用
flake8 --ignore=E402
flake8 --max-line-length=120
Run Code Online (Sandbox Code Playgroud)
这不起作用.至少VS Code没有显示任何效果.
该忽略错误文档目前列出忽视了特定线路上的特定错误的方法:
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
在此代码段中,
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 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违规时保持此功能?
目前推荐的用“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 警告将是处理此问题的一种方法?
我在运行 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) 我试图只忽略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)
快速搜索只产生如何忽略全局或整个文件。这不是我想要的,因为文件中的其他函数如果太复杂,我确实想捕获。有谁知道我该如何解决我的问题?
有没有办法flake8
只忽略整个文件的特定规则?具体来说,我只想忽略F401
整个文件。
我有一个文件,比如__init__.py
我在其中导入从未在该文件中使用过的符号。我宁愿不添加# noqa
到每一行。我可以添加# flake8: noqa
到文件的开头,但这会忽略所有规则。我想忽略只是该F401
规则。
我正在使用 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 中每个文件忽略设置的正确语法是什么?