跳至主要内容

flake8扩展,用于检查类中函数的顺序

项目描述

flake8-function-order

flake8的扩展,用于报告类属性顺序错误和类级别逻辑,由@best-doctor的flake8-class-attributes-order包改编。

验证器可以提取类属性类型:文档字符串、属性、嵌套类、GLOBAL_VAR等。如果检测到Django模型字段,验证器可以检测该字段是否链接到另一个表(外键、通用键等)。

解决每个属性类型后,验证器会检查属性顺序。

默认配置检查以下属性顺序

  • __new__
  • __init__
  • __post_init__
  • 其他魔术方法
  • @property
  • @staticmethod
  • @classmethod
  • 其他方法
  • 私有方法

如果顺序被打乱,验证器会报告。

除了方法之外,验证器还会检查其他属性方法:文档字符串、嵌套类、常量、属性等。

此外,验证器还会检查类是否有类级别逻辑,并在有逻辑时报告。以下是一个示例

class PhoneForm(forms.Form):
    phone = forms.CharField(17, label='Телефон'.upper())

    # this should happen in __init__!
    phone.widget.attrs.update({'class': 'form-control phone'})

安装

pip install flake8-function-order

可配置选项

选项 描述 Fallbacks to*
meta_class class Meta: (例如,在Django项目中) nested_class
nested_class 其他嵌套类 None*
constant SOME_CONSTANTS field
outer_field some = 模型.ForeignKey 等。 field
field 其他字段
__new__ __new__ 魔法方法
__init__ __init__ 魔法方法
__post_init__ __post_init__ 魔法方法
__str__ __str__ 魔法方法
魔法方法 其他魔法方法 方法
保存 def 保存(...) 方法
删除 def 删除(...) 方法
属性方法 @property/@cached_property 等。 方法
私有属性方法 @property/@cached_property 加 _ 属性方法
静态方法 @staticmethod 方法
私有静态方法 @staticmethod 以 _ 开头 静态方法
类方法 @classmethod 方法
私有类方法 @classmethod 以 _ 开头 类方法
私有方法 其他以 _ 开头的方法 方法
方法 其他方法

* 如果未提供,将使用其超类顺序

** 如果未定义,则此类及其所有子类型(除非已定义)将在验证期间被忽略。建议至少设置 nested_classfieldmethod

您可以选择配置的详细程度。例如,您可以定义每个支持的魔法方法的顺序(__new____str__ 等),或将 magic_method 设置为允许它们之间的任何顺序,甚至只使用 method

用法

$ flake8 test.py
test.py:5:5: CCE001 User.fetch_info_from_crm should be after User.LOGIN_FIELD
test.py:15:5: CCE002 Class level expression detected model UserNode, line 15

已在 Python 3.7.x 和 flake8 3.7.5 上测试。

错误代码

错误代码 描述
CCE001 类属性顺序错误(XXX 应在 YYY 之后
CCE002 检测到类级别表达式

项目详情


下载文件

为您的平台下载文件。如果您不确定要选择哪个,请了解有关 安装包 的更多信息。

源分布

flake8_function_order-0.0.5.tar.gz (6.8 kB 查看哈希值)

上传时间

构建分布

flake8_function_order-0.0.5-py3-none-any.whl (7.9 kB 查看哈希值)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面