跳到内容

未别名的 collections-abc-set-import (PYI025)

源自 flake8-pyi 代码检查器。

有时提供修复。

作用

检查未将 Set 别名为 AbstractSetfrom collections.abc import Set 导入。

为什么这不好?

collections.abc 中的 Set 类型是类似集合类型的抽象基类。它很容易与内置的 set 混淆,并且与后者并不等价。

为了避免混淆,应在导入时将 Set 别名为 AbstractSet。 这样可以清楚地表明导入的类型是一个抽象基类,而不是内置的 set

示例

from collections.abc import Set

建议改为

from collections.abc import Set as AbstractSet

修复安全性

对于在 .py 模块顶层定义的 Set 导入,此规则的修复被标记为不安全。 顶层符号由模块隐式导出,因此重命名顶层符号可能会破坏导入它的下游模块。

对于 .pyi 文件来说,情况并非如此,其中导入的符号只有在包含在 __all__ 中、使用“冗余”的 import foo as foo 别名或通过 * 导入时才会重新导出。 因此,对于 .pyi 文件,此修复在更多情况下被标记为安全。