Winnow是一个基于JSON-schema的库,用于发布和操作产品系列。
项目描述
# winnow
Winnow是一个用于发布可配置产品系列的json交换格式。它有几个不同的部分
+ 一组描述产品和相关信息的文档的json模式。
+ 定义产品中配置选项集的模式。
+ 定义操作文档选项的基本逻辑运算集。
+ 一个实现这些操作的Python库
要编写和发布winnow文档,您可以使用前两部分,因为它们定义了winnow文档的结构。要应用逻辑运算并操作winnow文档,您需要了解winnow的操作及其实现这些操作的库。
## 资源和文档
一些winnow文档描述了命名资源,而另一些则没有。
资源文档具有某些功能:它们可以在文档本身定义的永久URL上被发现;它们使用语义版本号进行版本控制;这些版本本身也是可发现的,并且资源可以继承同一类型的另一个资源。
在winnow中当前定义了八种资源类型。点击链接查看它们的完整描述。
+ [*range*](docs/range.md) - 具有共同作者的相关设计的集合
+ [*design*](docs/design.md) - 一个设计
+ [*product*](docs/product.md) - 由一组公共选项定义的设计的版本系列
+ [*fileset*](docs/fileset.md) - 用于制作所有或产品系列子集的一组文件
+ *finish* - 由一组材料和工艺定义的产品表面处理
+ *材料* - 一种材料
+ *工艺* - 应用在材料上的工艺
+ *上下文* - 一组用于过滤或扩展产品选项的选项
Winnow还定义了两种文档类型,这些类型不是资源,而是在处理过程中创建的中间文件
+ *选择*
+ *量化配置*
## 验证
在winnow.schemata中,有可以用于验证Winnow文档的JSON模式。这可以使用来自[json-schema.org](https://json-schema.fullstack.org.cn/implementations.html)的工具来完成,或者使用Winnow的Python库,如下所示
```python
with open(filepath, "r") as f
doc = json.loads(f.read())
winnow.validate(doc)
```
## 选项
一些Winnow文档具有顶层`options`属性。此对象通过定义产品的可能配置集来描述相关的产品系列,例如可用的颜色或尺寸。
```json
{
"options":{
"colour": ["red", "blue", "green"],
"size": ["big", "small"],
"wheels": [4, 6]
}
...
}
```
这描述了一个玩具产品系列,该玩具有三个颜色、两种尺寸,并且可以有四个或六个轮子。Winnow提供用于定义这些选项的JSON语言以及一组用于操作它们的操作。
您可以在这里了解更多关于Winnow的选项[options](docs/options.md)
## 操作
Winnow定义了一组简单但强大的操作,以帮助操作Winnow文档。
+ *add_doc*
+ *allows*
+ *merge*
+ *scope*
+ *default_choices*
+ *quantify*
+ *filter_allows*
+ *filter_allowed_by*
+ *is_allowed_by*
+ *expand*
+ *asset_props*
+ *validate*
## 库
Winnow是一个用于发布可配置产品系列的json交换格式。它有几个不同的部分
+ 一组描述产品和相关信息的文档的json模式。
+ 定义产品中配置选项集的模式。
+ 定义操作文档选项的基本逻辑运算集。
+ 一个实现这些操作的Python库
要编写和发布winnow文档,您可以使用前两部分,因为它们定义了winnow文档的结构。要应用逻辑运算并操作winnow文档,您需要了解winnow的操作及其实现这些操作的库。
## 资源和文档
一些winnow文档描述了命名资源,而另一些则没有。
资源文档具有某些功能:它们可以在文档本身定义的永久URL上被发现;它们使用语义版本号进行版本控制;这些版本本身也是可发现的,并且资源可以继承同一类型的另一个资源。
在winnow中当前定义了八种资源类型。点击链接查看它们的完整描述。
+ [*range*](docs/range.md) - 具有共同作者的相关设计的集合
+ [*design*](docs/design.md) - 一个设计
+ [*product*](docs/product.md) - 由一组公共选项定义的设计的版本系列
+ [*fileset*](docs/fileset.md) - 用于制作所有或产品系列子集的一组文件
+ *finish* - 由一组材料和工艺定义的产品表面处理
+ *材料* - 一种材料
+ *工艺* - 应用在材料上的工艺
+ *上下文* - 一组用于过滤或扩展产品选项的选项
Winnow还定义了两种文档类型,这些类型不是资源,而是在处理过程中创建的中间文件
+ *选择*
+ *量化配置*
## 验证
在winnow.schemata中,有可以用于验证Winnow文档的JSON模式。这可以使用来自[json-schema.org](https://json-schema.fullstack.org.cn/implementations.html)的工具来完成,或者使用Winnow的Python库,如下所示
```python
with open(filepath, "r") as f
doc = json.loads(f.read())
winnow.validate(doc)
```
## 选项
一些Winnow文档具有顶层`options`属性。此对象通过定义产品的可能配置集来描述相关的产品系列,例如可用的颜色或尺寸。
```json
{
"options":{
"colour": ["red", "blue", "green"],
"size": ["big", "small"],
"wheels": [4, 6]
}
...
}
```
这描述了一个玩具产品系列,该玩具有三个颜色、两种尺寸,并且可以有四个或六个轮子。Winnow提供用于定义这些选项的JSON语言以及一组用于操作它们的操作。
您可以在这里了解更多关于Winnow的选项[options](docs/options.md)
## 操作
Winnow定义了一组简单但强大的操作,以帮助操作Winnow文档。
+ *add_doc*
+ *allows*
+ *merge*
+ *scope*
+ *default_choices*
+ *quantify*
+ *filter_allows*
+ *filter_allowed_by*
+ *is_allowed_by*
+ *expand*
+ *asset_props*
+ *validate*
## 库