跳转到主要内容

物联网和物联网设备的通用数据模型

项目描述

OneDM Python库

这个Python包是早期的工作,旨在简化使用One Data Model的Python。

由于OneDM处于早期阶段,这个库旨在尽可能跟随其进展,因此应被视为不稳定。

SDF

目前它支持有限的SDF文档加载和生成SDF

语义定义格式(SDF)是一种格式,供领域专家用于创建和维护描述事物(即通过网络进行交互的物理对象)的数据和交互模型。SDF规范描述了SDF对象/事物的定义及其相关的交互(事件、动作、属性),以及在这些交互中交换的信息的数据类型。

本库使用Pydantic来解析、验证和导出模型描述。Pydantic模型比当前SDF JSON模式中的验证更严格,其中每个数据类型都有自己的模式。

您还可以验证输入值与您的数据定义。

示例

加载现有的SDF文档

>>> from onedm import sdf

>>> loader = sdf.SDFLoader()
>>> loader.load_file("tests/sdf/test.sdf.json")
>>> doc = loader.to_sdf()

>>> doc.info.title        
'Example document for SDF (Semantic Definition Format)'

>>> doc.properties["IntegerProperty"] 
IntegerProperty(observable=True, readable=True, writable=True, label='Example integer', description=None, ref=None, required=[], type=<DataType.INTEGER: 'integer'>, sdf_type=None, nullable=True, const=2, unit=None, minimum=-2, maximum=2, exclusive_minimum=None, exclusive_maximum=None, multiple_of=2, format=None, choices=None, default=None)

>>> doc.data["Integer"].validate_input(3)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "onedm\sdf\data.py", line 129, in validate_input
    return super().validate_input(input)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "onedm\sdf\data.py", line 64, in validate_input
    return SchemaValidator(self.get_pydantic_schema()).validate_python(input)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
pydantic_core._pydantic_core.ValidationError: 1 validation error for constrained-int
  Input should be a multiple of 2 [type=multiple_of, input_value=3, input_type=int]
    For further information visit https://errors.pydantic.dev/2.8/v/multiple_of

创建新文档

>>> from onedm import sdf

>>> doc = sdf.SDF()

>>> doc.info.title = "Generic switch document"
>>> doc.things["switch"] = sdf.Thing(label="Generic switch")
>>> doc.things["switch"].actions["on"] = sdf.Action(label="Turn on")
>>> print(doc.to_json())
{
  "info": {
    "title": "Generic switch document"
  },
  "sdfThing": {
    "switch": {
      "label": "Generic switch",
      "sdfAction": {
        "on": {
          "label": "Turn on"
        }
      }
    }
  }
}

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

onedm-0.1.1.tar.gz (14.8 kB 查看哈希值)

上传时间

构建分发

onedm-0.1.1-py3-none-any.whl (10.6 kB 查看哈希值)

上传时间 Python 3

由...