未别名的 collections-abc-set-import (PYI025)
源自 flake8-pyi 代码检查器。
有时提供修复。
作用
检查未将 Set 别名为 AbstractSet 的 from collections.abc import Set 导入。
为什么这不好?
collections.abc 中的 Set 类型是类似集合类型的抽象基类。它很容易与内置的 set 混淆,并且与后者并不等价。
为了避免混淆,应在导入时将 Set 别名为 AbstractSet。 这样可以清楚地表明导入的类型是一个抽象基类,而不是内置的 set。
示例
建议改为
修复安全性
对于在 .py 模块顶层定义的 Set 导入,此规则的修复被标记为不安全。 顶层符号由模块隐式导出,因此重命名顶层符号可能会破坏导入它的下游模块。
对于 .pyi 文件来说,情况并非如此,其中导入的符号只有在包含在 __all__ 中、使用“冗余”的 import foo as foo 别名或通过 * 导入时才会重新导出。 因此,对于 .pyi 文件,此修复在更多情况下被标记为安全。