未排序的 __all__ (RUF022)
有时提供修复。
作用
检查未按照 "isort 风格" 排序的 __all__
定义。
isort 风格的排序首先根据大小写对项目进行排序: SCREAMING_SNAKE_CASE 名称(通常用于全局常量)排在最前面,其次是 CamelCase 名称(通常用于类),最后是其他任何名称。 在每个类别中,使用自然排序对元素进行排序。
为什么这不好?
一致性很好。 使用通用的 __all__
约定使您的代码更具可读性和惯用性。
示例
建议改为
修复安全性
如果 __all__
定义中存在任何单独占据一整行的注释,则此规则的修复将被标记为不安全,例如
这是一种用于分隔模块 API 中类别的常见模式,但尝试在按字母顺序排列 __all__
的项目时维护这些类别超出了此规则的范围。
如果单行上有超过两个 __all__
项,并且该行也有尾随注释,则该修复也会被标记为不安全,因为这里无法准确判断在排序 __all__
时应将注释与哪个项目一起移动
除此之外,该规则的修复被标记为始终安全,因为它很少会改变任何 Python 代码的语义。 但是,请注意(尽管很少见) __all__
的值可能被其他地方的代码读取,这些代码依赖于 __all__
中项目的确切迭代顺序,在这种情况下,此规则的修复理论上可能会导致中断。