pyparamvalidate 重构背景和需求分析

目录

  • 一、前置说明
    • 1、总体目录
    • 2、相关回顾
    • 3、本节目标
  • 二、重构背景
  • 三、需求分析
  • 三、后置说明
    • 1、要点小结
    • 2、下节准备

一、前置说明

1、总体目录

  • 《 pyparamvalidate 参数校验器,从编码到发布全过程》

2、相关回顾

  • param_validator 常用校验器的实现

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 中抽离出来

点击返回主目录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/600173.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端算法之堆 -- 计数排序

堆用于解决什么问题 堆排序(Heap Sort):优先队列(Priority Queue):图算法中的最短路径和最小生成树问题:中位数查找:合并K个有序数组: 例子:库存管理 III On时…

分享一个java中读取excel的方法

一、前端传递后端一个excel文件 代码&#xff1a; String file param.get("file").split(",")[1];byte[] content Base64.decodeBase64(file);InputStream inputStream new ByteArrayInputStream(content);Map<String, List<Map<String, Stri…

CAD二开—WblockCloneObjects函数用法

public void WblockCloneObjects(ObjectIdCollection identifiers, ObjectId id, IdMapping mapping, Autodesk.AutoCAD.DatabaseServices.DuplicateRecordCloning cloning, [MarshalAs(UnmanagedType.U1)] bool deferTranslation );其中各个参数的意义如下&#xff1a; ident…

git本地创建分支并推送到远程关联起来

git本地创建分支并推送到远程关联起来 git本地基于当前分支创建个新的分支&#xff0c;然后推送到远程&#xff0c;并把本地新创建的分支和远程分支关联 在当前分支下&#xff0c;新建分支 git checkout -b test推送到远程仓库 git push origin test将本地分支和远程分支关联…

SAP设置修改删除自动JOB

一、设置JOB 方法一 一个不需要单独记事务码的方式 如果FS要求开发做了程序的话&#xff0c;直接执行事务码&#xff0c;点击左上角 程序-后台执行 输出设备选择LP01 打勾&#xff0c;有可能还有一个对话框&#xff0c;也打勾 打勾后设置周期值 系统预设的会有小时、天、周…

论文阅读_InP-Based_Generic_Foundry_Platform_for_Photonic_Integrated_Circuits

InP-Based_Generic_Foundry_Platform_for_Photonic_Integrated_Circuits 时间&#xff1a;2018年 作者&#xff1a;Luc M. Augustin, Member, IEEE, Rui Santos, Erik den Haan, Steven Kleijn, Peter J. A. Thijs, Sylwester Latkowski, Senior Member, IEEE, Dan Zhao, Wei…

STM32F407-14.3.10-表73具有有断路功能的互补通道OCx和OCxN的输出控制位-01x11

如上表所示&#xff0c;MOE0&#xff0c;OSSI1&#xff0c;CCxE1&#xff0c;CCxNE1 时&#xff0c;如下框图OISx与CCxP异或&#xff0c;OISxN与CC1NP异或&#xff0c;然后相与后决定 OCx与OCxN的输出是否相对于OISx与OISxN取反。&#xff08;异或门参考逻辑门符号-CSDN博客&…

【华为OD真题 Python】查找众数及中位数

文章目录 题目描述输入描述输出描述示例1输入输出示例2输入输出示例3输入输出实现代码题目描述 1.众数是指一组数据中出现次数量多的那个数,众数可以是多个 2.中位数是指把一组数据从小到大排列,最中间的那个数,如果这组数据的个数是奇数,那最中间那个就是中位数,如果这组…

‘str‘ object has no attribute ‘capabilities‘

selenium 版本&#xff1a;4.16.0 报错代码&#xff1a; from selenium import webdriverdriver_pathrC:\\xxx\\drivers\\chromedriver\\win64\\120.0.6099.109\\chromedriver-win32/chromedriver.exe driver webdriver.Chrome(driver_path) 解决方法&#xff1a; 等待30秒时…

大数据情况下如何保证企业数据交换安全

