【问题标题】:How to disable E901 SyntaxError in flake8如何在 flake8 中禁用 E901 SyntaxError
【发布时间】:2017-11-15 21:15:45
【问题描述】:

我在 python 代码中有一个故意的语法错误。 python 文件是一个模板,其中某些值稍后将替换为真正的 python 代码。在检查期间应忽略 python 的这些部分。

复制样本

from --syntax-error-- import --syntax--error--  # noqa
# second attempt:
from --syntax-error2-- import --syntax--error2--  # noqa: E901

我正在尝试禁用 E901,但 noqa 命令被忽略。 是否可以禁用任何其他方式?

Flake8 版本为 2.6.2

【问题讨论】:

  • 请说明你的意图!
  • 我添加了内联。
  • 语法错误通常会停止解析器,因为它不再具有定义的状态。所以我想你将无法跳过它。但我想知道你需要模板做什么。 Python 是一种非常动态的语言,在 Python 的许多年里,到目前为止我不需要代码模板。
  • 我不需要 python 代码本身的模板。我需要导入的 c++ 库的模板,我有同一个 c++ 库的 2 个版本,具有几乎相同的 python 包装器。

标签: python python-2.6 pep8 flake8


【解决方案1】:

您应该检查模板生成的版本,而不是模板本身。 Flake8 无法跳过 SyntaxErrors,因为我们尝试构建需要有效 Python 文件的抽象语法树。

【讨论】:

  • 你们做得很好,但这不是自己的局限吗?请注意,我不是在坚持。顺便说一句,您已经正确解析了文件的其余部分。
  • 一些检查使用 AST,它要求语法是有效的 Python。其他检查使用不那么严格的解析引擎以不同方式解析文件。这意味着您将无法从某些检查中受益,但我们会优雅地降级服务。
  • 由于我的使用是孤独的,我认为在它上面投入你的时间是没有意义的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-24
  • 1970-01-01
  • 2019-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多