【发布时间】:2022-06-15 23:00:30
【问题描述】:
我有以下代码,它定义了一个枚举并使用enum.auto() 为条目提供从 1 开始的生成值:
from enum import Enum, auto
class Colors(Enum):
RED = auto()
BLUE = auto()
YELLOW = auto()
def main():
print(Colors.RED.value)
print(Colors.BLUE.value)
print(Colors.YELLOW.value)
if __name__ == '__main__':
main()
输出:
1
2
3
代码运行良好,过去没有任何警告,但今天更新 PyCharm 后,我现在收到auto() 的以下警告:
Parameter(s) unfilled
Possible callees:
EnumMeta.__call__(cls: Type[_T], value, names: None = ...)
EnumMeta.__call__(cls: EnumMeta, value: str, names: Union[str, Iterable[str], Iterable[Iterable[str]], Mapping[str, Any]], *, module: Optional[str] = ..., qualname: Optional[str] = ..., type: Optional[type] = ..., start: int = ..., boundary: Optional[FlagBoundary] = ...)
EnumMeta.__call__(cls: Type[_T], value, names: None = ...)
EnumMeta.__call__(cls: EnumMeta, value: str, names: Union[str, Iterable[str], Iterable[Iterable[str]], Mapping[str, Any]], *, module: Optional[str] = ..., qualname: Optional[str] = ..., type: Optional[type] = ..., start: int = ...)
我检查了 Python documentation 但找不到任何相关内容,因为所有示例仍然使用 auto() 没有任何参数。
我认为新警告是因为 PyCharm 正在使用更新的 Python linting 规则。
如何解决此警告?
更新 1:
似乎 PyCharm 将enum.auto() 检测为enum.auto(IntFlag),因此警告参数未填充:
我还会将此问题报告给 PyCharm 开发人员。也许这是一个错误。
更新 2:
没关系,大家。我刚刚发现这是一个错误并在一个月前被报告here.
【问题讨论】:
-
不确定,但您可以检查您的配置的python版本(右上)“编辑配置”是否与解释器(右下)python interperter中的版本相同。
-
您使用的是哪个 pycharm 和 python 解释器版本?查看 pycharm 的最新更新更改日志,他们没有更改与 python linting 或枚举相关的任何内容
-
我正在使用 Python
3.9.6,我的 PyCharm 是Runtime version: 11.0.14.1+1-b2043.25 amd64,目前是最新的。 -
将 PyCharm 2021.2.2 与 Python 3.9.0 一起使用,示例代码没有错误或警告。
-
当我发表评论时,我没有时间进一步检查这一点,但是每当出现
MetaEnum (...) Type[_T]linter 警告时,我可以根据经验告诉你这是一个 PyCharm 错误。这些年来,我已经看到这种普遍的警告来来去去。在 JetBrains bugtracker 上找到它的出色侦探工作!
标签: python enums pycharm warnings