Data models used in Airalogy
在Airalogy中我们使用词语“Model”来代指数据模型。其通常是一个继承自pydantic.BaseModel的Python类,用于定义数据结构。
暴露外部使用的Models的入口均类似如下:
py
from airalogy.models import CheckValueModels
CheckValue
用于约束Airalogy Checkpoint的数据结构。
入口:
py
from airalogy.models import CheckValue定义:
py
from pydantic import BaseModel
class CheckValue(BaseModel):
checked: bool
annotation: strStepValue
用于约束Airalogy Step的数据结构。
入口:
py
from airalogy.models import StepValue定义:
py
from pydantic import BaseModel
class StepValue(BaseModel):
checked: bool | None
annotation: str和CheckValue的区别在于,StepValue的checked字段可以为None,用于表示该Step未被检查。
Models和Built-in Types的区别
在Airalogy中,我们提供了一些内置类型,如UserName、CurrentTime、Md等。这些内置类型是一些特殊的字段类型,用于在Airalogy平台上自动赋值、自动生成界面等。由于这些内置类型实际上和前端用户Recording Interface的生成和交互密切相关,因此我们将其独立出来,而统一放在built_in_types模块中。其入口均类似如下:
py
from airalogy.built_in_types import UserName我们可以在Airalogy Model中使用这些内置类型,例如:
model.py:
py
from pydantic import BaseModel
from airalogy.built_in_types import UserName
class VarModel(BaseModel):
user_name: UserName而普通的Model则是用于约束Airalogy内部的数据结构,以便于Airalogy Python代码的数据校验、数据处理等,而通常不会涉及到Recording Interface的生成和交互。例如,在我们定义一个有关于Airalogy Checkpoint的Assigner时,我们会调度到Airalogy Checkpoint相关的Model:
assigner.py:
py
from airalogy.assigner import AssignerResult, assigner
from airalogy.models import CheckValue
@assigner(
assigned_fields=[
"a_gt_b",
],
dependent_fields=[
"a", # float
"b", # float
],
mode="auto",
)
def check_a_gt_b(dependent_fields: dict) -> AssignerResult:
a = dependent_fields["a"]
b = dependent_fields["b"]
a_gt_b = a > b
return AssignerResult(
assigned_fields={"a_gt_b": CheckValue(checked=a_gt_b, annotation="a > b")},
)