用于验证、记录和编辑json和yaml数据的工具
yamltypes的Python项目详细描述
yamlconfig
用于加载和验证yaml配置文件的工具。
软件包附带两个入口点脚本:
yaml validate:此工具可以根据其规范验证yaml文件。
The spec file can be either automatically found given the filename or given as parameter with ^{tt1}$
yaml2rst:这个工具自动创建在目录中定义的类型的rst文档。
yamlconfig模块
复杂ci系统开发人员的一个常见问题是 它的配置逻辑来自它的配置数据。
- 逻辑是构建器的配置,它构建什么, 什么是构建步骤等
- 数据是您希望在日常中轻松更改的参数 维护工作。奴隶是什么,他们的能力是什么? 需要跟踪哪些分支?在什么条件下?等
yamlconfig通过提供创建 并描述一组用作master.cfg输入的yaml文件
最初是为buildbot配置创建的,它定义的规范格式可以 用于描述任何类型的JSON兼容数据。
每个解析的yaml文件都可以被赋予一个.meta.yaml文件,该文件充当 模式文件,描述文件中允许的内容,以及如何 在版本ui中呈现它。
.meta.yaml文件格式
元yaml文件是由嵌套的dict组成的yaml文件,描述了 类型检查器正在等待的数据。
根节点
meta yaml文件必须描述root类型,这将滚雪球 所有嵌套类型检查
root:type:dictkids:param1:type:intparam2:type:string
将匹配:
param1:1param2:stringvalue
导入节点
元yaml文件可以使用其他文件中描述的类型。为此,它将进口 .types.yaml文件的列表。
.types.yaml是定义命名类型映射的yaml文件。示例:
foo:type:stringvalues:[bar]
可用于myconfig.meta.yaml:
imports:-foo.type.yamlroot:type:dictkids:foo:type:listoffoos
基类型
基本类型是:
- int
- 整数
- 字符串
- 字符串
- 布尔型
- 真/假布尔值
- 浮动
- 浮点数
化合物类型
复合类型的值由多个子类型值或键/值组成:
- 听写
- 具有已定义的子键列表的关联数组
- 地图
- 具有任意列表子项的关联数组
- 列表
- 任意值的列表
- 设置
- 确保成员唯一性的列表(不能有多个相同的时间值)
指定值的类型
对于map,list,set,可以指定所需的类型 作为价值观。语法为:
type:<compound_type>of<type>s
例如,以下类型有效
type:mapofstringstype:listofintstype:listofsetsofints
用户定义的类型
可以指定定义类型映射的meta.yaml文件,可以在 主meta.yaml文件。例如:
location:type:stringvalues:[l1,l2,l3,l4,l5,l6]
这定义了一个location类型,它是一个有6个可能值的字符串。
类型修改器
每种类型都可以与许多修饰符相关联,这些修饰符将扩展 您为其描述的规格:
- 值:
- 属性可以采用的一组可能值
- 姓名:
- 在ui中显示的属性的名称
- 默认值:
- 如果未显式定义属性,则该属性所采用的值
- 禁止:
- 一个python表达式,检查是否不应在 特定配置
- 必需:
- 一个python表达式,检查是否必须在 特定配置
- maybenull:
- 一个python表达式,检查是否必须在 特定配置
更复杂的例子
meta.yaml:
root:type:dictkids:slaves:type:listofdictsname:Build Slaveskids:caps:type:dictname:Capabilitieskids:builder:name:Used by buildertype:setofstringsvalues:[autolint,build]required:truelocation:type:locationrequired:truespeed:type:stringdefault:fastvalues:[fast,slow]slaves:type:setofstrings
匹配yaml文件,如:
slaves:-caps:builder:[build]location:l4slaves:[buildbot1build]-caps:builder:[autolint,build]location:l1speed:fastslaves:[build3build,build4build,build5build]