数据交换是指在网络或其他方式下&#xff0c;不同主体按照规定的规则和标准实现数据的共享、传输和处理的过程。大数据时代的到来使得数据交换的重要性更为凸显&#xff0c;大数据带来了海量、多样、高速、低价值密度等特点&#xff0c;也带来了更多的价值挖掘和应用场景。 保障…

期货日数据维护与使用_日数据维护_sqlite3数据库创建

目录 写在前面&#xff1a; 初始准备 开始编写数据库代码 t_product t_symbol_basemsg t_main_symbol t_online_symbol t_last30_daily 小贴士 写在前面&#xff1a; 本文默认已经创建了项目&#xff0c;如果不知道如何创建一个空项目的&#xff0c;请参看以下两篇博…

亲测表白网制作源码,在线制作表白,无数据库上传就能用

在线制作表白网源码 没有数据库上传就能用 后台/admin 账号密码都是admin

Vue2 - 生命周期

目录 1&#xff0c;介绍1&#xff0c;初次渲染2&#xff0c;数据改变后的重渲染 2&#xff0c;生成周期钩子执行顺序 1&#xff0c;介绍 创建 vue 实例和创建组件的流程基本一样。 1&#xff0c;初次渲染 做一些初始化操作&#xff0c;主要设置一些私有属性到实例中。 运行 b…

Springboot整合Flowable Modeler(flowable6.4.0)

文章目录 Springboot整合Flowable Modeler1 项目准备1.1 新建一个Springboot项目1.2 项目的pom文件1.3 Flowable Modeler UI下载2 后端代码2.1 复制代码2.2 代码修改2.3 新增代码3 启动项目Springboot整合Flowable Modeler 1 项目准备 1.1 新建一个Springboot项目 ​ Spring…

vue实现项目部署成功之后提示用户刷新页面

vue实现项目部署成功之后提示用户刷新页面 1. 项目根目录新建 version.js require("fs").writeFileSync("./public/version.txt", new Date().getTime().toString()) 2. 改写package.json中打包命令 "scripts": {"dev": "vue-cl…

微信小程序 分享按钮 监听用户分享成功

代码 <view><button class"btnLq ed flex justify-center" open-type"share" click"getAward">点击分享</button> </view>export default {data(){return{shareMd:false,//分享埋点}},onShow(){//if(this.shareMd){uni.…

【Java集合篇】接上篇博文--为什么在JDK8中HashMap要转成红黑树

为什么在JDK8中HashMap要转成红黑树 ✔️为什么不继续使用链表✔️为什么是红黑树✔️红黑树的性能优势 ✔️ 拓展知识仓✔️为什么是链表长度达到8的时候转✔️为什么不在冲突的时候立刻转✔️关于为什么长度为8的时候转(源码注释解读)✔️为什么长度为6的时候转回来?✔️双向…

leetcode:136只出现一次的数字(详解),又名找到单身狗

期末考试临近&#xff0c;每天复习一点知识&#xff0c;还是可以复习完的&#xff0c;加油 前言 我后来才知道这是力扣上的一道题&#xff0c;我当时写他的时候名字叫找到单身狗&#xff0c;即使那个只出现了一次的数字 题目 136. 只出现一次的数字 给你一个 非空 整数数组…

每日一题——LeetCode1021删除最外层括号1047消除字符串相邻重复字符串

这两道题基本上来说是差不多的&#xff0c;一个匹配并删除字符串中的( ) 一个匹配并删除字符串中相邻重复的元素&#xff0c;其实都是用到栈这种数据结构&#xff0c;通过匹配不同的条件使用入栈出栈操作保存或删除目标元素来实现。 1021.删除最外层括号 var removeOuterParent…

ChatGPT实战手册

ChatGPT是 OpenAI 的一个强大的自然语言处理模型&#xff0c;它可以生成人类般的文本。在这篇文章中&#xff0c;我们将通过一个实战示例来展示如何安装、配置和使用 ChatGPT。 安装 首先&#xff0c;你需要安装 OpenAI 的 Python 客户端库。你可以使用 pip 来安装&#xff1…