枚举 auto() 值上的 Mypy 错误
Mypy errors on enum auto() value
我有这个 class 用于自动命名枚举。
class AutoNameEnum(Enum):
def _generate_next_value_(name, start, count, last_values):
return name
这是直接取自 Python documentation on enums。
用法是这样
class Priority(AutoNameEnum):
LOW = auto()
HIGH = auto()
priority = Priority.LOW
一切正常,mypy 理解这里的一切。但是,当我尝试将 AutoNameEnum
放入单独的包中时,出现错误。具体来说,这个
from utilities import AutoNameEnum
class Priority(AutoNameEnum):
LOW = auto()
HIGH = auto()
priority = Priority.LOW
结果
Incompatible default for argument "priority" (default has type "auto", argument has type "Priority")
这个 mypy 错误是什么意思,为什么它只在我从不同的包导入 class 时发生?
这实际上与auto
或Enum
无关。我只需要通过将名为 py.typed
的文件添加到包的根目录来表明我的包是类型化的。没有它,mypy 不会扫描包的类型。
我有这个 class 用于自动命名枚举。
class AutoNameEnum(Enum):
def _generate_next_value_(name, start, count, last_values):
return name
这是直接取自 Python documentation on enums。
用法是这样
class Priority(AutoNameEnum):
LOW = auto()
HIGH = auto()
priority = Priority.LOW
一切正常,mypy 理解这里的一切。但是,当我尝试将 AutoNameEnum
放入单独的包中时,出现错误。具体来说,这个
from utilities import AutoNameEnum
class Priority(AutoNameEnum):
LOW = auto()
HIGH = auto()
priority = Priority.LOW
结果
Incompatible default for argument "priority" (default has type "auto", argument has type "Priority")
这个 mypy 错误是什么意思,为什么它只在我从不同的包导入 class 时发生?
这实际上与auto
或Enum
无关。我只需要通过将名为 py.typed
的文件添加到包的根目录来表明我的包是类型化的。没有它,mypy 不会扫描包的类型。