一、前置说明

1、总体目录

2、相关回顾

3、本节目标

  • 阐述 pyparamvalidate 重构背景和需求分析。

二、重构背景

pyparamvalidate 已经实现了参数校验的功能,但是不能对获取到的字典内部的数据进行校验,如下:


from pyparamvalidate import ParameterValidator


@ParameterValidator("name").is_string().is_not_empty()
@ParameterValidator("age").is_int().is_positive()
@ParameterValidator("gender").is_allowed_value(["male", "female"])
@ParameterValidator("profile").is_similar_dict(reference_dict={'address': ''})
def example_function(name, age, gender='male', **kwargs):
    profile = kwargs.get("profile")

    address = profile.get("address")
    if not address:
        raise ValueError("address is required")

    return name, age, gender, profile
    

目前无法校验:示例中的 address 不能为空。

三、需求分析

校验行为不仅仅出现在对参数的校验上,因此要将 validator 校验器从 ParameterValidator 中抽离出来,适用更多场景。

  • 不能改变 ParameterValidator 的使用方式。
  • validator 校验器,方便调用、提供清晰的错误信息。
  • validator 校验器,支持 return 校验之后的值。

三、后置说明

1、要点小结

  • 校验是一个通用行为,不仅出现在参数校验上。
  • 可以将 validator 校验器模块化。

2、下节准备

  • validator 校验器从 ParameterValidator 中抽离出来

点击返回主目录

01-06 11:35