【问题标题】:PyCharm raising Unresolved reference + expression expected for mypy ignore based on error codePyCharm根据错误代码引发mypy忽略的未解析引用+表达式
【发布时间】:2020-05-18 23:32:25
【问题描述】:

我正在尝试silence mypy errors based on error codes。这是使用这样的东西完成的:

from foolib import foo  # type: ignore[attr-defined]

我相信 PyCharm 将我的 type: ignore[code] cmets 解释为类型注释,并将 ignore 报告为未解决的引用。

此外,PyCharm 需要括号内的表达式。

mypy 我试图抑制的错误:

pylint_ignore.py:8: error: Skipping analyzing 'pylint.utils': found module but no type hints or library stubs  [import]

是的,我知道我可以只说type: ignore,而不包括代码,或者指定忽略配置文件中的这个特定导入。但是,我想指定错误代码,因为我认为这是一个很好的功能。

我怎样才能让 PyC​​harm 不抱怨这个?


研究

This answerHow do I stop pyCharm from complaining about underscore strings?

帮我实现在Preferences --> Editor --> Inspections --> Python --> Unresolved references下,我可以添加一个完全限定的符号名来忽略。

我相信这是官方记录的here

我尝试添加 *.ignore.*(因为我不想建立每个模块的忽略列表),但这不起作用。

如果这是正确的方法,你能帮我找出正确的语法吗?


版本

mypy==0.770
python==3.6.5
PyCharm PE 2020.1

【问题讨论】:

标签: pycharm ide type-hinting mypy


【解决方案1】:

显然,如果您在 #type: 之间放置一个文字制表符,PyCharm 会将其视为常规注释。由于 PyCharm 通常将制表符转换为空格,因此您必须从某个地方将其复制,但是嘿...

【讨论】:

  • 不错的解决方案。现在 PyCharm 发出警告(不引发错误)PEP 8: E262 inline comment should start with '# '。我认为警告总比错误好,很好的想法。不幸的是,我的代码也是包含 flake8 的 CI 管道的一部分,它标记了这个制表符。这确实是一种解决方法,不幸的是,它对我不起作用。
  • 您可以在 PyCharm 以及您的 linter 中使个别 PEP 8 违规警告静音。在 PyCharm 中,只需添加 E262 即可检查“PEP 8 编码风格违规”。如果你使用 flake8,你可以像这样添加“无质量保证”评论:# type: ignore[misc] # noqa: 262,或者像这样运行 flake8:flake8 --ignore=E262
  • 我知道使用noqa cmets 并且我同意这对flake8 有用。 PyCharm 仍然抱怨一个微弱的警告,但我可以看过去,或者添加一个 # noinspection 评论(虽然这有点矫枉过正)。我只是希望 PyCharm 能修复这个错误......从外部来源粘贴 # type: ignore[import] # noqa: E262 很麻烦。再次感谢@squirrel 指出这个解决方法!
猜你喜欢
  • 2012-07-28
  • 2022-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多